diff options
author | David Blaikie <dblaikie@gmail.com> | 2013-08-16 20:42:14 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2013-08-16 20:42:14 +0000 |
commit | 692062f18023979c0f8d5a155c14cf1f1616a2b0 (patch) | |
tree | bc6d241a8e3eec18f4b3c12caf1482b2038dd145 | |
parent | 9bb6c81683393363ed1ff8c66397f2d944c0966b (diff) | |
download | external_llvm-692062f18023979c0f8d5a155c14cf1f1616a2b0.zip external_llvm-692062f18023979c0f8d5a155c14cf1f1616a2b0.tar.gz external_llvm-692062f18023979c0f8d5a155c14cf1f1616a2b0.tar.bz2 |
DebugInfo: Allow the addition of other (such as static data) members to a record type after construction
Plus a type cleanup & minor fix to enumerate members of declarations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188577 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/DIBuilder.h | 8 | ||||
-rw-r--r-- | include/llvm/DebugInfo.h | 2 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp | 3 | ||||
-rw-r--r-- | lib/IR/DIBuilder.cpp | 9 | ||||
-rw-r--r-- | lib/IR/DebugInfo.cpp | 4 |
5 files changed, 13 insertions, 13 deletions
diff --git a/include/llvm/DIBuilder.h b/include/llvm/DIBuilder.h index a15d619..941ed04 100644 --- a/include/llvm/DIBuilder.h +++ b/include/llvm/DIBuilder.h @@ -419,9 +419,11 @@ namespace llvm { DIType createObjectPointerType(DIType Ty); /// createForwardDecl - Create a temporary forward-declared type. - DIType createForwardDecl(unsigned Tag, StringRef Name, DIDescriptor Scope, - DIFile F, unsigned Line, unsigned RuntimeLang = 0, - uint64_t SizeInBits = 0, uint64_t AlignInBits = 0); + DICompositeType createForwardDecl(unsigned Tag, StringRef Name, + DIDescriptor Scope, DIFile F, + unsigned Line, unsigned RuntimeLang = 0, + uint64_t SizeInBits = 0, + uint64_t AlignInBits = 0); /// retainType - Retain DIType in a module even if it is not referenced /// through debug info anchors. diff --git a/include/llvm/DebugInfo.h b/include/llvm/DebugInfo.h index b02446a..2efc730 100644 --- a/include/llvm/DebugInfo.h +++ b/include/llvm/DebugInfo.h @@ -323,7 +323,7 @@ namespace llvm { DIArray getTypeArray() const { return getFieldAs<DIArray>(10); } void setTypeArray(DIArray Elements, DIArray TParams = DIArray()); - void addMember(DISubprogram S); + void addMember(DIDescriptor D); unsigned getRunTimeLang() const { return getUnsignedField(11); } DICompositeType getContainingType() const { return getFieldAs<DICompositeType>(12); diff --git a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp index 803a35d..3d2c1b8 100644 --- a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp @@ -981,9 +981,6 @@ void CompileUnit::constructTypeDIE(DIE &Buffer, DICompositeType CTy) { case dwarf::DW_TAG_structure_type: case dwarf::DW_TAG_union_type: case dwarf::DW_TAG_class_type: { - if (CTy.isForwardDecl()) - break; - // Add elements to structure type. DIArray Elements = CTy.getTypeArray(); for (unsigned i = 0, N = Elements.getNumElements(); i < N; ++i) { diff --git a/lib/IR/DIBuilder.cpp b/lib/IR/DIBuilder.cpp index e36d028..665e16e 100644 --- a/lib/IR/DIBuilder.cpp +++ b/lib/IR/DIBuilder.cpp @@ -844,7 +844,7 @@ DIDescriptor DIBuilder::createUnspecifiedParameter() { /// createForwardDecl - Create a temporary forward-declared type that /// can be RAUW'd if the full type is seen. -DIType DIBuilder::createForwardDecl(unsigned Tag, StringRef Name, +DICompositeType DIBuilder::createForwardDecl(unsigned Tag, StringRef Name, DIDescriptor Scope, DIFile F, unsigned Line, unsigned RuntimeLang, uint64_t SizeInBits, @@ -863,11 +863,12 @@ DIType DIBuilder::createForwardDecl(unsigned Tag, StringRef Name, DIDescriptor::FlagFwdDecl), NULL, DIArray(), - ConstantInt::get(Type::getInt32Ty(VMContext), RuntimeLang) + ConstantInt::get(Type::getInt32Ty(VMContext), RuntimeLang), + NULL }; MDNode *Node = MDNode::getTemporary(VMContext, Elts); - DIType RetTy(Node); - assert(RetTy.isType() && + DICompositeType RetTy(Node); + assert(RetTy.isCompositeType() && "createForwardDecl result should be a DIType"); return RetTy; } diff --git a/lib/IR/DebugInfo.cpp b/lib/IR/DebugInfo.cpp index 0f7ddb5..cffc2ac 100644 --- a/lib/IR/DebugInfo.cpp +++ b/lib/IR/DebugInfo.cpp @@ -647,7 +647,7 @@ void DICompositeType::setTypeArray(DIArray Elements, DIArray TParams) { DbgNode = N; } -void DICompositeType::addMember(DISubprogram S) { +void DICompositeType::addMember(DIDescriptor D) { SmallVector<llvm::Value *, 16> M; DIArray OrigM = getTypeArray(); unsigned Elements = OrigM.getNumElements(); @@ -656,7 +656,7 @@ void DICompositeType::addMember(DISubprogram S) { M.reserve(Elements + 1); for (unsigned i = 0; i != Elements; ++i) M.push_back(OrigM.getElement(i)); - M.push_back(S); + M.push_back(D); setTypeArray(DIArray(MDNode::get(DbgNode->getContext(), M))); } |