diff options
| author | Devang Patel <dpatel@apple.com> | 2008-11-17 18:37:53 +0000 |
|---|---|---|
| committer | Devang Patel <dpatel@apple.com> | 2008-11-17 18:37:53 +0000 |
| commit | b63c74730c80c7666cbd322b9dfeceb2a06dadf6 (patch) | |
| tree | e8d26f2c3ada2eea626e8788787b3566082f7921 /llvm/lib | |
| parent | e3126a24e30f1b6791500fe4726b2e7459ccfa6b (diff) | |
| download | bcm5719-llvm-b63c74730c80c7666cbd322b9dfeceb2a06dadf6.tar.gz bcm5719-llvm-b63c74730c80c7666cbd322b9dfeceb2a06dadf6.zip | |
Let AnalyzeAlloca() remove debug intrinsics.
llvm-svn: 59454
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp | 31 |
1 files changed, 11 insertions, 20 deletions
diff --git a/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp b/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp index 6a4cdc62a99..cc626ae71f5 100644 --- a/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp +++ b/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp @@ -277,21 +277,6 @@ namespace { AllocaPointerVal = 0; } - /// RemoveDebugUses - Remove uses of the alloca in DbgInfoInstrinsics. - void RemoveDebugUses(AllocaInst *AI) { - for (Value::use_iterator U = AI->use_begin(), E = AI->use_end(); - U != E;) { - Instruction *User = cast<Instruction>(*U); - ++U; - if (BitCastInst *BC = dyn_cast<BitCastInst>(User)) { - assert(BC->hasOneUse() && "Unexpected alloca uses!"); - DbgInfoIntrinsic *DI = cast<DbgInfoIntrinsic>(*BC->use_begin()); - DI->eraseFromParent(); - BC->eraseFromParent(); - } - } - } - /// AnalyzeAlloca - Scan the uses of the specified alloca, filling in our /// ivars. void AnalyzeAlloca(AllocaInst *AI) { @@ -301,9 +286,18 @@ namespace { // and decide whether all of the loads and stores to the alloca are within // the same basic block. for (Value::use_iterator U = AI->use_begin(), E = AI->use_end(); - U != E; ++U) { + U != E;) { Instruction *User = cast<Instruction>(*U); - if (StoreInst *SI = dyn_cast<StoreInst>(User)) { + ++U; + 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; + } + else if (StoreInst *SI = dyn_cast<StoreInst>(User)) { // Remember the basic blocks which define new values for the alloca DefiningBlocks.push_back(SI->getParent()); AllocaPointerVal = SI->getOperand(0); @@ -344,9 +338,6 @@ void PromoteMem2Reg::run() { assert(AI->getParent()->getParent() == &F && "All allocas should be in the same function, which is same as DF!"); - // Remove any uses of this alloca in DbgInfoInstrinsics. - Info.RemoveDebugUses(AI); - if (AI->use_empty()) { // If there are no uses of the alloca, just delete it now. if (AST) AST->deleteValue(AI); |

