<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On 30 November 2016 at 09:12, Gianluca Stivan via cfe-dev <span dir="ltr"><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi everyone,<div><br></div><div>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].</div></div></blockquote><div><br></div><div>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.</div><div><br></div><div>Cheers,</div><div>Alex</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><br></div><div>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)</div><div><br></div><div>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? </div><div>I saw there's a `-femit-all-decls`, but it doesn't really emit all declarations.</div><div><br></div><div><div>Apologies if this is a dumb idea, kinda new to the whole Clang thing :)!</div></div><div><br></div><div>Cheers,</div><div><br></div><div>-yawnt</div><div><br></div><div>[1] <a href="http://stackoverflow.com/questions/24728901/clang-compiling-a-c-header-to-llvm-ir-bitcode" target="_blank">http://stackoverflow.com/<wbr>questions/24728901/clang-<wbr>compiling-a-c-header-to-llvm-<wbr>ir-bitcode</a></div><div>[2] <a href="http://stackoverflow.com/questions/14032496/how-can-i-code-generate-unused-declarations-with-clang?noredirect=1&lq=1" target="_blank">http://stackoverflow.com/<wbr>questions/14032496/how-can-i-<wbr>code-generate-unused-<wbr>declarations-with-clang?<wbr>noredirect=1&lq=1</a></div><div>[3] <a href="https://github.com/tjfontaine/node-ffi-generate" target="_blank">https://github.com/<wbr>tjfontaine/node-ffi-generate</a></div></div>
<br>______________________________<wbr>_________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div><br></div></div>