[llvm-dev] Is there a way to pass Optimization passes to clang?

David Chisnall via llvm-dev llvm-dev at lists.llvm.org
Wed Dec 2 11:06:19 PST 2015

On 2 Dec 2015, at 19:00, Phil Tomson <phil.a.tomson at gmail.com> wrote:
> I have a feeling this would get rather tricky given that there are several libraries linked in to the final executable as well. It would have to look something like:
> clang -c file.c -emit-llvm > opt -... > llc ... > as > ld (libs to link in)

You don’t need as (llc can emit .o files).  Hopefully, your build system has different CC / CXX / LD values, so the final link is separate too.

> Someone above mentioned modifying PassManagerBuilder and rebuilding clang - I'd guess there's a list of optimization passes performed somewhere that PassManagerBuilder references, but I haven't been in the optimization pass area of LLVM much yet. Any pointers on that approach?

You can take a look in BackendUtil.cpp for how the passes are constructed for clang.  Note that it is quite complex and depends a lot on your language options...


More information about the llvm-dev mailing list