IAS: Use the root macro instanciation for location

r224810 fixed the handling of macro debug locations in AsmParser. This patch
fixes the logic to actually do what was intended: it uses the first macro of
the macro stack instead of the last one. The updated testcase shows that the
current scheme doesn't work when macro instanciations are nested and multiple
files are used.

Reviewers: compnerd

Differential Revision: http://reviews.llvm.org/D10463

llvm-svn: 240705
This commit is contained in:
Frederic Riss 2015-06-25 21:57:33 +00:00
parent 594c028183
commit 16238d90b2
2 changed files with 16 additions and 2 deletions

View File

@ -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

View File

@ -3,12 +3,18 @@
# 1 "reduced.S"
# 1 "<built-in>" 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