mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-19 04:32:19 +00:00
Stuff
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216787 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
217b38e19a
commit
a66ce7afdd
@ -751,6 +751,11 @@ void DwarfDebug::beginModule() {
|
||||
for (MDNode *N : CU_Nodes->operands()) {
|
||||
DICompileUnit CUNode(N);
|
||||
DwarfCompileUnit &CU = constructDwarfCompileUnit(CUNode);
|
||||
DIArray SPs = CUNode.getSubprograms();
|
||||
for (unsigned i = 0, e = SPs.getNumElements(); i != e; ++i)
|
||||
SPMap.insert(std::make_pair(SPs.getElement(i), &CU));
|
||||
if (CU.getCUNode().getEmissionKind() == DIBuilder::LineTablesOnly)
|
||||
continue;
|
||||
DIArray ImportedEntities = CUNode.getImportedEntities();
|
||||
for (unsigned i = 0, e = ImportedEntities.getNumElements(); i != e; ++i)
|
||||
ScopesWithImportedEntities.push_back(std::make_pair(
|
||||
@ -761,9 +766,6 @@ void DwarfDebug::beginModule() {
|
||||
DIArray GVs = CUNode.getGlobalVariables();
|
||||
for (unsigned i = 0, e = GVs.getNumElements(); i != e; ++i)
|
||||
CU.createGlobalVariableDIE(DIGlobalVariable(GVs.getElement(i)));
|
||||
DIArray SPs = CUNode.getSubprograms();
|
||||
for (unsigned i = 0, e = SPs.getNumElements(); i != e; ++i)
|
||||
SPMap.insert(std::make_pair(SPs.getElement(i), &CU));
|
||||
DIArray EnumTypes = CUNode.getEnumTypes();
|
||||
for (unsigned i = 0, e = EnumTypes.getNumElements(); i != e; ++i) {
|
||||
DIType Ty(EnumTypes.getElement(i));
|
||||
@ -833,12 +835,13 @@ void DwarfDebug::finishSubprogramDefinitions() {
|
||||
// If this subprogram has an abstract definition, reference that
|
||||
SPCU->addDIEEntry(*D, dwarf::DW_AT_abstract_origin, *AbsSPDIE);
|
||||
} else {
|
||||
if (!D)
|
||||
if (!D && TheCU.getEmissionKind() != DIBuilder::LineTablesOnly)
|
||||
// Lazily construct the subprogram if we didn't see either concrete or
|
||||
// inlined versions during codegen.
|
||||
D = SPCU->getOrCreateSubprogramDIE(SP);
|
||||
// And attach the attributes
|
||||
SPCU->applySubprogramAttributesToDefinition(SP, *D);
|
||||
if (D)
|
||||
// And attach the attributes
|
||||
SPCU->applySubprogramAttributesToDefinition(SP, *D);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1667,6 +1670,17 @@ void DwarfDebug::endFunction(const MachineFunction *MF) {
|
||||
|
||||
LexicalScope *FnScope = LScopes.getCurrentFunctionScope();
|
||||
DwarfCompileUnit &TheCU = *SPMap.lookup(FnScope->getScopeNode());
|
||||
if (TheCU.getCUNode().getEmissionKind() == DIBuilder::LineTablesOnly && LScopes.getAbstractScopesList().empty()) {
|
||||
assert(ScopeVariables.empty());
|
||||
assert(CurrentFnArguments.empty());
|
||||
assert(DbgValues.empty());
|
||||
assert(AbstractVariables.empty());
|
||||
LabelsBeforeInsn.clear();
|
||||
LabelsAfterInsn.clear();
|
||||
PrevLabel = nullptr;
|
||||
CurFn = nullptr;
|
||||
return;
|
||||
}
|
||||
|
||||
// Construct abstract scopes.
|
||||
for (LexicalScope *AScope : LScopes.getAbstractScopesList()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user