[LLVMbugs] [Bug 15340] Missed select threading case

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Sun Feb 24 07:40:27 PST 2013


http://llvm.org/bugs/show_bug.cgi?id=15340

Benjamin Kramer <benny.kra at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--- Comment #2 from Benjamin Kramer <benny.kra at gmail.com> ---
With r175995 the cmov is gone:

define void @foo(i32* %x, i32* %y) #0 {
entry:
  %cmp5 = icmp eq i32* %x, null
  br i1 %cmp5, label %while.end, label %while.body

while.body:                                       ; preds = %entry, %while.body
  %x.addr.06 = phi i32* [ %call, %while.body ], [ %x, %entry ]
  %call = tail call i32* @f(i32* %x.addr.06) #2
  %cmp7 = icmp eq i32* %call, null
  %not.cmp1 = icmp eq i32* %call, %y
  %cmp = or i1 %cmp7, %not.cmp1
  br i1 %cmp, label %while.end, label %while.body

while.end:                                        ; preds = %while.body, %entry
  ret void
}

declare i32* @f(i32*) #1

define void @bar(i32* %x, i32* %y) #0 {
entry:
  %cmp.old = icmp eq i32* %x, null
  br i1 %cmp.old, label %while.end, label %while.body

while.body:                                       ; preds = %entry, %while.body
  %x.addr.0 = phi i32* [ %call, %while.body ], [ %x, %entry ]
  %call = tail call i32* @f(i32* %x.addr.0) #2
  %cmp1 = icmp ne i32* %call, %y
  %cmp = icmp ne i32* %call, null
  %or.cond = and i1 %cmp1, %cmp
  br i1 %or.cond, label %while.body, label %while.end

while.end:                                        ; preds = %while.body, %entry
  ret void
}

-- 
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/20130224/d4c4eb54/attachment.html>


More information about the llvm-bugs mailing list