summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: cf19403)
raw | patch | inline | side by side (parent: cf19403)
author | David Blaikie <dblaikie@gmail.com> | |
Fri, 31 Oct 2014 22:30:30 +0000 (22:30 +0000) | ||
committer | David Blaikie <dblaikie@gmail.com> | |
Fri, 31 Oct 2014 22:30:30 +0000 (22:30 +0000) |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221010 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
index ceb2a12bf7a63a2fcd5f34a43eae33c840ead52d..bd63279f2fc9779c77944777d45f6e7a4ef0b2c3 100644 (file)
applySubprogramAttributesToDefinition(SP, *D);
}
}
+void DwarfCompileUnit::collectDeadVariables(DISubprogram SP) {
+ assert(SP.isSubprogram() && "CU's subprogram list contains a non-subprogram");
+ assert(SP.isDefinition() &&
+ "CU's subprogram list contains a subprogram declaration");
+ DIArray Variables = SP.getVariables();
+ if (Variables.getNumElements() == 0)
+ return;
+
+ DIE *SPDIE = DD->getAbstractSPDies().lookup(SP);
+ if (!SPDIE)
+ SPDIE = getDIE(SP);
+ assert(SPDIE);
+ for (unsigned vi = 0, ve = Variables.getNumElements(); vi != ve; ++vi) {
+ DIVariable DV(Variables.getElement(vi));
+ assert(DV.isVariable());
+ DbgVariable NewVar(DV, DIExpression(nullptr), DD);
+ auto VariableDie = constructVariableDIE(NewVar);
+ applyVariableAttributes(NewVar, *VariableDie);
+ SPDIE->addChild(std::move(VariableDie));
+ }
+}
} // end llvm namespace
index f6b69ce2aa8f9b55e02ef500892296c76c3719cd..74c946036c4fcf9da50c8d13d30fc94be05388da 100644 (file)
constructImportedEntityDIE(const DIImportedEntity &Module);
void finishSubprogramDefinition(DISubprogram SP);
+
+ void collectDeadVariables(DISubprogram SP);
};
} // end llvm namespace
index 0a03505311930715a38d5f379670898e0d86cfff..5af678ea750347137500e658a36be657c49408cb 100644 (file)
DISubprogram SP(Subprograms.getElement(i));
if (ProcessedSPNodes.count(SP) != 0)
continue;
- assert(SP.isSubprogram() &&
- "CU's subprogram list contains a non-subprogram");
- assert(SP.isDefinition() &&
- "CU's subprogram list contains a subprogram declaration");
- DIArray Variables = SP.getVariables();
- if (Variables.getNumElements() == 0)
- continue;
-
- DIE *SPDIE = AbstractSPDies.lookup(SP);
- if (!SPDIE)
- SPDIE = SPCU->getDIE(SP);
- assert(SPDIE);
- for (unsigned vi = 0, ve = Variables.getNumElements(); vi != ve; ++vi) {
- DIVariable DV(Variables.getElement(vi));
- assert(DV.isVariable());
- DbgVariable NewVar(DV, DIExpression(nullptr), this);
- auto VariableDie = SPCU->constructVariableDIE(NewVar);
- SPCU->applyVariableAttributes(NewVar, *VariableDie);
- SPDIE->addChild(std::move(VariableDie));
- }
+ SPCU->collectDeadVariables(SP);
}
}
}
index cfca3666f0f84f86f8d990eacdca55ce3acbd868..e4dc674bb698ad2ce6a52a98b8a66733f82b758f 100644 (file)
class DIEAbbrev;
class MCSymbol;
class DIE;
+class DISubprogram;
class LexicalScope;
class StringRef;
class DwarfDebug;