From 1619560521c46ecee0ef2d0c651ed18feb57df97 Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Fri, 29 Jul 2011 19:00:35 +0000 Subject: Clean up debug info after reassociation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136480 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Scalar/Reassociate.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'lib/Transforms/Scalar/Reassociate.cpp') diff --git a/lib/Transforms/Scalar/Reassociate.cpp b/lib/Transforms/Scalar/Reassociate.cpp index e6341ae..578e8e0 100644 --- a/lib/Transforms/Scalar/Reassociate.cpp +++ b/lib/Transforms/Scalar/Reassociate.cpp @@ -75,6 +75,7 @@ namespace { class Reassociate : public FunctionPass { DenseMap RankMap; DenseMap, unsigned> ValueRankMap; + DenseMap DbgValues; SmallVector RedoInsts; SmallVector DeadInsts; bool MadeChange; @@ -104,6 +105,9 @@ namespace { void ReassociateInst(BasicBlock::iterator &BBI); void RemoveDeadBinaryOp(Value *V); + + /// collectDbgValues - Collect all llvm.dbg.value intrinsics. + void collectDbgValues(Function &F); }; } @@ -344,6 +348,11 @@ void Reassociate::LinearizeExprTree(BinaryOperator *I, void Reassociate::RewriteExprTree(BinaryOperator *I, SmallVectorImpl &Ops, unsigned i) { + // If this operation was representing debug info of a value then it + // is no longer true, so remove the dbg.value instrinsic. + if (DbgValueInst *DVI = DbgValues.lookup(I)) + DeadInsts.push_back(DVI); + if (i+2 == Ops.size()) { if (I->getOperand(0) != Ops[i].Op || I->getOperand(1) != Ops[i+1].Op) { @@ -1094,6 +1103,7 @@ Value *Reassociate::ReassociateExpression(BinaryOperator *I) { bool Reassociate::runOnFunction(Function &F) { + collectDbgValues(F); // Recalculate the rank map for F BuildRankMap(F); @@ -1113,7 +1123,9 @@ bool Reassociate::runOnFunction(Function &F) { // Now that we're done, delete any instructions which are no longer used. while (!DeadInsts.empty()) if (Value *V = DeadInsts.pop_back_val()) - RecursivelyDeleteTriviallyDeadInstructions(V); + if (!RecursivelyDeleteTriviallyDeadInstructions(V)) + if (DbgValueInst *DVI = dyn_cast(V)) + DVI->eraseFromParent(); // We are done with the rank map. RankMap.clear(); @@ -1121,3 +1133,11 @@ bool Reassociate::runOnFunction(Function &F) { return MadeChange; } +/// collectDbgValues - Collect all llvm.dbg.value intrinsics. +void Reassociate::collectDbgValues(Function &F) { + for (Function::iterator FI = F.begin(), FE = F.end(); FI != FE; ++FI) + for (BasicBlock::iterator BI = FI->begin(), BE = FI->end(); + BI != BE; ++BI) + if (DbgValueInst *DVI = dyn_cast(BI)) + DbgValues[DVI->getValue()] = DVI; +} -- cgit v1.1 From 6e8bb8a0cb08a26e92fd1c60a64f357a41698bae Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Fri, 29 Jul 2011 19:49:58 +0000 Subject: Clear DbgValues in the end. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136503 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Scalar/Reassociate.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/Transforms/Scalar/Reassociate.cpp') diff --git a/lib/Transforms/Scalar/Reassociate.cpp b/lib/Transforms/Scalar/Reassociate.cpp index 578e8e0..1080b75 100644 --- a/lib/Transforms/Scalar/Reassociate.cpp +++ b/lib/Transforms/Scalar/Reassociate.cpp @@ -1130,6 +1130,7 @@ bool Reassociate::runOnFunction(Function &F) { // We are done with the rank map. RankMap.clear(); ValueRankMap.clear(); + DbgValues.clear(); return MadeChange; } -- cgit v1.1 From 9b7fdc7e8af26b65c9afdee45d4ec0b22c8a17c8 Mon Sep 17 00:00:00 2001 From: Owen Anderson Date: Tue, 2 Aug 2011 02:23:42 +0000 Subject: Revert r136503 and r136480 in an effort to fix non-determinism in the llvm-gcc buildbots on i386. Devang is looking into the root cause. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136674 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Scalar/Reassociate.cpp | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) (limited to 'lib/Transforms/Scalar/Reassociate.cpp') diff --git a/lib/Transforms/Scalar/Reassociate.cpp b/lib/Transforms/Scalar/Reassociate.cpp index 1080b75..e6341ae 100644 --- a/lib/Transforms/Scalar/Reassociate.cpp +++ b/lib/Transforms/Scalar/Reassociate.cpp @@ -75,7 +75,6 @@ namespace { class Reassociate : public FunctionPass { DenseMap RankMap; DenseMap, unsigned> ValueRankMap; - DenseMap DbgValues; SmallVector RedoInsts; SmallVector DeadInsts; bool MadeChange; @@ -105,9 +104,6 @@ namespace { void ReassociateInst(BasicBlock::iterator &BBI); void RemoveDeadBinaryOp(Value *V); - - /// collectDbgValues - Collect all llvm.dbg.value intrinsics. - void collectDbgValues(Function &F); }; } @@ -348,11 +344,6 @@ void Reassociate::LinearizeExprTree(BinaryOperator *I, void Reassociate::RewriteExprTree(BinaryOperator *I, SmallVectorImpl &Ops, unsigned i) { - // If this operation was representing debug info of a value then it - // is no longer true, so remove the dbg.value instrinsic. - if (DbgValueInst *DVI = DbgValues.lookup(I)) - DeadInsts.push_back(DVI); - if (i+2 == Ops.size()) { if (I->getOperand(0) != Ops[i].Op || I->getOperand(1) != Ops[i+1].Op) { @@ -1103,7 +1094,6 @@ Value *Reassociate::ReassociateExpression(BinaryOperator *I) { bool Reassociate::runOnFunction(Function &F) { - collectDbgValues(F); // Recalculate the rank map for F BuildRankMap(F); @@ -1123,22 +1113,11 @@ bool Reassociate::runOnFunction(Function &F) { // Now that we're done, delete any instructions which are no longer used. while (!DeadInsts.empty()) if (Value *V = DeadInsts.pop_back_val()) - if (!RecursivelyDeleteTriviallyDeadInstructions(V)) - if (DbgValueInst *DVI = dyn_cast(V)) - DVI->eraseFromParent(); + RecursivelyDeleteTriviallyDeadInstructions(V); // We are done with the rank map. RankMap.clear(); ValueRankMap.clear(); - DbgValues.clear(); return MadeChange; } -/// collectDbgValues - Collect all llvm.dbg.value intrinsics. -void Reassociate::collectDbgValues(Function &F) { - for (Function::iterator FI = F.begin(), FE = F.end(); FI != FE; ++FI) - for (BasicBlock::iterator BI = FI->begin(), BE = FI->end(); - BI != BE; ++BI) - if (DbgValueInst *DVI = dyn_cast(BI)) - DbgValues[DVI->getValue()] = DVI; -} -- cgit v1.1 From 1f6a329f79b3568d379142f921f59c4143ddaa14 Mon Sep 17 00:00:00 2001 From: Duncan Sands Date: Fri, 12 Aug 2011 14:54:45 +0000 Subject: Silence a bunch (but not all) "variable written but not read" warnings when building with assertions disabled. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137460 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Scalar/Reassociate.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/Transforms/Scalar/Reassociate.cpp') diff --git a/lib/Transforms/Scalar/Reassociate.cpp b/lib/Transforms/Scalar/Reassociate.cpp index e6341ae..8f98a5b 100644 --- a/lib/Transforms/Scalar/Reassociate.cpp +++ b/lib/Transforms/Scalar/Reassociate.cpp @@ -309,7 +309,7 @@ void Reassociate::LinearizeExprTree(BinaryOperator *I, std::swap(LHS, RHS); bool Success = !I->swapOperands(); assert(Success && "swapOperands failed"); - Success = false; + (void)Success; MadeChange = true; } else if (RHSBO) { // Turn (A+B)+(C+D) -> (((A+B)+C)+D). This guarantees the RHS is not -- cgit v1.1