[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineDebugInfo.h MachineFunction.h SelectionDAGNodes.h
Jim Laskey
jlaskey at apple.com
Fri Dec 16 14:45:43 PST 2005
Changes in directory llvm/include/llvm/CodeGen:
MachineDebugInfo.h added (r1.1)
MachineFunction.h updated: 1.55 -> 1.56
SelectionDAGNodes.h updated: 1.81 -> 1.82
---
Log message:
Added source file/line correspondence for dwarf (PowerPC only at this point.)
---
Diffs of the changes: (+96 -0)
MachineDebugInfo.h | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++
MachineFunction.h | 10 ++++++
SelectionDAGNodes.h | 6 +++
3 files changed, 96 insertions(+)
Index: llvm/include/llvm/CodeGen/MachineDebugInfo.h
diff -c /dev/null llvm/include/llvm/CodeGen/MachineDebugInfo.h:1.1
*** /dev/null Fri Dec 16 16:45:38 2005
--- llvm/include/llvm/CodeGen/MachineDebugInfo.h Fri Dec 16 16:45:28 2005
***************
*** 0 ****
--- 1,80 ----
+ //===-- llvm/CodeGen/MachineDebugInfo.h -------------------------*- C++ -*-===//
+ //
+ // The LLVM Compiler Infrastructure
+ //
+ // This file was developed by James M. Laskey and is distributed under
+ // the University of Illinois Open Source License. See LICENSE.TXT for details.
+ //
+ //===----------------------------------------------------------------------===//
+ //
+ // Collect debug information for a module. This information should be in a
+ // neutral form that can be used by different debugging schemes.
+ //
+ //===----------------------------------------------------------------------===//
+
+ #ifndef LLVM_CODEGEN_MACHINEDEBUGINFO_H
+ #define LLVM_CODEGEN_MACHINEDEBUGINFO_H
+
+ #include <string>
+ #include <map>
+ #include <vector>
+
+ namespace llvm {
+ //===----------------------------------------------------------------------===//
+ /// MachineDebugInfo - This class contains debug information specific to a
+ /// module. Queries can be made by different debugging schemes and reformated
+ /// for specific use.
+ ///
+ class MachineDebugInfo {
+ private:
+ // convenience types
+ typedef std::map<std::string, unsigned> StrIntMap;
+ typedef StrIntMap::iterator StrIntMapIter;
+
+ StrIntMap SourceMap; // Map of source file path to id
+ unsigned SourceCount; // Number of source files (used to
+ // generate id)
+
+ public:
+ // Ctor.
+ MachineDebugInfo() : SourceMap(), SourceCount(0) {}
+
+ /// RecordSource - Register a source file with debug info. Returns an id.
+ ///
+ unsigned RecordSource(std::string fname, std::string dirname) {
+ // Compose a key
+ std::string path = dirname + "/" + fname;
+ // Check if the source file is already recorded
+ StrIntMapIter SMI = SourceMap.find(path);
+ // If already there return existing id
+ if (SMI != SourceMap.end()) return SMI->second;
+ // Bump up the count
+ ++SourceCount;
+ // Record the count
+ SourceMap[path] = SourceCount;
+ // Return id
+ return SourceCount;
+ }
+
+ /// getSourceFiles - Return a vector of files. Vector index + 1 equals id.
+ ///
+ std::vector<std::string> getSourceFiles() {
+ std::vector<std::string> Sources(SourceCount);
+
+ for (StrIntMapIter SMI = SourceMap.begin(), E = SourceMap.end(); SMI != E;
+ SMI++) {
+ unsigned Index = SMI->second - 1;
+ std::string Path = SMI->first;
+ Sources[Index] = Path;
+ }
+ return Sources;
+ }
+
+ }; // End class MachineDebugInfo
+ //===----------------------------------------------------------------------===//
+
+
+
+ } // End llvm namespace
+
+ #endif
Index: llvm/include/llvm/CodeGen/MachineFunction.h
diff -u llvm/include/llvm/CodeGen/MachineFunction.h:1.55 llvm/include/llvm/CodeGen/MachineFunction.h:1.56
--- llvm/include/llvm/CodeGen/MachineFunction.h:1.55 Wed Aug 31 17:49:51 2005
+++ llvm/include/llvm/CodeGen/MachineFunction.h Fri Dec 16 16:45:28 2005
@@ -18,6 +18,7 @@
#ifndef LLVM_CODEGEN_MACHINEFUNCTION_H
#define LLVM_CODEGEN_MACHINEFUNCTION_H
+#include "llvm/CodeGen/MachineDebugInfo.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/Support/Annotation.h"
@@ -112,6 +113,10 @@
/// stored in the second element.
std::vector<std::pair<unsigned, unsigned> > LiveIns;
std::vector<unsigned> LiveOuts;
+
+ /// DebugInfo - Keep track of debug information for the function.
+ ///
+ MachineDebugInfo DebugInfo;
public:
MachineFunction(const Function *Fn, const TargetMachine &TM);
@@ -212,6 +217,11 @@
const MachineBasicBlock *getLastBlock() const {
return MBBNumbering.back();
}
+
+ /// getDebugInfo - Returns the DebugInfo.
+ MachineDebugInfo &getDebugInfo() {
+ return DebugInfo;
+ }
/// print - Print out the MachineFunction in a format suitable for debugging
/// to the specified stream.
Index: llvm/include/llvm/CodeGen/SelectionDAGNodes.h
diff -u llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.81 llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.82
--- llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.81 Tue Dec 6 00:18:55 2005
+++ llvm/include/llvm/CodeGen/SelectionDAGNodes.h Fri Dec 16 16:45:28 2005
@@ -352,6 +352,12 @@
// as output.
LOCATION,
+ // DEBUG_LOC - This node is used to represent source line information
+ // embedded in the code. It takes token chain as input, then a line number,
+ // then a column then a file id (provided by MachineDebugInfo. It produces
+ // a token chain as output.
+ DEBUG_LOC,
+
// BUILTIN_OP_END - This must be the last enum value in this list.
BUILTIN_OP_END,
};
More information about the llvm-commits
mailing list