add a simple fast-path for dead allocas
authorChris Lattner <sabre@nondot.org>
Fri, 22 Dec 2006 23:14:42 +0000 (23:14 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 22 Dec 2006 23:14:42 +0000 (23:14 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32750 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/ScalarReplAggregates.cpp

index 160128eba1d1f997eec1ab0a209a2eec89e1f420..a92592b8166cfcdbffc156ccbb711060abbc8923 100644 (file)
@@ -139,6 +139,13 @@ bool SROA::performScalarRepl(Function &F) {
     AllocationInst *AI = WorkList.back();
     WorkList.pop_back();
     
+    // Handle dead allocas trivially.  These can be formed by SROA'ing arrays
+    // with unused elements.
+    if (AI->use_empty()) {
+      AI->eraseFromParent();
+      continue;
+    }
+    
     // If we can turn this aggregate value (potentially with casts) into a
     // simple scalar value that can be mem2reg'd into a register value.
     bool IsNotTrivial = false;
@@ -232,7 +239,7 @@ bool SROA::performScalarRepl(Function &F) {
     }
 
     // Finally, delete the Alloca instruction
-    AI->getParent()->getInstList().erase(AI);
+    AI->eraseFromParent();
     NumReplaced++;
   }