Changes in directory llvm/include/llvm/CodeGen:
MachineDebugInfo.h updated: 1.35 -> 1.36 --- Log message: 1. Revise vector debug support. 2. Update docs for vector debug support and new version control. 3. Simplify serialization of DebugDescInfo subclasses. --- Diffs of the changes: (+51 -34) MachineDebugInfo.h | 85 +++++++++++++++++++++++++++++++---------------------- 1 files changed, 51 insertions(+), 34 deletions(-) Index: llvm/include/llvm/CodeGen/MachineDebugInfo.h diff -u llvm/include/llvm/CodeGen/MachineDebugInfo.h:1.35 llvm/include/llvm/CodeGen/MachineDebugInfo.h:1.36 --- llvm/include/llvm/CodeGen/MachineDebugInfo.h:1.35 Thu Jun 15 15:51:43 2006 +++ llvm/include/llvm/CodeGen/MachineDebugInfo.h Fri Jun 16 08:14:03 2006 @@ -57,7 +57,8 @@ // Debug info constants. enum { - LLVMDebugVersion = 4 // Current version of debug information. + LLVMDebugVersion = (4 << 16), // Current version of debug information. + LLVMDebugVersionMask = 0xffff0000 // Mask for version number. }; //===----------------------------------------------------------------------===// @@ -90,25 +91,20 @@ /// class DebugInfoDesc { private: - enum { - tag_mask = 0x0000ffff, - version_shift = 16 - }; - - unsigned Tag; // Content indicator. Dwarf values are // used but that does not limit use to // Dwarf writers. protected: - DebugInfoDesc(unsigned T) : Tag(T | (LLVMDebugVersion << version_shift)) {} + DebugInfoDesc(unsigned T) : Tag(T | LLVMDebugVersion) {} public: virtual ~DebugInfoDesc() {} // Accessors - unsigned getTag() const { return Tag & tag_mask; } - unsigned getVersion() const { return Tag >> version_shift; } + unsigned getTag() const { return Tag & ~LLVMDebugVersionMask; } + unsigned getVersion() const { return Tag & LLVMDebugVersionMask; } + void setTag(unsigned T) { Tag = T | LLVMDebugVersion; } /// TagFromGlobal - Returns the tag number from a debug info descriptor /// GlobalVariable. Return DIIValid if operand is not an unsigned int. @@ -199,7 +195,7 @@ /// descriptors. class AnchoredDesc : public DebugInfoDesc { private: - AnchorDesc *Anchor; // Anchor for all descriptors of the + DebugInfoDesc *Anchor; // Anchor for all descriptors of the // same type. protected: @@ -208,8 +204,8 @@ public: // Accessors. - AnchorDesc *getAnchor() const { return Anchor; } - void setAnchor(AnchorDesc *A) { Anchor = A; } + AnchorDesc *getAnchor() const { return static_cast<AnchorDesc *>(Anchor); } + void setAnchor(AnchorDesc *A) { Anchor = static_cast<DebugInfoDesc *>(A); } //===--------------------------------------------------------------------===// // Subclasses should supply the following virtual methods. @@ -282,7 +278,7 @@ private: DebugInfoDesc *Context; // Context debug descriptor. std::string Name; // Type name (may be empty.) - CompileUnitDesc *File; // Defined compile unit (may be NULL.) + DebugInfoDesc *File; // Defined compile unit (may be NULL.) unsigned Line; // Defined line# (may be zero.) uint64_t Size; // Type bit size (may be zero.) uint64_t Align; // Type bit alignment (may be zero.) @@ -294,14 +290,18 @@ // Accessors DebugInfoDesc *getContext() const { return Context; } const std::string &getName() const { return Name; } - CompileUnitDesc *getFile() const { return File; } + CompileUnitDesc *getFile() const { + return static_cast<CompileUnitDesc *>(File); + } unsigned getLine() const { return Line; } uint64_t getSize() const { return Size; } uint64_t getAlign() const { return Align; } uint64_t getOffset() const { return Offset; } void setContext(DebugInfoDesc *C) { Context = C; } void setName(const std::string &N) { Name = N; } - void setFile(CompileUnitDesc *U) { File = U; } + void setFile(CompileUnitDesc *U) { + File = static_cast<DebugInfoDesc *>(U); + } void setLine(unsigned L) { Line = L; } void setSize(uint64_t S) { Size = S; } void setAlign(uint64_t A) { Align = A; } @@ -365,14 +365,18 @@ /// derived types (eg., typedef, pointer, reference.) class DerivedTypeDesc : public TypeDesc { private: - TypeDesc *FromType; // Type derived from. + DebugInfoDesc *FromType; // Type derived from. public: DerivedTypeDesc(unsigned T); // Accessors - TypeDesc *getFromType() const { return FromType; } - void setFromType(TypeDesc *F) { FromType = F; } + TypeDesc *getFromType() const { + return static_cast<TypeDesc *>(FromType); + } + void setFromType(TypeDesc *F) { + FromType = static_cast<DebugInfoDesc *>(F); + } // Implement isa/cast/dyncast. static bool classof(const DerivedTypeDesc *) { return true; } @@ -400,16 +404,13 @@ /// array/struct types (eg., arrays, struct, union, enums.) class CompositeTypeDesc : public DerivedTypeDesc { private: - bool IsVector; // packed/vector array std::vector<DebugInfoDesc *> Elements;// Information used to compose type. public: CompositeTypeDesc(unsigned T); // Accessors - bool isVector() const { return IsVector; } std::vector<DebugInfoDesc *> &getElements() { return Elements; } - void setIsVector() { IsVector = true; } // Implement isa/cast/dyncast. static bool classof(const CompositeTypeDesc *) { return true; } @@ -516,9 +517,9 @@ private: DebugInfoDesc *Context; // Context debug descriptor. std::string Name; // Type name (may be empty.) - CompileUnitDesc *File; // Defined compile unit (may be NULL.) + DebugInfoDesc *File; // Defined compile unit (may be NULL.) unsigned Line; // Defined line# (may be zero.) - TypeDesc *TyDesc; // Type of variable. + DebugInfoDesc *TyDesc; // Type of variable. public: VariableDesc(unsigned T); @@ -526,14 +527,22 @@ // Accessors DebugInfoDesc *getContext() const { return Context; } const std::string &getName() const { return Name; } - CompileUnitDesc *getFile() const { return File; } + CompileUnitDesc *getFile() const { + return static_cast<CompileUnitDesc *>(File); + } unsigned getLine() const { return Line; } - TypeDesc *getType() const { return TyDesc; } + TypeDesc *getType() const { + return static_cast<TypeDesc *>(TyDesc); + } void setContext(DebugInfoDesc *C) { Context = C; } void setName(const std::string &N) { Name = N; } - void setFile(CompileUnitDesc *U) { File = U; } + void setFile(CompileUnitDesc *U) { + File = static_cast<DebugInfoDesc *>(U); + } void setLine(unsigned L) { Line = L; } - void setType(TypeDesc *T) { TyDesc = T; } + void setType(TypeDesc *T) { + TyDesc = static_cast<DebugInfoDesc *>(T); + } // Implement isa/cast/dyncast. static bool classof(const VariableDesc *) { return true; } @@ -563,9 +572,9 @@ private: DebugInfoDesc *Context; // Context debug descriptor. std::string Name; // Global name. - CompileUnitDesc *File; // Defined compile unit (may be NULL.) + DebugInfoDesc *File; // Defined compile unit (may be NULL.) unsigned Line; // Defined line# (may be zero.) - TypeDesc *TyDesc; // Type debug descriptor. + DebugInfoDesc *TyDesc; // Type debug descriptor. bool IsStatic; // Is the global a static. bool IsDefinition; // Is the global defined in context. @@ -576,16 +585,24 @@ // Accessors DebugInfoDesc *getContext() const { return Context; } const std::string &getName() const { return Name; } - CompileUnitDesc *getFile() const { return File; } + CompileUnitDesc *getFile() const { + return static_cast<CompileUnitDesc *>(File); + } unsigned getLine() const { return Line; } - TypeDesc *getType() const { return TyDesc; } + TypeDesc *getType() const { + return static_cast<TypeDesc *>(TyDesc); + } bool isStatic() const { return IsStatic; } bool isDefinition() const { return IsDefinition; } void setContext(DebugInfoDesc *C) { Context = C; } void setName(const std::string &N) { Name = N; } - void setFile(CompileUnitDesc *U) { File = U; } + void setFile(CompileUnitDesc *U) { + File = static_cast<DebugInfoDesc *>(U); + } void setLine(unsigned L) { Line = L; } - void setType(TypeDesc *T) { TyDesc = T; } + void setType(TypeDesc *T) { + TyDesc = static_cast<DebugInfoDesc *>(T); + } void setIsStatic(bool IS) { IsStatic = IS; } void setIsDefinition(bool ID) { IsDefinition = ID; } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits