[llvm-commits] [llvm] r61928 - /llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
Devang Patel
dpatel at apple.com
Thu Jan 8 09:19:22 PST 2009
Author: dpatel
Date: Thu Jan 8 11:19:22 2009
New Revision: 61928
URL: http://llvm.org/viewvc/llvm-project?rev=61928&view=rev
Log:
Add DebugInfo based APIs to record source line info.
Modified:
llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp?rev=61928&r1=61927&r2=61928&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp Thu Jan 8 11:19:22 2009
@@ -1166,6 +1166,26 @@
};
//===----------------------------------------------------------------------===//
+/// SourceLineInfo - This class is used to record source line correspondence.
+///
+class SrcLineInfo {
+ unsigned Line; // Source line number.
+ unsigned Column; // Source column.
+ unsigned SourceID; // Source ID number.
+ unsigned LabelID; // Label in code ID number.
+public:
+ SrcLineInfo(unsigned L, unsigned C, unsigned S, unsigned I)
+ : Line(L), Column(C), SourceID(S), LabelID(I) {}
+
+ // Accessors
+ unsigned getLine() const { return Line; }
+ unsigned getColumn() const { return Column; }
+ unsigned getSourceID() const { return SourceID; }
+ unsigned getLabelID() const { return LabelID; }
+};
+
+
+//===----------------------------------------------------------------------===//
/// SrcFileInfo - This class is used to track source information.
///
class SrcFileInfo {
@@ -1259,7 +1279,7 @@
/// CompileUnits - All the compile units involved in this build. The index
/// of each entry in this vector corresponds to the sources in MMI.
std::vector<CompileUnit *> CompileUnits;
- DenseMap<GlobalVariable *, CompileUnit *> DW_CUs;
+ DenseMap<Value *, CompileUnit *> DW_CUs;
/// AbbreviationsSet - Used to uniquely define abbreviations.
///
@@ -1277,6 +1297,9 @@
// SourceFiles - Uniquing vector for source files.
UniqueVector<SrcFileInfo> SrcFiles;
+ // Lines - List of of source line correspondence.
+ std::vector<SrcLineInfo> Lines;
+
FoldingSet<DIEValue> ValuesSet;
/// Values - A list of all the unique values in use.
@@ -2539,6 +2562,23 @@
return VariableDie;
}
+ unsigned RecordSourceLine(Value *V, unsigned Line, unsigned Col) {
+ CompileUnit *Unit = DW_CUs[V];
+ assert (Unit && "Unable to find CompileUnit");
+ unsigned ID = NextLabelID();
+ Lines.push_back(SrcLineInfo(Line, Col, Unit->getID(), ID));
+ return ID;
+ }
+
+ unsigned getRecordSourceLineCount() {
+ return Lines.size();
+ }
+
+ unsigned RecordSource(const std::string &Directory,
+ const std::string &File) {
+ unsigned DID = Directories.insert(Directory);
+ return SrcFiles.insert(SrcFileInfo(DID,File));
+ }
/// RecordRegionStart - Indicate the start of a region.
///
@@ -3447,9 +3487,8 @@
for (std::vector<GlobalVariable *>::iterator RI = Result.begin(),
RE = Result.end(); RI != RE; ++RI) {
DICompileUnit *DIUnit = new DICompileUnit(*RI);
- unsigned DID = Directories.insert(DIUnit->getDirectory());
- unsigned ID = SrcFiles.insert(SrcFileInfo(DID,
- DIUnit->getFilename()));
+ unsigned ID = RecordSource(DIUnit->getDirectory(),
+ DIUnit->getFilename());
DIE *Die = new DIE(DW_TAG_compile_unit);
AddSectionOffset(Die, DW_AT_stmt_list, DW_FORM_data4,
More information about the llvm-commits
mailing list