[LLVMdev] How to visualise Clang optimisation phases
Edmund.Grimley-Evans at arm.com
Mon Jul 19 08:42:13 PDT 2010
> Having a look at clang's source, you can find in
> "lib/CodeGen/BackendUtil.cpp" the functions where clang builds the
> passes to emit code. The optimization passes used are there and you can
> simulate them via the "opt" utility, by running each pass one at a time.
> LLVM also declares standard module/function passes on
> include/llvm/Support/StandardPasses.h. Have a look and see if that's
> what you want.
Here's a very simple example where I can't get llc do what clang does. Just taking
int f(int a, int b)
return a + b;
and compiling it on the one hand with
clang -cc1 -O3 x.c -S -o 1.s
and on the other hand with
clang -cc1 -O0 x.c -emit-llvm-bc -o - | llc -O3 -o 2.s
gives different code because in the latter case the output includes some pointless writes to the stack. Is the non-volatile character of those writes already lost in the output from clang -cc1 -O0?
I don't think I used to have this problem. Perhaps the command-line interface has changed while I wasn't paying attention.
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.
More information about the llvm-dev