diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 1e5d09b410f..845506fbfb2 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -319,9 +319,13 @@ DIE &DwarfDebug::updateSubprogramScopeDIE(DwarfCompileUnit &SPCU, attachLowHighPC(SPCU, *SPDie, FunctionBeginSym, FunctionEndSym); - const TargetRegisterInfo *RI = Asm->TM.getSubtargetImpl()->getRegisterInfo(); - MachineLocation Location(RI->getFrameRegister(*Asm->MF)); - SPCU.addAddress(*SPDie, dwarf::DW_AT_frame_base, Location); + // Only include DW_AT_frame_base in full debug info + if (SPCU.getCUNode().getEmissionKind() != DIBuilder::LineTablesOnly) { + const TargetRegisterInfo *RI = + Asm->TM.getSubtargetImpl()->getRegisterInfo(); + MachineLocation Location(RI->getFrameRegister(*Asm->MF)); + SPCU.addAddress(*SPDie, dwarf::DW_AT_frame_base, Location); + } // Add name to the name table, we do this here because we're guaranteed // to have concrete versions of our DW_TAG_subprogram nodes. diff --git a/test/DebugInfo/gmlt.ll b/test/DebugInfo/gmlt.ll index 3ace56feae5..9271b2ed9c9 100644 --- a/test/DebugInfo/gmlt.ll +++ b/test/DebugInfo/gmlt.ll @@ -21,8 +21,6 @@ ; CHECK: DW_TAG_subprogram ; CHECK-NEXT: DW_AT_low_pc ; CHECK-NEXT: DW_AT_high_pc -; FIXME: We don't need the DW_AT_frame_base for -gmlt. -; CHECK-NEXT: DW_AT_frame_base ; CHECK-NEXT: DW_AT_name ; CHECK-NOT: DW_AT ; CHECK: {{DW_TAG|NULL}}