diff options
author | Chad Rosier <mcrosier@codeaurora.org> | 2014-09-17 16:35:09 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@codeaurora.org> | 2014-09-17 16:35:09 +0000 |
commit | 307b50b0f66941a5bbdb7761db57d3572124f783 (patch) | |
tree | 5e4c4bdd9fb77fd09dcd2eeb85aa86a2bf33c8dd /llvm | |
parent | 353f358d241330971b9f67f7d02d4b1f59c72951 (diff) | |
download | llvm-307b50b0f66941a5bbdb7761db57d3572124f783.zip llvm-307b50b0f66941a5bbdb7761db57d3572124f783.tar.gz llvm-307b50b0f66941a5bbdb7761db57d3572124f783.tar.bz2 |
[IndVarSimplify] Partially revert r217953 to see if this fixes the bots.
Specifically, disable widening of unsigned compare instructions.
llvm-svn: 217962
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/lib/Transforms/Scalar/IndVarSimplify.cpp | 5 | ||||
-rw-r--r-- | llvm/test/Transforms/IndVarSimplify/widen-loop-comp.ll | 28 |
2 files changed, 4 insertions, 29 deletions
diff --git a/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp b/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp index 532666e..7cc34e1 100644 --- a/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp +++ b/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp @@ -936,6 +936,10 @@ bool WidenIV::WidenLoopCompare(NarrowIVDefUse DU) { if (!Cmp) return false; + bool IsSigned = CmpInst::isSigned(Cmp->getPredicate()); + if (!IsSigned) + return false; + Value *Op = Cmp->getOperand(Cmp->getOperand(0) == DU.NarrowDef ? 1 : 0); unsigned CastWidth = SE->getTypeSizeInBits(Op->getType()); unsigned IVWidth = SE->getTypeSizeInBits(WideType); @@ -947,7 +951,6 @@ bool WidenIV::WidenLoopCompare(NarrowIVDefUse DU) { // Widen the other operand of the compare, if necessary. if (CastWidth < IVWidth) { - bool IsSigned = CmpInst::isSigned(Cmp->getPredicate()); Value *ExtOp = getExtend(Op, WideType, IsSigned, Cmp); DU.NarrowUse->replaceUsesOfWith(Op, ExtOp); } diff --git a/llvm/test/Transforms/IndVarSimplify/widen-loop-comp.ll b/llvm/test/Transforms/IndVarSimplify/widen-loop-comp.ll index 84738eb..a696394 100644 --- a/llvm/test/Transforms/IndVarSimplify/widen-loop-comp.ll +++ b/llvm/test/Transforms/IndVarSimplify/widen-loop-comp.ll @@ -136,31 +136,3 @@ for.body: for.end: 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 -} |