Avoid deferencing use_begin() if value does not have a use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69836 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evan Cheng 2009-04-22 22:45:37 +00:00
parent 5654613a01
commit 1abe64663e
2 changed files with 18 additions and 0 deletions

View File

@ -806,6 +806,7 @@ bool IndVarSimplify::runOnLoop(Loop *L, LPPassManager &LPM) {
// (RHS doesn't have to be constant. There should be a better approach
// than bottom-up pattern matching for this...)
if (UInst && UInst->getOpcode()==Instruction::And &&
!UInst->use_empty() &&
allUsesAreSameTyped(Instruction::ZExt, UInst) &&
isa<ConstantInt>(UInst->getOperand(1))) {
uint64_t newBitSize = LargestType->getPrimitiveSizeInBits();

View File

@ -0,0 +1,17 @@
; RUN: llvm-as < %s | opt -indvars
define i32 @t() nounwind ssp {
entry:
br label %bb32
bb32: ; preds = %bb32, %entry
%mbPartIdx.0.reg2mem.0 = phi i8 [ %2, %bb32 ], [ 0, %entry ] ; <i8> [#uses=3]
%0 = and i8 %mbPartIdx.0.reg2mem.0, 1 ; <i8> [#uses=0]
%1 = zext i8 %mbPartIdx.0.reg2mem.0 to i64 ; <i64> [#uses=0]
%2 = add i8 %mbPartIdx.0.reg2mem.0, 1 ; <i8> [#uses=2]
%3 = icmp ugt i8 %2, 3 ; <i1> [#uses=1]
br i1 %3, label %bb41, label %bb32
bb41: ; preds = %bb32
ret i32 0
}