[LLVMbugs] [Bug 20814] New: InstCombine transform missing associativity of boolean and operator

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Fri Aug 29 16:45:41 PDT 2014


            Bug ID: 20814
           Summary: InstCombine transform missing associativity of boolean
                    and operator
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Scalar Optimizations
          Assignee: unassignedbugs at nondot.org
          Reporter: listmail at philipreames.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

Created attachment 12964
  --> http://llvm.org/bugs/attachment.cgi?id=12964&action=edit
Failing test case for InstCombine

InstCombine appears to be missing a transform based on the fact that it doesn't
recognize boolean and is associative.  Without the extra 'b' variable, this
example nicely gets folded into a single equality check, but this optimization
is inhibited in this case.

define i1 @test1(i32 %i, i1 %b) {
; CHECK: icmp eq i32 %i, 0
; CHECK-NOT: slt
; todo: check and, return
  %0 = icmp slt i32 %i, 1
  %1 = icmp sgt i32 %i, -1
  %and1 = and i1 %0, %b
  %and2 = and i1 %and1, %1
  ret i1 %and2

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/20140829/b9a42478/attachment.html>

More information about the llvm-bugs mailing list