mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-26 23:32:58 +00:00
Revert 99772.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99778 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
bed993d8a4
commit
de9b1efbe5
@ -47,6 +47,7 @@ namespace llvm {
|
||||
class MCSection;
|
||||
class MCStreamer;
|
||||
class MCSymbol;
|
||||
class MDNode;
|
||||
class DwarfWriter;
|
||||
class Mangler;
|
||||
class MCAsmInfo;
|
||||
@ -137,6 +138,9 @@ namespace llvm {
|
||||
mutable unsigned Counter;
|
||||
mutable unsigned SetCounter;
|
||||
|
||||
// Private state for processDebugLoc()
|
||||
mutable const MDNode *PrevDLT;
|
||||
|
||||
protected:
|
||||
explicit AsmPrinter(formatted_raw_ostream &o, TargetMachine &TM,
|
||||
MCStreamer &Streamer);
|
||||
|
@ -83,11 +83,19 @@ public:
|
||||
///
|
||||
void EndFunction(const MachineFunction *MF);
|
||||
|
||||
/// RecordSourceLine - Register a source line with debug info. Returns the
|
||||
/// unique label that was emitted and which provides correspondence to
|
||||
/// the source line list.
|
||||
MCSymbol *RecordSourceLine(unsigned Line, unsigned Col, MDNode *Scope);
|
||||
|
||||
/// getRecordSourceLineCount - Count source lines.
|
||||
unsigned getRecordSourceLineCount();
|
||||
|
||||
/// ShouldEmitDwarfDebug - Returns true if Dwarf debugging declarations should
|
||||
/// be emitted.
|
||||
bool ShouldEmitDwarfDebug() const;
|
||||
|
||||
void BeginScope(const MachineInstr *MI);
|
||||
void BeginScope(const MachineInstr *MI, MCSymbol *Label);
|
||||
void EndScope(const MachineInstr *MI);
|
||||
};
|
||||
|
||||
|
@ -62,7 +62,7 @@ AsmPrinter::AsmPrinter(formatted_raw_ostream &o, TargetMachine &tm,
|
||||
TM(tm), MAI(tm.getMCAsmInfo()), TRI(tm.getRegisterInfo()),
|
||||
OutContext(Streamer.getContext()),
|
||||
OutStreamer(Streamer),
|
||||
LastMI(0), LastFn(0), Counter(~0U), SetCounter(0) {
|
||||
LastMI(0), LastFn(0), Counter(~0U), SetCounter(0), PrevDLT(NULL) {
|
||||
DW = 0; MMI = 0;
|
||||
VerboseAsm = Streamer.isVerboseAsm();
|
||||
}
|
||||
@ -1337,12 +1337,25 @@ void AsmPrinter::processDebugLoc(const MachineInstr *MI,
|
||||
if (!MAI || !DW || !MAI->doesSupportDebugInformation()
|
||||
|| !DW->ShouldEmitDwarfDebug())
|
||||
return;
|
||||
if (MI->getOpcode() == TargetOpcode::DBG_VALUE)
|
||||
return;
|
||||
DebugLoc DL = MI->getDebugLoc();
|
||||
if (DL.isUnknown())
|
||||
return;
|
||||
DILocation CurDLT = MF->getDILocation(DL);
|
||||
if (!CurDLT.getScope().Verify())
|
||||
return;
|
||||
|
||||
if (!BeforePrintingInsn)
|
||||
if (!BeforePrintingInsn) {
|
||||
// After printing instruction
|
||||
DW->EndScope(MI);
|
||||
else
|
||||
DW->BeginScope(MI);
|
||||
} else if (CurDLT.getNode() != PrevDLT) {
|
||||
MCSymbol *L = DW->RecordSourceLine(CurDLT.getLineNumber(),
|
||||
CurDLT.getColumnNumber(),
|
||||
CurDLT.getScope().getNode());
|
||||
DW->BeginScope(MI, L);
|
||||
PrevDLT = CurDLT.getNode();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -296,7 +296,7 @@ DwarfDebug::DwarfDebug(raw_ostream &OS, AsmPrinter *A, const MCAsmInfo *T)
|
||||
: DwarfPrinter(OS, A, T), ModuleCU(0),
|
||||
AbbreviationsSet(InitAbbreviationsSetSize), Abbreviations(),
|
||||
DIEValues(), SectionSourceLines(), didInitial(false), shouldEmit(false),
|
||||
CurrentFnDbgScope(0), PrevDILoc(0), DebugTimer(0) {
|
||||
CurrentFnDbgScope(0), DebugTimer(0) {
|
||||
NextStringPoolNumber = 0;
|
||||
if (TimePassesIsEnabled)
|
||||
DebugTimer = new Timer("Dwarf Debug Writer");
|
||||
@ -2036,49 +2036,19 @@ void DwarfDebug::collectVariableInfo() {
|
||||
}
|
||||
}
|
||||
|
||||
/// beginScope - Process beginning of a scope.
|
||||
void DwarfDebug::beginScope(const MachineInstr *MI) {
|
||||
if (MI->getOpcode() == TargetOpcode::DBG_VALUE)
|
||||
return;
|
||||
|
||||
DebugLoc DL = MI->getDebugLoc();
|
||||
if (DL.isUnknown())
|
||||
return;
|
||||
DILocation DILoc = MF->getDILocation(DL);
|
||||
if (!DILoc.getScope().Verify())
|
||||
return;
|
||||
|
||||
if(DILoc.getNode() == PrevDILoc)
|
||||
return;
|
||||
|
||||
/// beginScope - Process beginning of a scope starting at Label.
|
||||
void DwarfDebug::beginScope(const MachineInstr *MI, MCSymbol *Label) {
|
||||
InsnToDbgScopeMapTy::iterator I = DbgScopeBeginMap.find(MI);
|
||||
if (I == DbgScopeBeginMap.end())
|
||||
return;
|
||||
|
||||
MCSymbol *Label = recordSourceLine(DILoc.getLineNumber(),
|
||||
DILoc.getColumnNumber(),
|
||||
DILoc.getScope().getNode());
|
||||
|
||||
ScopeVector &SD = I->second;
|
||||
for (ScopeVector::iterator SDI = SD.begin(), SDE = SD.end();
|
||||
SDI != SDE; ++SDI)
|
||||
(*SDI)->setStartLabel(Label);
|
||||
|
||||
PrevDILoc = DILoc.getNode();
|
||||
}
|
||||
|
||||
/// endScope - Process end of a scope.
|
||||
void DwarfDebug::endScope(const MachineInstr *MI) {
|
||||
if (MI->getOpcode() == TargetOpcode::DBG_VALUE)
|
||||
return;
|
||||
|
||||
DebugLoc DL = MI->getDebugLoc();
|
||||
if (DL.isUnknown())
|
||||
return;
|
||||
DILocation DILoc = MF->getDILocation(DL);
|
||||
if (!DILoc.getScope().Verify())
|
||||
return;
|
||||
|
||||
InsnToDbgScopeMapTy::iterator I = DbgScopeEndMap.find(MI);
|
||||
if (I == DbgScopeEndMap.end())
|
||||
return;
|
||||
|
@ -184,10 +184,6 @@ class DwarfDebug : public DwarfPrinter {
|
||||
/// function.
|
||||
DenseMap<CompileUnit *, unsigned> CompileUnitOffsets;
|
||||
|
||||
/// Previous instruction's location information. This is used to determine
|
||||
/// label location to indicate scope boundries in dwarf debug info.
|
||||
mutable const MDNode *PrevDILoc;
|
||||
|
||||
/// DebugTimer - Timer for the Dwarf debug writer.
|
||||
Timer *DebugTimer;
|
||||
|
||||
@ -546,8 +542,8 @@ public:
|
||||
/// collectVariableInfo - Populate DbgScope entries with variables' info.
|
||||
void collectVariableInfo();
|
||||
|
||||
/// beginScope - Process beginning of a scope.
|
||||
void beginScope(const MachineInstr *MI);
|
||||
/// beginScope - Process beginning of a scope starting at Label.
|
||||
void beginScope(const MachineInstr *MI, MCSymbol *Label);
|
||||
|
||||
/// endScope - Prcess end of a scope.
|
||||
void endScope(const MachineInstr *MI);
|
||||
|
@ -73,14 +73,27 @@ void DwarfWriter::EndFunction(const MachineFunction *MF) {
|
||||
MMI->EndFunction();
|
||||
}
|
||||
|
||||
/// RecordSourceLine - Register a source line with debug info. Returns the
|
||||
/// unique label that was emitted and which provides correspondence to
|
||||
/// the source line list.
|
||||
MCSymbol *DwarfWriter::RecordSourceLine(unsigned Line, unsigned Col,
|
||||
MDNode *Scope) {
|
||||
return DD->recordSourceLine(Line, Col, Scope);
|
||||
}
|
||||
|
||||
/// getRecordSourceLineCount - Count source lines.
|
||||
unsigned DwarfWriter::getRecordSourceLineCount() {
|
||||
return DD->getSourceLineCount();
|
||||
}
|
||||
|
||||
/// ShouldEmitDwarfDebug - Returns true if Dwarf debugging declarations should
|
||||
/// be emitted.
|
||||
bool DwarfWriter::ShouldEmitDwarfDebug() const {
|
||||
return DD && DD->ShouldEmitDwarfDebug();
|
||||
}
|
||||
|
||||
void DwarfWriter::BeginScope(const MachineInstr *MI) {
|
||||
DD->beginScope(MI);
|
||||
void DwarfWriter::BeginScope(const MachineInstr *MI, MCSymbol *L) {
|
||||
DD->beginScope(MI, L);
|
||||
}
|
||||
void DwarfWriter::EndScope(const MachineInstr *MI) {
|
||||
DD->endScope(MI);
|
||||
|
Loading…
x
Reference in New Issue
Block a user