diff options
author | Adrian Prantl <aprantl@apple.com> | 2014-04-25 00:04:49 +0000 |
---|---|---|
committer | Adrian Prantl <aprantl@apple.com> | 2014-04-25 00:04:49 +0000 |
commit | ab6ab3c33363452bc53c119dc36ad650f6c267d7 (patch) | |
tree | 3640ac2fe18a5ed68f4be3ef6a07d21e7984af40 /lib/Transforms | |
parent | 45588a02fba84e6532dcfa10cfaa69ad2f848c9d (diff) | |
download | llvm-ab6ab3c33363452bc53c119dc36ad650f6c267d7.tar.gz llvm-ab6ab3c33363452bc53c119dc36ad650f6c267d7.tar.bz2 llvm-ab6ab3c33363452bc53c119dc36ad650f6c267d7.tar.xz |
Revert "Debug info for optimized code: Support variables that are on the stack and"
This reverts commit 207130 for buildbot breakage.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207162 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms')
-rw-r--r-- | lib/Transforms/Utils/Local.cpp | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/lib/Transforms/Utils/Local.cpp b/lib/Transforms/Utils/Local.cpp index e2ba0473fd..abd73eb5c9 100644 --- a/lib/Transforms/Utils/Local.cpp +++ b/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; |