diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 7 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfDebug.h | 1 |
2 files changed, 7 insertions, 1 deletions
diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 1eb88b9178..77bb77d4a5 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -791,7 +791,7 @@ void DwarfDebug::finishVariableDefinitions() { // DIE::getUnit isn't simple - it walks parent pointers, etc. DwarfCompileUnit *Unit = lookupUnit(VariableDie->getUnit()); assert(Unit); - DbgVariable *AbsVar = Var->getAbstractVariable(); + DbgVariable *AbsVar = getExistingAbstractVariable(Var->getVariable()); if (AbsVar && AbsVar->getDIE()) { Unit->addDIEEntry(*VariableDie, dwarf::DW_AT_abstract_origin, *AbsVar->getDIE()); @@ -1081,6 +1081,11 @@ DbgVariable *DwarfDebug::getExistingAbstractVariable(const DIVariable &DV, return nullptr; } +DbgVariable *DwarfDebug::getExistingAbstractVariable(const DIVariable &DV) { + DIVariable Cleansed; + return getExistingAbstractVariable(DV, Cleansed); +} + DbgVariable *DwarfDebug::createAbstractVariable(DIVariable &Var, LexicalScope *Scope) { auto AbsDbgVariable = make_unique<DbgVariable>(Var, nullptr, this); diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.h b/lib/CodeGen/AsmPrinter/DwarfDebug.h index 88b8a674b3..8445b74798 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.h +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.h @@ -346,6 +346,7 @@ class DwarfDebug : public AsmPrinterHandler { /// \brief Find abstract variable associated with Var. DbgVariable *getExistingAbstractVariable(const DIVariable &DV, DIVariable &Cleansed); + DbgVariable *getExistingAbstractVariable(const DIVariable &DV); DbgVariable *createAbstractVariable(DIVariable &DV, LexicalScope *Scope); DbgVariable *getOrCreateAbstractVariable(DIVariable &Var, const MDNode *Scope); |