[IndVarSimplify] Partially revert r217953 to see if this fixes the bots.

Specifically, disable widening of unsigned compare instructions.

llvm-svn: 217962
This commit is contained in:
Chad Rosier 2014-09-17 16:35:09 +00:00
parent 353f358d24
commit 307b50b0f6
2 changed files with 4 additions and 29 deletions

View File

@ -936,6 +936,10 @@ bool WidenIV::WidenLoopCompare(NarrowIVDefUse DU) {
if (!Cmp) if (!Cmp)
return false; return false;
bool IsSigned = CmpInst::isSigned(Cmp->getPredicate());
if (!IsSigned)
return false;
Value *Op = Cmp->getOperand(Cmp->getOperand(0) == DU.NarrowDef ? 1 : 0); Value *Op = Cmp->getOperand(Cmp->getOperand(0) == DU.NarrowDef ? 1 : 0);
unsigned CastWidth = SE->getTypeSizeInBits(Op->getType()); unsigned CastWidth = SE->getTypeSizeInBits(Op->getType());
unsigned IVWidth = SE->getTypeSizeInBits(WideType); unsigned IVWidth = SE->getTypeSizeInBits(WideType);
@ -947,7 +951,6 @@ bool WidenIV::WidenLoopCompare(NarrowIVDefUse DU) {
// Widen the other operand of the compare, if necessary. // Widen the other operand of the compare, if necessary.
if (CastWidth < IVWidth) { if (CastWidth < IVWidth) {
bool IsSigned = CmpInst::isSigned(Cmp->getPredicate());
Value *ExtOp = getExtend(Op, WideType, IsSigned, Cmp); Value *ExtOp = getExtend(Op, WideType, IsSigned, Cmp);
DU.NarrowUse->replaceUsesOfWith(Op, ExtOp); DU.NarrowUse->replaceUsesOfWith(Op, ExtOp);
} }

View File

@ -136,31 +136,3 @@ for.body:
for.end: for.end:
ret i32 %sum.0 ret i32 %sum.0
} }
; CHECK-LABEL: @test4
; CHECK: zext i32 %b
; CHECK: for.cond:
; CHECK: phi i64
; CHECK: icmp ule i64
define i32 @test4(i32* %a, i32 %b) {
entry:
br label %for.cond
for.cond:
%sum.0 = phi i32 [ 0, %entry ], [ %add, %for.body ]
%i.0 = phi i32 [ 0, %entry ], [ %inc, %for.body ]
%cmp = icmp ule i32 %i.0, %b
br i1 %cmp, label %for.body, label %for.end
for.body:
%idxprom = sext i32 %i.0 to i64
%arrayidx = getelementptr inbounds i32* %a, i64 %idxprom
%0 = load i32* %arrayidx, align 4
%add = add nsw i32 %sum.0, %0
%inc = add nsw i32 %i.0, 1
br label %for.cond
for.end:
ret i32 %sum.0
}