Scott Pakin via llvm-dev
2019-Jul-10 23:54 UTC
[llvm-dev] Looking for an out-of-source "Hello, world" LLVM/Clang pass example
Florian, On 7/10/19 2:17 PM, Florian Hahn wrote:> http://www.cs.cornell.edu/~asampson/blog/llvm.html describes how to > create an out-of-source pass (see 'Let’s Write a Pass’). I think it > is for LLVM 3.8 though.Thanks for pointing that out. I had actually recently stumbled across that page (and the GitHub repository it references, https://github.com/sampsyo/llvm-pass-skeleton) while searching for an answer to my questions but wasn't sure how up-to-date the information is: * Is add_library the currently recommended CMake macro call for building an LLVM pass? http://llvm.org/docs/WritingAnLLVMPass.html and https://llvm.org/docs/CMake.html both point to add_llvm_library, which I couldn't get to work. * Is the legacy pass manager still the right way to make a pass Clang-callable? There's a currently active thread on this list, "Status of the New Pass Manager", that makes me think I have some code-rewriting in my future. -- Scott
Andrzej Warzynski via llvm-dev
2019-Jul-14 14:02 UTC
[llvm-dev] Looking for an out-of-source "Hello, world" LLVM/Clang pass example
Scott, This is still very early stages, but you can be my guinea pig: https://github.com/banach-space/llvm-tutor It's a tutorial that I've been preparing recently and am hoping to present somewhere at some point :-) I believe that it already covers 1), 2) and 3). I haven't had the time to work on 4). It's based on LLVM-8 and includes a working CI set-up, so that you can be confident that it works. If it doesn't, ping me - I'm keen on improving it. -- Andrzej On 11/07/2019 00:54, Scott Pakin via llvm-dev wrote:> Florian, > > On 7/10/19 2:17 PM, Florian Hahn wrote: >> http://www.cs.cornell.edu/~asampson/blog/llvm.html describes how to >> create an out-of-source pass (see 'Let’s Write a Pass’). I think it >> is for LLVM 3.8 though. > > Thanks for pointing that out. I had actually recently stumbled across > that page (and the GitHub repository it references, > https://github.com/sampsyo/llvm-pass-skeleton) while searching for an > answer to my questions but wasn't sure how up-to-date the information > is: > > * Is add_library the currently recommended CMake macro call for > building an LLVM pass? > http://llvm.org/docs/WritingAnLLVMPass.html and > https://llvm.org/docs/CMake.html both point to add_llvm_library, > which I couldn't get to work. > > * Is the legacy pass manager still the right way to make a pass > Clang-callable? There's a currently active thread on this list, > "Status of the New Pass Manager", that makes me think I have some > code-rewriting in my future. > > -- Scott > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
Scott Pakin via llvm-dev
2019-Jul-15 22:01 UTC
[llvm-dev] Looking for an out-of-source "Hello, world" LLVM/Clang pass example
Andrzej, On 7/14/19 8:02 AM, Andrzej Warzynski wrote:> This is still very early stages, but you can be my guinea pig: > > https://github.com/banach-space/llvm-tutor > > It's a tutorial that I've been preparing recently and am hoping to > present somewhere at some point :-) I believe that it already covers 1), > 2) and 3). I haven't had the time to work on 4). It's based on LLVM-8 > and includes a working CI set-up, so that you can be confident that it > works. If it doesn't, ping me - I'm keen on improving it.Cool, thanks. I just started reading over that now. I have a couple of questions already, if you don't mind: 1) I see you're building the pass with add_library(lt-cc-static STATIC StaticCallCounter.cpp DynamicCallCounter.cpp) add_library(lt-cc-shared MODULE StaticCallCounter.cpp DynamicCallCounter.cpp) What's the reason for building a STATIC version? Does any LLVM tool make use of that? Is add_library the preferred pass-building CMake macro these days, as opposed to add_llvm_library or add_llvm_loadable_module? 2) How is the user supposed to install the generated files? Neither "make install" nor "cmake --target=install" seem to work. -- Scott