diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp index 2245a466e62ab..04d141389c923 100644 --- a/llvm/lib/MC/MCParser/AsmParser.cpp +++ b/llvm/lib/MC/MCParser/AsmParser.cpp @@ -1646,8 +1646,8 @@ bool AsmParser::parseStatement(ParseStatementInfo &Info, if (ActiveMacros.empty()) Line = SrcMgr.FindLineNumber(IDLoc, CurBuffer); else - Line = SrcMgr.FindLineNumber(ActiveMacros.back()->InstantiationLoc, - ActiveMacros.back()->ExitBuffer); + Line = SrcMgr.FindLineNumber(ActiveMacros.front()->InstantiationLoc, + ActiveMacros.front()->ExitBuffer); // If we previously parsed a cpp hash file line comment then make sure the // current Dwarf File is for the CppHashFilename if not then emit the diff --git a/llvm/test/DebugInfo/X86/asm-macro-line-number.s b/llvm/test/DebugInfo/X86/asm-macro-line-number.s index 0f51dbb6440a2..8b0843d06138b 100644 --- a/llvm/test/DebugInfo/X86/asm-macro-line-number.s +++ b/llvm/test/DebugInfo/X86/asm-macro-line-number.s @@ -3,12 +3,18 @@ # 1 "reduced.S" # 1 "" 1 # 1 "reduced.S" 2 +# 200 "macros.h" .macro return arg movl %eax, \arg retl .endm + .macro return2 arg + return \arg + .endm + +# 7 "reduced.S" function: return 0 @@ -18,3 +24,11 @@ function: # CHECK: .loc 2 8 0 # CHECK: retl +# 42 "reduced.S" +function2: + return2 0 + +# CHECK: .loc 2 43 0 +# CHECK: movl %eax, 0 +# CHECK: .loc 2 43 0 +# CHECK: retl