[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