diff options
author | Adrian Prantl <aprantl@apple.com> | 2014-04-25 18:18:09 +0000 |
---|---|---|
committer | Adrian Prantl <aprantl@apple.com> | 2014-04-25 18:18:09 +0000 |
commit | 25c74de50059076d87fda6fe01cb53aea9a3c302 (patch) | |
tree | 4b43428d076830430cd0f4dbc7ff1b6fe458269c /lib/Transforms | |
parent | ad56833808a0db1a4666d6f2f257690d94b94cbe (diff) | |
download | llvm-25c74de50059076d87fda6fe01cb53aea9a3c302.tar.gz llvm-25c74de50059076d87fda6fe01cb53aea9a3c302.tar.bz2 llvm-25c74de50059076d87fda6fe01cb53aea9a3c302.tar.xz |
Revert "This reapplies r207130 with an additional testcase+and a missing check for"
This reverts commit 207235 to investigate msan buildbot breakage.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207250 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 773099f9ab..552f7158d8 100644 --- a/lib/Transforms/Utils/Local.cpp +++ b/lib/Transforms/Utils/Local.cpp @@ -1037,26 +1037,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(DDI->getDebugLoc()); - } - DDI->eraseFromParent(); + else + RemoveDDI = false; + if (RemoveDDI) + DDI->eraseFromParent(); } } return true; |