[LLVMdev] How to visualise Clang optimisation phases

Edmund Grimley-Evans 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 mailing list