[llvm-dev] Any indispensable passes?

John Criswell via llvm-dev llvm-dev at lists.llvm.org
Wed Mar 1 12:53:48 PST 2017


On 3/1/17 2:54 PM, Peizhao Ou via llvm-dev wrote:
> Hi everyone,
>
> I am currently testing out a combination of IR->IR passes with opt to 
> benchmark how they affect performance. The source code works fine if 
> simply use the clang (-O0/-O3) to directly compile to object files and 
> link them. However, when I use opt with a select set of passes and 
> then use llc to compile them to binary, the compiled binary is wrong.

Can you clarify what you mean by "binary is wrong"?  Does the program 
not link, or does it produce incorrect results when executed?

You might try running mem2reg before any other passes in your random 
list of optimizations.  mem2reg does SSA construction; I'd bet that 
you're more likely to trigger a bug in other passes if you haven't run 
mem2reg first.  That said, I don't think any passes are needed for 
correctness.

You might also try using bugpoint to reduce the bug that you're seeing.  
As I said before, you may be triggering bugs that don't usually show up 
in the standard pass pipeline.  Reducing the bug (and fixing it if you 
are willing and able) would help improve the quality of the code.

Regards,

John Criswell


>
> That makes me wonder if there are any IR->IR passes that are 
> indispensable and they are to guarantee the semantics?
>
> Here's my workflow just in case:
> *********************************************************************************
> 1. Compile the source code to unoptimized IRs:
> clang -c -emit-llvm -O0 test.c -o test.bc
> 2. Run opt with a set of IR->IR passes, e.g.,
> opt -simplifycfg -sroa -inferattrs -globalopt -instcombine 
> -simplifycfg -prune-eh -inline  -tailcallelim -simplifycfg 
> -loop-simplify -lcssa -loop-rotate -licm -gvn -verify test.bc -o test.bc
> 3. Run llc with -O0:
> llc -file-type=obj test.bc -o test.o
> 4. Last link all the object files:
> clang -O0 test1.o test2.o -o test
> *********************************************************************************
>
> Thanks,
> Peizhao
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev


-- 
John Criswell
Assistant Professor
Department of Computer Science, University of Rochester
http://www.cs.rochester.edu/u/criswell

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170301/b1b267e3/attachment.html>


More information about the llvm-dev mailing list