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

Mehdi AMINI via cfe-dev cfe-dev at lists.llvm.org
Thu Jul 8 16:15:06 PDT 2021


On Thu, Jul 8, 2021 at 3:55 PM David Blaikie <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.

Thanks,

-- 
Mehdi


>
> On Thu, Jul 8, 2021 at 3:23 PM Mehdi AMINI via cfe-dev <
> cfe-dev at lists.llvm.org> wrote:
>
>>
>>
>> On Fri, Jul 2, 2021 at 10:25 PM Mehdi AMINI <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?
>>
>> Cheers,
>>
>> --
>> Mehdi
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20210708/37686a0e/attachment.html>


More information about the cfe-dev mailing list