X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FDebugInfo.h;h=2efc730f09d7262575ad74ff5bc0f65b88b6d5d5;hb=0856d3d9712c9fc515f014102e9f03f389555e75;hp=0911ec88b8b459075443fa94ef3943ecad8b5227;hpb=d2b82e9bb37699c7571558aa5d35e00f8030028f;p=oota-llvm.git diff --git a/include/llvm/DebugInfo.h b/include/llvm/DebugInfo.h index 0911ec88b8b..2efc730f09d 100644 --- a/include/llvm/DebugInfo.h +++ b/include/llvm/DebugInfo.h @@ -89,14 +89,7 @@ namespace llvm { void replaceFunctionField(unsigned Elt, Function *F); public: - explicit DIDescriptor() : DbgNode(0) {} - explicit DIDescriptor(const MDNode *N) : DbgNode(N) {} - explicit DIDescriptor(const DIFile F); - explicit DIDescriptor(const DISubprogram F); - explicit DIDescriptor(const DILexicalBlockFile F); - explicit DIDescriptor(const DILexicalBlock F); - explicit DIDescriptor(const DIVariable F); - explicit DIDescriptor(const DIType F); + explicit DIDescriptor(const MDNode *N = 0) : DbgNode(N) {} bool Verify() const; @@ -117,7 +110,7 @@ namespace llvm { return !operator==(Other); } - unsigned getTag() const { + uint16_t getTag() const { return getUnsignedField(0) & ~LLVMDebugVersionMask; } @@ -136,7 +129,6 @@ namespace llvm { bool isSubrange() const; bool isEnumerator() const; bool isType() const; - bool isGlobal() const; bool isUnspecifiedParameter() const; bool isTemplateTypeParameter() const; bool isTemplateValueParameter() const; @@ -165,8 +157,7 @@ namespace llvm { /// DIArray - This descriptor holds an array of descriptors. class DIArray : public DIDescriptor { public: - explicit DIArray(const MDNode *N = 0) - : DIDescriptor(N) {} + explicit DIArray(const MDNode *N = 0) : DIDescriptor(N) {} unsigned getNumElements() const; DIDescriptor getElement(unsigned Idx) const { @@ -196,6 +187,9 @@ namespace llvm { public: explicit DIScope(const MDNode *N = 0) : DIDescriptor (N) {} + /// Gets the parent scope for this scope node or returns a + /// default constructed scope. + DIScope getContext() const; StringRef getFilename() const; StringRef getDirectory() const; }; @@ -207,14 +201,12 @@ namespace llvm { protected: friend class DIDescriptor; void printInternal(raw_ostream &OS) const; - // This ctor is used when the Tag has already been validated by a derived - // ctor. - DIType(const MDNode *N, bool, bool) : DIScope(N) {} + public: + DIType(const MDNode *N = 0) : DIScope(N) {} + /// Verify - Verify that a type descriptor is well formed. bool Verify() const; - explicit DIType(const MDNode *N); - explicit DIType() {} DIScope getContext() const { return getFieldAs(2); } StringRef getName() const { return getStringField(3); } @@ -289,12 +281,9 @@ namespace llvm { class DIDerivedType : public DIType { friend class DIDescriptor; void printInternal(raw_ostream &OS) const; - protected: - explicit DIDerivedType(const MDNode *N, bool, bool) - : DIType(N, true, true) {} + public: - explicit DIDerivedType(const MDNode *N = 0) - : DIType(N, true, true) {} + explicit DIDerivedType(const MDNode *N = 0) : DIType(N) {} DIType getTypeDerivedFrom() const { return getFieldAs(9); } @@ -330,14 +319,11 @@ namespace llvm { friend class DIDescriptor; void printInternal(raw_ostream &OS) const; public: - explicit DICompositeType(const MDNode *N = 0) - : DIDerivedType(N, true, true) { - if (N && !isCompositeType()) - DbgNode = 0; - } + explicit DICompositeType(const MDNode *N = 0) : DIDerivedType(N) {} DIArray getTypeArray() const { return getFieldAs(10); } void setTypeArray(DIArray Elements, DIArray TParams = DIArray()); + void addMember(DIDescriptor D); unsigned getRunTimeLang() const { return getUnsignedField(11); } DICompositeType getContainingType() const { return getFieldAs(12); @@ -353,10 +339,7 @@ namespace llvm { class DIFile : public DIScope { friend class DIDescriptor; public: - explicit DIFile(const MDNode *N = 0) : DIScope(N) { - if (DbgNode && !isFile()) - DbgNode = 0; - } + explicit DIFile(const MDNode *N = 0) : DIScope(N) {} MDNode *getFileNode() const; bool Verify() const; }; @@ -580,8 +563,7 @@ namespace llvm { friend class DIDescriptor; void printInternal(raw_ostream &OS) const; public: - explicit DIVariable(const MDNode *N = 0) - : DIDescriptor(N) {} + explicit DIVariable(const MDNode *N = 0) : DIDescriptor(N) {} DIScope getContext() const { return getFieldAs(1); } StringRef getName() const { return getStringField(2); } @@ -736,10 +718,12 @@ namespace llvm { /// cleanseInlinedVariable - Remove inlined scope from the variable. DIVariable cleanseInlinedVariable(MDNode *DV, LLVMContext &VMContext); - /// DebugInfoFinder tries to list all debug info MDNodes in a module. To + /// DebugInfoFinder tries to list all debug info MDNodes used in a module. To /// list debug info MDNodes used by an instruction, DebugInfoFinder uses - /// processDeclare and processValue. processModule will go through - /// all DICompileUnits and list debug info MDNodes used by the CUs. + /// processDeclare, processValue and processLocation to handle DbgDeclareInst, + /// DbgValueInst and DbgLoc attached to instructions. processModule will go + /// through all DICompileUnits in llvm.dbg.cu and list debug info MDNodes + /// used by the CUs. class DebugInfoFinder { public: /// processModule - Process entire module and collect debug info @@ -750,6 +734,8 @@ namespace llvm { void processDeclare(const DbgDeclareInst *DDI); /// Process DbgValueInst. void processValue(const DbgValueInst *DVI); + /// processLocation - Process DILocation. + void processLocation(DILocation Loc); /// Clear all lists. void reset(); @@ -763,9 +749,6 @@ namespace llvm { /// processSubprogram - Process DISubprogram. void processSubprogram(DISubprogram SP); - /// processLocation - Process DILocation. - void processLocation(DILocation Loc); - void processScope(DIScope Scope); /// addCompileUnit - Add compile unit into CUs.