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, }; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits