mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
DwarfDebug: Check for null DebugLocs
`DL` might be null, so check for that before using accessors. A WIP patch to make `DIDescriptors` more strict fails otherwise. As a bonus, I think the logic is easier to follow now (despite the extra nesting depth). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232836 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d94d5bbbf9
commit
c128839d6c
@ -970,23 +970,25 @@ void DwarfDebug::beginInstruction(const MachineInstr *MI) {
|
||||
// Check if source location changes, but ignore DBG_VALUE locations.
|
||||
if (!MI->isDebugValue()) {
|
||||
DebugLoc DL = MI->getDebugLoc();
|
||||
if (DL != PrevInstLoc && (!DL.isUnknown() || UnknownLocations)) {
|
||||
unsigned Flags = 0;
|
||||
PrevInstLoc = DL;
|
||||
if (DL == PrologEndLoc) {
|
||||
Flags |= DWARF2_FLAG_PROLOGUE_END;
|
||||
PrologEndLoc = DebugLoc();
|
||||
Flags |= DWARF2_FLAG_IS_STMT;
|
||||
}
|
||||
if (DL.getLine() !=
|
||||
Asm->OutStreamer.getContext().getCurrentDwarfLoc().getLine())
|
||||
Flags |= DWARF2_FLAG_IS_STMT;
|
||||
|
||||
if (DL != PrevInstLoc) {
|
||||
if (!DL.isUnknown()) {
|
||||
unsigned Flags = 0;
|
||||
PrevInstLoc = DL;
|
||||
if (DL == PrologEndLoc) {
|
||||
Flags |= DWARF2_FLAG_PROLOGUE_END;
|
||||
PrologEndLoc = DebugLoc();
|
||||
Flags |= DWARF2_FLAG_IS_STMT;
|
||||
}
|
||||
if (DL.getLine() !=
|
||||
Asm->OutStreamer.getContext().getCurrentDwarfLoc().getLine())
|
||||
Flags |= DWARF2_FLAG_IS_STMT;
|
||||
|
||||
const MDNode *Scope = DL.getScope(Asm->MF->getFunction()->getContext());
|
||||
recordSourceLine(DL.getLine(), DL.getCol(), Scope, Flags);
|
||||
} else
|
||||
} else if (UnknownLocations) {
|
||||
PrevInstLoc = DL;
|
||||
recordSourceLine(0, 0, nullptr, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user