diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 6b6d3b3c91a..25217b08809 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -969,6 +969,12 @@ DbgScope *DwarfDebug::getOrCreateScope(GlobalVariable *V) { DbgScope *Parent = NULL; DIBlock Block(V); + // Don't create a new scope if we already created one for an inlined function. + DenseMap::iterator + II = AbstractInstanceRootMap.find(V); + if (II != AbstractInstanceRootMap.end()) + return LexicalScopeStack.back(); + if (!Block.isNull()) { DIDescriptor ParentDesc = Block.getContext(); Parent = @@ -1024,8 +1030,6 @@ void DwarfDebug::ConstructDbgScope(DbgScope *ParentScope, AddLabel(Die, dwarf::DW_AT_high_pc, dwarf::DW_FORM_addr, DWLabel("func_end", SubprogramCount)); - // Add the scope's contents. - ConstructDbgScope(ConcreteInst, StartID, EndID, Die, Unit); ParentDie->AddChild(Die); }