[llvm-bugs] [Bug 27620] New: O3 pass pipeline does not remove	trivial LCSSA node
    via llvm-bugs 
    llvm-bugs at lists.llvm.org
       
    Tue May  3 11:19:29 PDT 2016
    
    
  
https://llvm.org/bugs/show_bug.cgi?id=27620
            Bug ID: 27620
           Summary: O3 pass pipeline does not remove trivial LCSSA node
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Loop Optimizer
          Assignee: unassignedbugs at nondot.org
          Reporter: me at manueljacob.de
                CC: llvm-bugs at lists.llvm.org
    Classification: Unclassified
Given this IR:
define i64 @test() {
entry:
  br label %loop
loop:
  %i = phi i64 [ 0, %entry ], [ %inc, %loop ]
  %inc = add i64 %i, 1
  %cond = tail call i1 @check()
  br i1 %cond, label %loop, label %exit
exit:
  ret i64 %i
}
declare i1 @check()
Running opt -S -O3 on it gives the following output:
define i64 @test() {
entry:
  br label %loop
loop:                                             ; preds = %loop, %entry
  %i = phi i64 [ 0, %entry ], [ %inc, %loop ]
  %inc = add i64 %i, 1
  %cond = tail call i1 @check()
  br i1 %cond, label %loop, label %exit
exit:                                             ; preds = %loop
  %i.lcssa = phi i64 [ %i, %loop ]
  ret i64 %i.lcssa
}
declare i1 @check()
Here, the LCSSA pass introduces a trivially removable PHI node in the exit
block.  However, InstCombine (or a similar pass) isn't run after LCSSA in the
pass pipeline.
-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20160503/7549e1c6/attachment.html>
    
    
More information about the llvm-bugs
mailing list