[LLVMdev] How to visualise Clang optimisation phases

Alistair Lynn arplynn at gmail.com
Mon Jul 19 09:28:46 PDT 2010

Hello Edmund-

In the second invocation, you're not running the usual set of IR optimisations, only the backend optimisations.

Try :

clang -cc1 -O0 x.c -emit-llvm-bc -o - | opt -std-compile-opts | llc -O3 -o 2.s


On 19 Jul 2010, at 16:42, Edmund Grimley-Evans wrote:

>> 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.
> Thanks.
> 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.
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

More information about the llvm-dev mailing list