From cbad11e027745b2037d6ee88b301213a5b70afd5 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 6 Nov 2007 22:07:22 +0000 Subject: [PATCH] don't put erase or query for non-allocainst pointers in an set of allocainsts*'s llvm-svn: 43779 --- llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp b/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp index e5c557c349ff..b19077f1fcc9 100644 --- a/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp +++ b/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp @@ -271,7 +271,8 @@ bool DSE::handleEndBlock(BasicBlock& BB, // See through pointer-to-pointer bitcasts TranslatePointerBitCasts(pointerOperand); - if (deadPointers.count(pointerOperand)){ + if (isa(pointerOperand) && + deadPointers.count(cast(pointerOperand))) { // Remove it! MD.removeInstruction(S); @@ -345,7 +346,8 @@ bool DSE::handleEndBlock(BasicBlock& BB, for (std::vector::iterator I = dead.begin(), E = dead.end(); I != E; ++I) - deadPointers.erase(*I); + if (AllocaInst *AI = dyn_cast(*I)) + deadPointers.erase(AI); continue; } @@ -427,7 +429,8 @@ bool DSE::RemoveUndeadPointers(Value* killPointer, for (std::vector::iterator I = undead.begin(), E = undead.end(); I != E; ++I) - deadPointers.erase(*I); + if (AllocaInst *AI = dyn_cast(*I)) + deadPointers.erase(AI); return MadeChange; }