[llvm-dev] Disabling DCE pass from opt

via llvm-dev llvm-dev at lists.llvm.org
Tue Nov 15 06:13:17 PST 2016


Hi Alex,
You can print the IR after each optimization pass using the '-mllvm 
-print-after-all' option.

clang++ -O3 -mllvm -print-after-all -S -emit-llvm -o - test.cpp

 From there you should be able to determine which pass is removing the 
dead code.

  HTH,
   Chad

On 2016-11-15 09:00, Alex Susu via llvm-dev wrote:
> Hello.
>     Could you please tell me which passes in opt perform DCE for the
> following code (I am aware of the passes from the source file
> lib/Transforms/IPO/PassManagerBuilder.cpp):
>         void foo(TYPE *A, TYPE *B, TYPE *C, TYPE N) {
>           int tmpToBeDCE;
> 
>           for (TYPE i = 0; i < N; ++i) {
>               C[i] = A[i] + B[i];
>               tmpToBeDCE = 2;
>           }
> 
>           tmpToBeDCE++;
>         }
> 
>     I ask because when I give this code to clang -O3 (I require -O3 to
> perform vectorization), in the resulting .ll file there is no
> reference to the tmpToBeDCE variable - it was eliminated since it has
> no real use.
>     I would like to still have this variable implemented in the output 
> .ll file.
> 
>   Thank you,
>     Alex
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev


More information about the llvm-dev mailing list