I want to observe the effect of different optimization on passes in llvm.
So basically, I choose a cipher based c++ program and converted it to IR without any optimization (-O1, -O2, -O3) by using the following command:
clang++ cypher.cpp -o cypher.cpp.ll -emit-llvm -S
Then I used 32 best optimization sequences from this paper [1] by following command:
opt -S <best_optimization_sequences> cypher.cpp.ll -o cypher.cpp.ll.opt
Then converted it to bitcode and finally assembly by following commands:
llvm-as cypher.cpp.ll.opt -o cypher.cpp.opt.bc
llc cypher.cpp.opt.bc -o cypher.cpp.opt.s
But unfortunately, I found that most of the codes are the same, and I didn’t see any impact on the sequence. But in this paper [1] it says these sequences are very effective in optimizing the code.
Please give me an idea of how can I overcome this situation. I am giving a link to a doc file where the bash script and the optimization sequences located for any further references.
Reference:
- SURESH PURINI and LAKSHYA JAIN, ACM Transactions on Architecture and Code OptimizationJanuary 2013. Finding good optimization sequences covering program space.