Commit 18d41baa authored by Tanya Lattner's avatar Tanya Lattner
Browse files

Merge r98416 from mainline.

Fix a typo in ValueTracking that's causing instcombine to delete needed shift instructions.

llvm-svn: 99289
parent 6fa23434
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -779,7 +779,7 @@ unsigned llvm::ComputeNumSignBits(Value *V, const TargetData *TD,
    for (unsigned i = 1, e = PN->getNumIncomingValues(); i != e; ++i) {
      if (Tmp == 1) return Tmp;
      Tmp = std::min(Tmp,
                     ComputeNumSignBits(PN->getIncomingValue(1), TD, Depth+1));
                     ComputeNumSignBits(PN->getIncomingValue(i), TD, Depth+1));
    }
    return Tmp;
  }
+20 −0
Original line number Diff line number Diff line
@@ -56,3 +56,23 @@ C:
; CHECK: %P = phi i64
; CHECK-NEXT: ret i64 %P
}

; rdar://7732987
define i32 @test5(i32 %Y) {
  br i1 undef, label %A, label %C
A:
  br i1 undef, label %B, label %D
B:
  br label %D
C:
  br i1 undef, label %D, label %E
D:
  %P = phi i32 [0, %A], [0, %B], [%Y, %C] 
  %S = ashr i32 %P, 16
  ret i32 %S
; CHECK: @test5
; CHECK: %P = phi i32
; CHECK-NEXT: ashr i32 %P, 16
E:
  ret i32 0
}