[cfe-dev] Flag for generating LLVM IR from forward declarations

mats petersson via cfe-dev cfe-dev at lists.llvm.org
Wed Nov 30 04:08:35 PST 2016


On 30 November 2016 at 11:32, Gianluca Stivan via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

> True,
>
> I was toying with the idea of having a separate step in the pipeline that
> plugs in after AST is turned into a Module[*] which generates frontend code.
> But to do so, I would have to have forward declarations be actually
> emitted, hence my proposal. Otherwise I'd just be iterating over an empty
> set of instructions :)
> My theory is that LLVM IR at that point is going to be way more
> straightforward (just basic types, structs and `declare @..`s) to deal with.
> Could this approach make sense?
>
> Cheers,
>
> -yawnt
>
> [*] a Clang plugin? Can they be run over Modules, that is LLVM IR, instead
> of AST?
>

If you are dealing with LLVM-IR, then it's probably a LLVM-pass, rather
than a Clang plugin. Or are you  thiinking of something that understands
both source (in for exampel AST format) and LLVM-IR?


--
Mats

>
>
> 2016-11-30 10:59 GMT+00:00 Alex L <arphaman at gmail.com>:
>
>>
>>
>> On 30 November 2016 at 09:12, Gianluca Stivan via cfe-dev <
>> cfe-dev at lists.llvm.org> wrote:
>>
>>> Hi everyone,
>>>
>>> I was playing around with the LLVM toolchain and it occurred to me that,
>>> should I decide to target LLVM IR, it would be neat to have Clang generate
>>> declarations from C header files for easier FFI. Someone seems to have had
>>> my same idea [1] [2]. This is kind of the opposite of what other projects
>>> have gone for, where they use libclang to parse header files to achieve the
>>> same result [3].
>>>
>>
>> Sounds like an interesting idea. I how one question though, if you're
>> generating only the C function declarations in LLVM IR, how will your
>> frontend that targets LLVM IR call these declarations? Maybe I'm
>> misunderstanding something, but I don't see how can you generate the calls
>> to these functions without getting clang involved.
>>
>> Cheers,
>> Alex
>>
>>
>>>
>>> Now, forward declaration generation is doable by patching
>>> CodeGenModule.cpp (I kinda have a PoC working locally, except it generates
>>> *all* the forward declarations, instead of just the ones from the header
>>> files I care about)
>>>
>>> Is this something that you guys would be interested in merging into
>>> Clang through a flag? Or what would the proper way to do this be?
>>> I saw there's a `-femit-all-decls`, but it doesn't really emit all
>>> declarations.
>>>
>>> Apologies if this is a dumb idea, kinda new to the whole Clang thing :)!
>>>
>>> Cheers,
>>>
>>> -yawnt
>>>
>>> [1] http://stackoverflow.com/questions/24728901/clang-compiling-
>>> a-c-header-to-llvm-ir-bitcode
>>> [2] http://stackoverflow.com/questions/14032496/how-can-i-co
>>> de-generate-unused-declarations-with-clang?noredirect=1&lq=1
>>> [3] https://github.com/tjfontaine/node-ffi-generate
>>>
>>> _______________________________________________
>>> cfe-dev mailing list
>>> cfe-dev at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>>
>>>
>>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://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/20161130/8473cfea/attachment.html>


More information about the cfe-dev mailing list