X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FCodeGen%2FMachineModuleInfo.h;h=b7b90198b1681c004e78eb2c00b4693d2e1ee6f3;hb=75549f4444cbb14e73c8f10ab90ec36c60413e8e;hp=1ea01b4367656ca98862451b90ec10d7a4e26a21;hpb=f18545550e1cfbe3f47afb6a9a58405416258e3b;p=oota-llvm.git diff --git a/include/llvm/CodeGen/MachineModuleInfo.h b/include/llvm/CodeGen/MachineModuleInfo.h index 1ea01b43676..b7b90198b16 100644 --- a/include/llvm/CodeGen/MachineModuleInfo.h +++ b/include/llvm/CodeGen/MachineModuleInfo.h @@ -48,6 +48,7 @@ namespace llvm { //===----------------------------------------------------------------------===// // Forward declarations. class Constant; +class MDNode; class GlobalVariable; class MachineBasicBlock; class MachineFunction; @@ -60,7 +61,8 @@ class StructType; /// to hold private target-specific information for each Module. Objects of /// type are accessed/created with MMI::getInfo and destroyed when the /// MachineModuleInfo is destroyed. -struct MachineModuleInfoImpl { +class MachineModuleInfoImpl { +public: virtual ~MachineModuleInfoImpl(); }; @@ -141,9 +143,13 @@ class MachineModuleInfo : public ImmutablePass { /// DbgInfoAvailable - True if debugging information is available /// in this module. bool DbgInfoAvailable; + public: static char ID; // Pass identification, replacement for typeid + typedef DenseMap > VariableDbgInfoMapTy; + VariableDbgInfoMapTy VariableDbgInfo; + MachineModuleInfo(); ~MachineModuleInfo(); @@ -152,7 +158,7 @@ public: /// BeginFunction - Begin gathering function meta information. /// - void BeginFunction(MachineFunction *MF); + void BeginFunction(MachineFunction *) {} /// EndFunction - Discard function meta information. /// @@ -162,17 +168,17 @@ public: /// backends that would like to do so. /// template - Ty *getObjFileInfo() { + Ty &getObjFileInfo() { if (ObjFileMMI == 0) ObjFileMMI = new Ty(*this); assert((void*)dynamic_cast(ObjFileMMI) == (void*)ObjFileMMI && "Invalid concrete type or multiple inheritence for getInfo"); - return static_cast(ObjFileMMI); + return *static_cast(ObjFileMMI); } template - const Ty *getObjFileInfo() const { + const Ty &getObjFileInfo() const { return const_cast(this)->getObjFileInfo(); } @@ -324,6 +330,15 @@ public: /// of one is required to emit exception handling info. Function *getPersonality() const; + /// setVariableDbgInfo - Collect information used to emit debugging information + /// of a variable. + void setVariableDbgInfo(MDNode *N, MDNode *L, unsigned S) { + if (N && L) + VariableDbgInfo[N] = std::make_pair(L, S); + } + + VariableDbgInfoMapTy &getVariableDbgInfo() { return VariableDbgInfo; } + }; // End class MachineModuleInfo } // End llvm namespace