LLVM - Run Own Pass automatically with clang
c, c++, clang, compiler-construction, llvm
Solution
You can run your own pass with clang directly with -Xclang.
clang++ -Xclang -load -Xclang ./libmypass.so input.cpp
Source
Problem
I wrote a few own passes for llvm, in order to use them with clang. I integrated them in llvm (not dynamically loaded). They are even listed in the Optimizations available: section when I type: ``` opt --help-hidden ``` I want to run one of own my passes now automatically as the last one when I call clang: ``` clang ./hello.bc -o ./hello ``` or even with c-code: ``` clang ./hello.c -o ./hello ``` When I run my pass with opt manually, the modified ByteCode is generated and written to a new .bc file: ``` opt -my-pass < ./hello.bc > ./hello_optimized.bc ``` When I compile the modified .bc with clang, normal clang Optimizations are run again, which destroy the optimizations of my manual executed pass: ``` clang -O0 -m32 ./hello_optimized.bc -o ./hello_optimized ``` My Question is: - How can I run my own written pass automatically with clang as the last pass of all? - Another possible solution is deactivating all passes completely, or at least the dead code/function elimination of clang/opt. How could I do this?