mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-03 14:31:10 +00:00
DwarfDebug: Only unique retained types instead of all types.
This is a follow-up to r203983 based on feedback from dblaikie and mren (Thanks!) No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204107 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5e8144df32
commit
ff5abbb4d3
lib/CodeGen/AsmPrinter
@ -846,8 +846,13 @@ void DwarfDebug::beginModule() {
|
||||
for (unsigned i = 0, e = EnumTypes.getNumElements(); i != e; ++i)
|
||||
CU->getOrCreateTypeDIE(EnumTypes.getElement(i));
|
||||
DIArray RetainedTypes = CUNode.getRetainedTypes();
|
||||
for (unsigned i = 0, e = RetainedTypes.getNumElements(); i != e; ++i)
|
||||
CU->getOrCreateTypeDIE(RetainedTypes.getElement(i));
|
||||
for (unsigned i = 0, e = RetainedTypes.getNumElements(); i != e; ++i) {
|
||||
DIType Ty(RetainedTypes.getElement(i));
|
||||
// The retained types array by design contains pointers to
|
||||
// MDNodes rather than DIRefs. Unique them here.
|
||||
DIType UniqueTy(resolve(Ty.getRef()));
|
||||
CU->getOrCreateTypeDIE(UniqueTy);
|
||||
}
|
||||
// Emit imported_modules last so that the relevant context is already
|
||||
// available.
|
||||
for (unsigned i = 0, e = ImportedEntities.getNumElements(); i != e; ++i)
|
||||
|
@ -971,6 +971,8 @@ DIE *DwarfUnit::getOrCreateTypeDIE(const MDNode *TyNode) {
|
||||
|
||||
DIType Ty(TyNode);
|
||||
assert(Ty.isType());
|
||||
assert(*&Ty == resolve(Ty.getRef()) &&
|
||||
"type was not uniqued, possible ODR violation.");
|
||||
|
||||
// Construct the context before querying for the existence of the DIE in case
|
||||
// such construction creates the DIE.
|
||||
@ -978,9 +980,6 @@ DIE *DwarfUnit::getOrCreateTypeDIE(const MDNode *TyNode) {
|
||||
DIE *ContextDIE = getOrCreateContextDIE(Context);
|
||||
assert(ContextDIE);
|
||||
|
||||
// Unique the type. This is a noop if the type has no unique identifier.
|
||||
Ty = DIType(resolve(Ty.getRef()));
|
||||
|
||||
DIE *TyDIE = getDIE(Ty);
|
||||
if (TyDIE)
|
||||
return TyDIE;
|
||||
|
Loading…
x
Reference in New Issue
Block a user