mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-17 21:35:07 +00:00
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
This commit is contained in:
parent
9bb6c81683
commit
692062f180
@ -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.
|
||||
|
@ -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);
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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)));
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user