[cfe-dev] Compile .ll file with coroutines intrinsics

Shoaib Meenai via cfe-dev cfe-dev at lists.llvm.org
Thu Jul 8 16:32:01 PDT 2021

Also CCing Xun, who’s done a bunch of coroutines work.

From: cfe-dev <cfe-dev-bounces at lists.llvm.org> on behalf of cfe-dev <cfe-dev at lists.llvm.org>
Reply-To: Mehdi AMINI <joker.eph at gmail.com>
Date: Thursday, July 8, 2021 at 4:16 PM
To: David Blaikie <dblaikie at gmail.com>, "lxfind at gmail.com" <lxfind at gmail.com>, John McCall <rjmccall at apple.com>, Arthur Eubanks <aeubanks at google.com>, "yedeng.yd at linux.alibaba.com" <yedeng.yd at linux.alibaba.com>
Cc: cfe-dev <cfe-dev at lists.llvm.org>
Subject: Re: [cfe-dev] Compile .ll file with coroutines intrinsics

On Thu, Jul 8, 2021 at 3:55 PM David Blaikie <dblaikie at gmail.com<mailto:dblaikie at gmail.com>> wrote:
Guessing you might need to cc/to this to some folks who worked on/implemented the features - lots of folks don't read the -dev lists terribly much these days, unfortunately.

Good suggestion, adding a few folks here.

My guess would be: It's difficult because we've essentially fragmented the IR and now we have before-coroutines-are-lowered IR and after-coroutines-are-lowered IR and no way to tell the difference & I guess the support for IR inputs in clang is currently (probably by accident) only supporting after-coroutines-are-lowered.

Right: but can you feed the IR post-lowering and reprocess it through the coroutine lowering passes? I would expect this to be idempotent somehow.

Even if it isn't the case, I assume that adding support for the -fcoroutines-ts option when processing IR files should be fine: the IR post-lowering can just not use the flag.



On Thu, Jul 8, 2021 at 3:23 PM Mehdi AMINI via cfe-dev <cfe-dev at lists.llvm.org<mailto:cfe-dev at lists.llvm.org>> wrote:

On Fri, Jul 2, 2021 at 10:25 PM Mehdi AMINI <joker.eph at gmail.com<mailto:joker.eph at gmail.com>> wrote:
Hi all,

I'm trying to figure out how to use clang to compile some piece of IR in a .ll generated with coroutines.

I tried to use the `-fcoroutines-ts`, but it isn't even forwarded by the driver to CC1. And even if I use -Xclang to forward it manually it is then ignored because LLVM IR input is shortcut by CompilerInvocation::ParseLangArgs.

What's the best way here? I could add support in CompilerInvocation::ParseLangArgs:

@@ -3547,6 +3546,9 @@ bool CompilerInvocation::ParseLangArgs(L
     parseSanitizerKinds("-fsanitize=", Args.getAllArgValues(OPT_fsanitize_EQ),
                         Diags, Opts.Sanitize);

+    // Allows to use -fcoroutine-ts with IR input.
+    Opts.Coroutines = Args.hasArg(OPT_fcoroutines_ts);
     return Diags.getNumErrors() == NumErrorsBefore;

But I still need to figure out how to have the driver propagate the option to cc1, any pointer?
Is it expected to silently discard it here by the way? It is quite surprising to me).

Ping on these questions? Anyone want to chime in?


cfe-dev mailing list
cfe-dev at lists.llvm.org<mailto:cfe-dev at lists.llvm.org>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20210708/4efd2353/attachment-0001.html>

More information about the cfe-dev mailing list