reapply r98035:

Now that setStartLabel takes an MCSymbol, we can de-ID'ize
beginScope and RecordSourceLine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98047 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2010-03-09 04:54:43 +00:00
parent 6c7dfc0463
commit c608784dc8
5 changed files with 29 additions and 28 deletions

View File

@ -35,6 +35,7 @@ class Value;
class Module; class Module;
class MDNode; class MDNode;
class MCAsmInfo; class MCAsmInfo;
class MCSymbol;
class raw_ostream; class raw_ostream;
class Instruction; class Instruction;
class DICompileUnit; class DICompileUnit;
@ -82,10 +83,10 @@ public:
/// ///
void EndFunction(const MachineFunction *MF); void EndFunction(const MachineFunction *MF);
/// RecordSourceLine - Register a source line with debug info. Returns a /// RecordSourceLine - Register a source line with debug info. Returns the
/// unique label ID used to generate a label and provide correspondence to /// unique label that was emitted and which provides correspondence to
/// the source line list. /// the source line list.
unsigned RecordSourceLine(unsigned Line, unsigned Col, MDNode *Scope); MCSymbol *RecordSourceLine(unsigned Line, unsigned Col, MDNode *Scope);
/// getRecordSourceLineCount - Count source lines. /// getRecordSourceLineCount - Count source lines.
unsigned getRecordSourceLineCount(); unsigned getRecordSourceLineCount();
@ -94,7 +95,7 @@ public:
/// be emitted. /// be emitted.
bool ShouldEmitDwarfDebug() const; bool ShouldEmitDwarfDebug() const;
void BeginScope(const MachineInstr *MI, unsigned Label); void BeginScope(const MachineInstr *MI, MCSymbol *Label);
void EndScope(const MachineInstr *MI); void EndScope(const MachineInstr *MI);
}; };

View File

@ -1319,10 +1319,9 @@ void AsmPrinter::processDebugLoc(const MachineInstr *MI,
// After printing instruction // After printing instruction
DW->EndScope(MI); DW->EndScope(MI);
} else if (CurDLT.getNode() != PrevDLT) { } else if (CurDLT.getNode() != PrevDLT) {
unsigned L = DW->RecordSourceLine(CurDLT.getLineNumber(), MCSymbol *L = DW->RecordSourceLine(CurDLT.getLineNumber(),
CurDLT.getColumnNumber(), CurDLT.getColumnNumber(),
CurDLT.getScope().getNode()); CurDLT.getScope().getNode());
printLabel(L);
DW->BeginScope(MI, L); DW->BeginScope(MI, L);
PrevDLT = CurDLT.getNode(); PrevDLT = CurDLT.getNode();
} }

View File

@ -1951,14 +1951,14 @@ void DwarfDebug::collectVariableInfo() {
} }
/// beginScope - Process beginning of a scope starting at Label. /// beginScope - Process beginning of a scope starting at Label.
void DwarfDebug::beginScope(const MachineInstr *MI, unsigned Label) { void DwarfDebug::beginScope(const MachineInstr *MI, MCSymbol *Label) {
InsnToDbgScopeMapTy::iterator I = DbgScopeBeginMap.find(MI); InsnToDbgScopeMapTy::iterator I = DbgScopeBeginMap.find(MI);
if (I == DbgScopeBeginMap.end()) if (I == DbgScopeBeginMap.end())
return; return;
ScopeVector &SD = I->second; ScopeVector &SD = I->second;
for (ScopeVector::iterator SDI = SD.begin(), SDE = SD.end(); for (ScopeVector::iterator SDI = SD.begin(), SDE = SD.end();
SDI != SDE; ++SDI) SDI != SDE; ++SDI)
(*SDI)->setStartLabel(getDWLabel("label", Label)); (*SDI)->setStartLabel(Label);
} }
/// endScope - Process end of a scope. /// endScope - Process end of a scope.
@ -2127,7 +2127,7 @@ void DwarfDebug::beginFunction(const MachineFunction *MF) {
Col = DLT.getColumnNumber(); Col = DLT.getColumnNumber();
} }
Asm->printLabel(recordSourceLine(Line, Col, DLT.getScope().getNode())); recordSourceLine(Line, Col, DLT.getScope().getNode());
} }
if (TimePassesIsEnabled) if (TimePassesIsEnabled)
DebugTimer->stopTimer(); DebugTimer->stopTimer();
@ -2183,11 +2183,10 @@ void DwarfDebug::endFunction(const MachineFunction *MF) {
DebugTimer->stopTimer(); DebugTimer->stopTimer();
} }
/// recordSourceLine - Records location information and associates it with a /// recordSourceLine - Register a source line with debug info. Returns the
/// label. Returns a unique label ID used to generate a label and provide /// unique label that was emitted and which provides correspondence to
/// correspondence to the source line list. /// the source line list.
unsigned DwarfDebug::recordSourceLine(unsigned Line, unsigned Col, MCSymbol *DwarfDebug::recordSourceLine(unsigned Line, unsigned Col, MDNode *S) {
MDNode *S) {
if (!MMI) if (!MMI)
return 0; return 0;
@ -2220,7 +2219,9 @@ unsigned DwarfDebug::recordSourceLine(unsigned Line, unsigned Col,
if (TimePassesIsEnabled) if (TimePassesIsEnabled)
DebugTimer->stopTimer(); DebugTimer->stopTimer();
return ID; MCSymbol *Label = getDWLabel("label", ID);
Asm->OutStreamer.EmitLabel(Label);
return Label;
} }
/// getOrCreateSourceID - Public version of GetOrCreateSourceID. This can be /// getOrCreateSourceID - Public version of GetOrCreateSourceID. This can be

View File

@ -512,10 +512,10 @@ public:
/// ///
void endFunction(const MachineFunction *MF); void endFunction(const MachineFunction *MF);
/// recordSourceLine - Records location information and associates it with a /// recordSourceLine - Register a source line with debug info. Returns the
/// label. Returns a unique label ID used to generate a label and provide /// unique label that was emitted and which provides correspondence to
/// correspondence to the source line list. /// the source line list.
unsigned recordSourceLine(unsigned Line, unsigned Col, MDNode *Scope); MCSymbol *recordSourceLine(unsigned Line, unsigned Col, MDNode *Scope);
/// getSourceLineCount - Return the number of source lines in the debug /// getSourceLineCount - Return the number of source lines in the debug
/// info. /// info.
@ -539,7 +539,7 @@ public:
void collectVariableInfo(); void collectVariableInfo();
/// beginScope - Process beginning of a scope starting at Label. /// beginScope - Process beginning of a scope starting at Label.
void beginScope(const MachineInstr *MI, unsigned Label); void beginScope(const MachineInstr *MI, MCSymbol *Label);
/// endScope - Prcess end of a scope. /// endScope - Prcess end of a scope.
void endScope(const MachineInstr *MI); void endScope(const MachineInstr *MI);

View File

@ -73,10 +73,10 @@ void DwarfWriter::EndFunction(const MachineFunction *MF) {
MMI->EndFunction(); MMI->EndFunction();
} }
/// RecordSourceLine - Records location information and associates it with a /// RecordSourceLine - Register a source line with debug info. Returns the
/// label. Returns a unique label ID used to generate a label and provide /// unique label that was emitted and which provides correspondence to
/// correspondence to the source line list. /// the source line list.
unsigned DwarfWriter::RecordSourceLine(unsigned Line, unsigned Col, MCSymbol *DwarfWriter::RecordSourceLine(unsigned Line, unsigned Col,
MDNode *Scope) { MDNode *Scope) {
return DD->recordSourceLine(Line, Col, Scope); return DD->recordSourceLine(Line, Col, Scope);
} }
@ -92,7 +92,7 @@ bool DwarfWriter::ShouldEmitDwarfDebug() const {
return DD && DD->ShouldEmitDwarfDebug(); return DD && DD->ShouldEmitDwarfDebug();
} }
void DwarfWriter::BeginScope(const MachineInstr *MI, unsigned L) { void DwarfWriter::BeginScope(const MachineInstr *MI, MCSymbol *L) {
DD->beginScope(MI, L); DD->beginScope(MI, L);
} }
void DwarfWriter::EndScope(const MachineInstr *MI) { void DwarfWriter::EndScope(const MachineInstr *MI) {