diff options
author | Devang Patel <dpatel@apple.com> | 2009-01-20 22:27:02 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2009-01-20 22:27:02 +0000 |
commit | 2a574669f3aed5951dcd62fa14c25dcde4d1a754 (patch) | |
tree | b4025be375e5ca427a72ee3964d8bab0b70e5c8a | |
parent | eeb90e3094c8d5480747e39ab5dcd3ba156009c7 (diff) | |
download | external_llvm-2a574669f3aed5951dcd62fa14c25dcde4d1a754.zip external_llvm-2a574669f3aed5951dcd62fa14c25dcde4d1a754.tar.gz external_llvm-2a574669f3aed5951dcd62fa14c25dcde4d1a754.tar.bz2 |
Appropriately mark fowrad decls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62625 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Analysis/DebugInfo.h | 10 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfWriter.cpp | 19 | ||||
-rw-r--r-- | test/DebugInfo/forwardDecl.ll | 1 |
3 files changed, 18 insertions, 12 deletions
diff --git a/include/llvm/Analysis/DebugInfo.h b/include/llvm/Analysis/DebugInfo.h index 3f9f984..4109551 100644 --- a/include/llvm/Analysis/DebugInfo.h +++ b/include/llvm/Analysis/DebugInfo.h @@ -129,6 +129,13 @@ namespace llvm { /// FIXME: Types should be factored much better so that CV qualifiers and /// others do not require a huge and empty descriptor full of zeros. class DIType : public DIDescriptor { + public: + enum { + FlagPrivate = 1 << 0, + FlagProtected = 1 << 1, + FlagFwdDecl = 1 << 2 + }; + protected: DIType(GlobalVariable *GV, unsigned Tag) : DIDescriptor(GV, Tag) {} // This ctor is used when the Tag has already been validated by a derived @@ -167,6 +174,9 @@ namespace llvm { // carry this is just plain insane. uint64_t getOffsetInBits() const { return getUInt64Field(7); } unsigned getFlags() const { return getUnsignedField(8); } + bool isPrivate() const { return (getFlags() & FlagPrivate) != 0; } + bool isProtected() const { return (getFlags() & FlagProtected) != 0; } + bool isForwardDecl() const { return (getFlags() & FlagFwdDecl) != 0; } virtual std::string getFilename() const { assert (0 && "Invalid DIDescriptor"); diff --git a/lib/CodeGen/AsmPrinter/DwarfWriter.cpp b/lib/CodeGen/AsmPrinter/DwarfWriter.cpp index dccd59c..a2934bd 100644 --- a/lib/CodeGen/AsmPrinter/DwarfWriter.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfWriter.cpp @@ -1820,19 +1820,16 @@ private: if (Size) AddUInt(&Buffer, DW_AT_byte_size, 0, Size); else { - // Add zero size even if it is not a forward declaration. - // FIXME - Enable this. - // if (!CTy.isDefinition()) - // AddUInt(&Buffer, DW_AT_declaration, DW_FORM_flag, 1); - // else - // AddUInt(&Buffer, DW_AT_byte_size, 0, 0); + // Add zero size if it is not a forward declaration. + if (CTy.isForwardDecl()) + AddUInt(&Buffer, DW_AT_declaration, DW_FORM_flag, 1); + else + AddUInt(&Buffer, DW_AT_byte_size, 0, 0); } - // Add source line info if available and TyDesc is not a forward - // declaration. - // FIXME - Enable this. - // if (CTy.isForwardDecl()) - // AddSourceLine(&Buffer, *CTy); + // Add source line info if available. + if (!CTy.isForwardDecl()) + AddSourceLine(&Buffer, &CTy); } // ConstructSubrangeDIE - Construct subrange DIE from DISubrange. diff --git a/test/DebugInfo/forwardDecl.ll b/test/DebugInfo/forwardDecl.ll index cf0923e..a8bb9ff 100644 --- a/test/DebugInfo/forwardDecl.ll +++ b/test/DebugInfo/forwardDecl.ll @@ -1,5 +1,4 @@ ; RUN: llvm-as < %s | llc | %prcontext ST 1 | grep 0x1 | count 1 -; XFAIL: * target triple = "i386-apple-darwin9.6" %llvm.dbg.anchor.type = type { i32, i32 } |