Tweak the check for promotable alloca's to handle
authorDale Johannesen <dalej@apple.com>
Fri, 6 Mar 2009 00:42:50 +0000 (00:42 +0000)
committerDale Johannesen <dalej@apple.com>
Fri, 6 Mar 2009 00:42:50 +0000 (00:42 +0000)
debug intrinsics correctly.

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

lib/Transforms/Utils/PromoteMemoryToRegister.cpp

index cc626ae71f5c653157abc788b129293efad249ce..e3dd72daf70fc2acf7853a63262fbf03f638f399 100644 (file)
@@ -81,9 +81,15 @@ bool llvm::isAllocaPromotable(const AllocaInst *AI) {
       if (SI->isVolatile())
         return false;
     } else if (const BitCastInst *BC = dyn_cast<BitCastInst>(*UI)) {
-      // Uses by dbg info shouldn't inhibit promotion.
+      // A bitcast that does not feed into debug info inhibits promotion.
       if (!BC->hasOneUse() || !isa<DbgInfoIntrinsic>(*BC->use_begin()))
         return false;
+      // If the only use is by debug info, this alloca will not exist in
+      // non-debug code, so don't try to promote; this ensures the same
+      // codegen with debug info.  Otherwise, debug info should not
+      // inhibit promotion (but we must examine other uses).
+      if (AI->hasOneUse())
+        return false;
     } else {
       return false;
     }