Index: llvm/trunk/lib/MC/MCParser/AsmParser.cpp =================================================================== --- llvm/trunk/lib/MC/MCParser/AsmParser.cpp +++ llvm/trunk/lib/MC/MCParser/AsmParser.cpp @@ -1646,8 +1646,8 @@ 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 Index: llvm/trunk/test/DebugInfo/X86/asm-macro-line-number.s =================================================================== --- llvm/trunk/test/DebugInfo/X86/asm-macro-line-number.s +++ llvm/trunk/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 @@ # 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