diff options
author | Dale Johannesen <dalej@apple.com> | 2009-03-06 00:42:50 +0000 |
---|---|---|
committer | Dale Johannesen <dalej@apple.com> | 2009-03-06 00:42:50 +0000 |
commit | 2511abf6e79d36f679bd5ed5af94208cde579e74 (patch) | |
tree | 6199f735c39b0a9795a7e28c1a076fa07ffa3dc9 /lib/Transforms/Utils/PromoteMemoryToRegister.cpp | |
parent | f70bda2f8175db0e0ea24d080a8e5c921b95a74c (diff) |
Tweak the check for promotable alloca's to handle
debug intrinsics correctly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66225 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Utils/PromoteMemoryToRegister.cpp')
-rw-r--r-- | lib/Transforms/Utils/PromoteMemoryToRegister.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/Transforms/Utils/PromoteMemoryToRegister.cpp b/lib/Transforms/Utils/PromoteMemoryToRegister.cpp index cc626ae71f..e3dd72daf7 100644 --- a/lib/Transforms/Utils/PromoteMemoryToRegister.cpp +++ b/lib/Transforms/Utils/PromoteMemoryToRegister.cpp @@ -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; } |