summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@codeaurora.org>2016-08-17 14:31:34 +0000
committerChad Rosier <mcrosier@codeaurora.org>2016-08-17 14:31:34 +0000
commita6822f64f333e7134670625b1bcfd2eebfd2faa6 (patch)
treebc4492cac01e82649e517ab96769d5c178778107
parentcf3e8121a6c03518b2473250b277a4ce1326f5ed (diff)
downloadbcm5719-llvm-a6822f64f333e7134670625b1bcfd2eebfd2faa6.tar.gz
bcm5719-llvm-a6822f64f333e7134670625b1bcfd2eebfd2faa6.zip
Revert "[Reassociate] Avoid iterator invalidation when negating value."
This reverts commit r278928 due to lit test failures. llvm-svn: 278929
-rw-r--r--llvm/lib/Transforms/Scalar/Reassociate.cpp9
-rw-r--r--llvm/test/Transforms/Reassociate/invalid-iterator.ll30
2 files changed, 0 insertions, 39 deletions
diff --git a/llvm/lib/Transforms/Scalar/Reassociate.cpp b/llvm/lib/Transforms/Scalar/Reassociate.cpp
index 5b3e7c50e50..b930a8fb7e9 100644
--- a/llvm/lib/Transforms/Scalar/Reassociate.cpp
+++ b/llvm/lib/Transforms/Scalar/Reassociate.cpp
@@ -842,13 +842,6 @@ static Value *NegateValue(Value *V, Instruction *BI,
if (TheNeg->getParent()->getParent() != BI->getParent()->getParent())
continue;
- // Don't move the negate if it's in the block we're currently optimizing as
- // this may invalidate our iterator.
- // FIXME: We should find a more robust solution as we're missing local CSE
- // opportunities because of this constraint.
- if (TheNeg->getParent() == BI->getParent())
- continue;
-
BasicBlock::iterator InsertPt;
if (Instruction *InstInput = dyn_cast<Instruction>(V)) {
if (InvokeInst *II = dyn_cast<InvokeInst>(InstInput)) {
@@ -1870,8 +1863,6 @@ void ReassociatePass::RecursivelyEraseDeadInsts(
/// Zap the given instruction, adding interesting operands to the work list.
void ReassociatePass::EraseInst(Instruction *I) {
assert(isInstructionTriviallyDead(I) && "Trivially dead instructions only!");
- DEBUG(dbgs() << "Erasing dead inst: "; I->dump());
-
SmallVector<Value*, 8> Ops(I->op_begin(), I->op_end());
// Erase the dead instruction.
ValueRankMap.erase(I);
diff --git a/llvm/test/Transforms/Reassociate/invalid-iterator.ll b/llvm/test/Transforms/Reassociate/invalid-iterator.ll
deleted file mode 100644
index 14211d1ede6..00000000000
--- a/llvm/test/Transforms/Reassociate/invalid-iterator.ll
+++ /dev/null
@@ -1,30 +0,0 @@
-; RUN: opt < %s -reassociate -die -S | FileCheck %s
-
-; PR28367
-; Check to make sure %sub2 isn't moved from for.body. Doing so would invalidate
-; the iterator.
-
-; CHECK-LABEL: @fn1
-; CHECK: for.body:
-; CHECK-NEXT: %sub2 = sub nsw i32 0, %d.0
-; CHECK-NEXT: store i32 %sub2, i32* %ptr, align 4
-define void @fn1(i32 %a, i1 %c, i32* %ptr) {
-entry:
- br label %for.cond
-
-for.cond:
- %d.0 = phi i32 [ 1, %entry ], [ 2, %for.body ]
- br i1 %c, label %for.end, label %for.body
-
-for.body:
- %sub1 = sub i32 %a, %d.0
- %dead1 = add i32 %sub1, 1
- %dead2 = mul i32 %dead1, 3
- %dead3 = mul i32 %dead2, %sub1
- %sub2 = sub nsw i32 0, %d.0
- store i32 %sub2, i32* %ptr, align 4
- br label %for.cond
-
-for.end:
- ret void
-}
OpenPOWER on IntegriCloud