Implement DeadStoreElim/alloca.llx by observing that allocas are dead at the
authorChris Lattner <sabre@nondot.org>
Mon, 26 Jul 2004 06:14:11 +0000 (06:14 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 26 Jul 2004 06:14:11 +0000 (06:14 +0000)
end of the function (either return or unwind)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15232 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/DeadStoreElimination.cpp

index 36aaa63449b18106565f339aa371372287f34e2a..40b5671e4c68f7205c757a46ed4b1b01ec9ee78a 100644 (file)
@@ -66,7 +66,10 @@ bool DSE::runOnBasicBlock(BasicBlock &BB) {
   // If this block ends in a return, unwind, and eventually tailcall/barrier,
   // then all allocas are dead at its end.
   if (BB.getTerminator()->getNumSuccessors() == 0) {
-
+    BasicBlock *Entry = BB.getParent()->begin();
+    for (BasicBlock::iterator I = Entry->begin(), E = Entry->end(); I != E; ++I)
+      if (AllocaInst *AI = dyn_cast<AllocaInst>(I))
+        KillLocs.add(AI, ~0);
   }
 
   // PotentiallyDeadInsts - Deleting dead stores from the program can make other