diff options
author | Adrian Prantl <aprantl@apple.com> | 2014-04-25 00:42:50 +0000 |
---|---|---|
committer | Adrian Prantl <aprantl@apple.com> | 2014-04-25 00:42:50 +0000 |
commit | 6e5de2ea0672810a2d9578f17825002989fa1b1a (patch) | |
tree | 8780eeec2c7b863e866091a1d355694fdd3f20ff /llvm/lib/Transforms/Utils/Local.cpp | |
parent | 3512190ab3b8acb3ca035073aefec25f0a23a046 (diff) | |
download | llvm-6e5de2ea0672810a2d9578f17825002989fa1b1a.zip llvm-6e5de2ea0672810a2d9578f17825002989fa1b1a.tar.gz llvm-6e5de2ea0672810a2d9578f17825002989fa1b1a.tar.bz2 |
Revert "This reapplies r207130 with an additional testcase+and a missing check for"
Typo in testcase.
llvm-svn: 207166
Diffstat (limited to 'llvm/lib/Transforms/Utils/Local.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/Local.cpp | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp index e2ba047..abd73eb 100644 --- a/llvm/lib/Transforms/Utils/Local.cpp +++ b/llvm/lib/Transforms/Utils/Local.cpp @@ -1051,26 +1051,20 @@ bool llvm::LowerDbgDeclare(Function &F) { AllocaInst *AI = dyn_cast_or_null<AllocaInst>(DDI->getAddress()); // If this is an alloca for a scalar variable, insert a dbg.value // at each load and store to the alloca and erase the dbg.declare. - // The dbg.values allow tracking a variable even if it is not - // stored on the stack, while the dbg.declare can only describe - // the stack slot (and at a lexical-scope granularity). Later - // passes will attempt to elide the stack slot. if (AI && !AI->isArrayAllocation()) { + + // We only remove the dbg.declare intrinsic if all uses are + // converted to dbg.value intrinsics. + bool RemoveDDI = true; for (User *U : AI->users()) if (StoreInst *SI = dyn_cast<StoreInst>(U)) ConvertDebugDeclareToDebugValue(DDI, SI, DIB); else if (LoadInst *LI = dyn_cast<LoadInst>(U)) ConvertDebugDeclareToDebugValue(DDI, LI, DIB); - else if (Instruction *I = dyn_cast<Instruction>(U)) { - // This is a call by-value or some other instruction that - // takes a pointer to the variable. Insert a *value* - // intrinsic that describes the alloca. - auto DbgVal = - DIB.insertDbgValueIntrinsic(AI, 0, - DIVariable(DDI->getVariable()), I); - DbgVal->setDebugLoc(I->getDebugLoc()); - } - DDI->eraseFromParent(); + else + RemoveDDI = false; + if (RemoveDDI) + DDI->eraseFromParent(); } } return true; |