Reapply r207135 without modifications.

Debug info: Let dbg.values inserted by LowerDbgDeclare inherit the location
of the dbg.value. This gets rid of tons of redundant variable DIEs in
subscopes.

rdar://problem/14874886, rdar://problem/16679936

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207236 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Adrian Prantl
2014-04-25 17:01:04 +00:00
parent 7e96d88347
commit a067162dfa
2 changed files with 86 additions and 17 deletions

View File

@ -995,14 +995,7 @@ bool llvm::ConvertDebugDeclareToDebugValue(DbgDeclareInst *DDI,
DbgVal = Builder.insertDbgValueIntrinsic(ExtendedArg, 0, DIVar, SI);
else
DbgVal = Builder.insertDbgValueIntrinsic(SI->getOperand(0), 0, DIVar, SI);
// Propagate any debug metadata from the store onto the dbg.value.
DebugLoc SIDL = SI->getDebugLoc();
if (!SIDL.isUnknown())
DbgVal->setDebugLoc(SIDL);
// Otherwise propagate debug metadata from dbg.declare.
else
DbgVal->setDebugLoc(DDI->getDebugLoc());
DbgVal->setDebugLoc(DDI->getDebugLoc());
return true;
}
@ -1022,14 +1015,7 @@ bool llvm::ConvertDebugDeclareToDebugValue(DbgDeclareInst *DDI,
Instruction *DbgVal =
Builder.insertDbgValueIntrinsic(LI->getOperand(0), 0,
DIVar, LI);
// Propagate any debug metadata from the store onto the dbg.value.
DebugLoc LIDL = LI->getDebugLoc();
if (!LIDL.isUnknown())
DbgVal->setDebugLoc(LIDL);
// Otherwise propagate debug metadata from dbg.declare.
else
DbgVal->setDebugLoc(DDI->getDebugLoc());
DbgVal->setDebugLoc(DDI->getDebugLoc());
return true;
}
@ -1068,7 +1054,7 @@ bool llvm::LowerDbgDeclare(Function &F) {
auto DbgVal =
DIB.insertDbgValueIntrinsic(AI, 0,
DIVariable(DDI->getVariable()), I);
DbgVal->setDebugLoc(I->getDebugLoc());
DbgVal->setDebugLoc(DDI->getDebugLoc());
}
DDI->eraseFromParent();
}