aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Hernandez <vhernandez@apple.com>2010-01-21 23:08:36 +0000
committerVictor Hernandez <vhernandez@apple.com>2010-01-21 23:08:36 +0000
commite31dc355b264b0956789d47534c779b943c85216 (patch)
treebb77efb13b88903d98b237f520d81bfb97f596df
parenta4c77622f7f9f7546f0eae7c171ab56df125dc9a (diff)
downloadexternal_llvm-e31dc355b264b0956789d47534c779b943c85216.zip
external_llvm-e31dc355b264b0956789d47534c779b943c85216.tar.gz
external_llvm-e31dc355b264b0956789d47534c779b943c85216.tar.bz2
DbgInfoIntrinsic no longer appear in an instruction's use list
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94113 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Transforms/Utils/PromoteMemoryToRegister.cpp23
1 files changed, 4 insertions, 19 deletions
diff --git a/lib/Transforms/Utils/PromoteMemoryToRegister.cpp b/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
index baaa130..291d320 100644
--- a/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
+++ b/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
@@ -76,16 +76,9 @@ bool llvm::isAllocaPromotable(const AllocaInst *AI) {
return false; // Don't allow a store OF the AI, only INTO the AI.
if (SI->isVolatile())
return false;
- } else if (const BitCastInst *BC = dyn_cast<BitCastInst>(*UI)) {
- // 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 if (isa<BitCastInst>(*UI)) {
+ // A bitcast inhibits promotion.
+ return false;
} else {
return false;
}
@@ -290,15 +283,7 @@ namespace {
for (Value::use_iterator UI = AI->use_begin(), E = AI->use_end();
UI != E;) {
Instruction *User = cast<Instruction>(*UI++);
- if (BitCastInst *BC = dyn_cast<BitCastInst>(User)) {
- // Remove any uses of this alloca in DbgInfoInstrinsics.
- assert(BC->hasOneUse() && "Unexpected alloca uses!");
- DbgInfoIntrinsic *DI = cast<DbgInfoIntrinsic>(*BC->use_begin());
- DI->eraseFromParent();
- BC->eraseFromParent();
- continue;
- }
-
+
if (StoreInst *SI = dyn_cast<StoreInst>(User)) {
// Remember the basic blocks which define new values for the alloca
DefiningBlocks.push_back(SI->getParent());