IAS: Use the root macro instanciation for location
authorFrederic Riss <friss@apple.com>
Thu, 25 Jun 2015 21:57:33 +0000 (21:57 +0000)
committerFrederic Riss <friss@apple.com>
Thu, 25 Jun 2015 21:57:33 +0000 (21:57 +0000)
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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@240705 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/MCParser/AsmParser.cpp
test/DebugInfo/X86/asm-macro-line-number.s

index 2245a466e62abbff5afa3bbde2ad6c3f0a556bbb..04d141389c923f1e815d8e1b8cddf4d86d83c4d7 100644 (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
index 0f51dbb6440a22cddc6039969f58c4bc7bba884f..8b0843d06138b9815f01ca8d90672ddf526bbf3e 100644 (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