Skip to content

Commit

Permalink
IAS: Use the root macro instanciation for location
Browse files Browse the repository at this point in the history
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
  • Loading branch information
fredriss committed Jun 25, 2015
1 parent 594c028 commit 16238d9
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 2 deletions.
4 changes: 2 additions & 2 deletions llvm/lib/MC/MCParser/AsmParser.cpp
Expand Up @@ -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
Expand Down
14 changes: 14 additions & 0 deletions llvm/test/DebugInfo/X86/asm-macro-line-number.s
Expand Up @@ -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

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

0 comments on commit 16238d9

Please sign in to comment.