[llvm-dev] Looking for an out-of-source "Hello, world" LLVM/Clang pass example
Scott Pakin via llvm-dev
llvm-dev at lists.llvm.org
Wed Jul 10 12:45:34 PDT 2019
I'm looking for a "Hello, world" pass example that ideally has all of
the following properties:
1) Complete. That is, it should have functional CMakeLists.txt,
etc. files.
2) Out-of-source. That is, it should build against a binary LLVM
installation.
3) Modern. That is, I don't want to use any deprecated APIs or
CMake macros.
4) Clang-compatible. That is, I'd like the pass to be able to run
directly from Clang instead of having to generate bitcode, run
opt on it, and then feed it back to Clang for linking.
Does such an example exist and if so, where can I find it?
Here's what I've considered to date:
* llvm/lib/Transforms/Hello, but this appears to be in-source only.
* http://llvm.org/docs/WritingAnLLVMPass.html, but this example
doesn't appear to be runnable directly from Clang.
* https://llvm.org/docs/CMake.html, but its proposed CMake line of
"add_llvm_library(LLVMPassname MODULE Pass.cpp)" blows up with
CMake Error at /usr/local/lib/cmake/llvm/AddLLVM.cmake:659 (install):
install TARGETS given no LIBRARY DESTINATION for module target
"Hello".
Call Stack (most recent call first):
Hello/CMakeLists.txt:3 (add_llvm_library)
(Perhaps this is fixable with additional CMake macro calls, but
that's what I list "Complete" as a desideratum.)
*
https://llvm.org/devmtg/2015-10/slides/GueltonGuinet-BuildingTestingDebuggingASimpleOutOfTreePass.pdf,
but this uses add_llvm_loadable_module in CMake, which I read in
some thread is likely to go away, and the legacy pass manager,
while is also likely to go away, to make the pass usable from
Clang.
See my predicament? What's a poor pass-writer to do?
Thanks in advance,
-- Scott
More information about the llvm-dev
mailing list