sccp pass with opt

Hi all,

I am trying to see how single llvm optimizations work by running them one by one with opt and looking how the IR changes.
Since I was interested in seeing how constant propagation was working I tried to run opt on the Sparse Conditional Constant Propagation, however by passing as argument -S -sccp -die it does not change anything in the output IR code. I attached the file with the source code I used, I think that the x value in that example should be propagated in the mul instruction. What am I missing?

Thank you in advance,


code.c (137 Bytes)

code.s (1.41 KB)

This compiler does not have mem-SSA, as far as I know, only few pass can propagate value along memory.

You need to promote those local variable into register first before sccp is invoked.
e.g1. opt a.ll -basicaa -gvn -sccp -S
eg.2. opt a.ll -sroa -sccp -S

Right reason, but you want mem2reg.
Without mem2reg, i would not expect most passes to do anything.
opt a.ll -mem2reg -sccp gives the result you want.