Recommit r288212: Emit 'no line' information for interesting 'orphan' instructions.

The LLDB tests are now ready for this patch.

DWARF specifies that "line 0" really means "no appropriate source
location" in the line table.  Use this for branch targets and some
other cases that have no specified source location, to prevent
inheriting unfortunate line numbers from physically preceding
instructions (which might be from completely unrelated source).

Differential Revision: http://reviews.llvm.org/D24180

llvm-svn: 288283
This commit is contained in:
Paul Robinson
2016-11-30 22:49:55 +00:00
parent ba6a9a06fd
commit 37a13ddb4b
6 changed files with 142 additions and 20 deletions

View File

@@ -201,8 +201,10 @@ void DebugHandlerBase::endInstruction() {
assert(CurMI != nullptr);
// Don't create a new label after DBG_VALUE instructions.
// They don't generate code.
if (!CurMI->isDebugValue())
if (!CurMI->isDebugValue()) {
PrevLabel = nullptr;
PrevInstBB = CurMI->getParent();
}
DenseMap<const MachineInstr *, MCSymbol *>::iterator I =
LabelsAfterInsn.find(CurMI);