MC asm parser macro argument count was wrong when empty.

evaluated to '1' when the argument list was empty (should be '0').

rdar://11057257

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152967 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jim Grosbach 2012-03-17 00:11:42 +00:00
parent 5aeff3171c
commit ae151ed87d
2 changed files with 15 additions and 0 deletions

View File

@ -1528,6 +1528,11 @@ bool AsmParser::HandleMacroEntry(StringRef Name, SMLoc NameLoc,
}
Lex();
}
// If there weren't any arguments, erase the token vector so everything
// else knows that. Leaving around the vestigal empty token list confuses
// things.
if (MacroArguments.size() == 1 && MacroArguments.back().empty())
MacroArguments.clear();
// Macro instantiation is lexical, unfortunately. We construct a new buffer
// to hold the macro body with substitutions.

View File

@ -8,3 +8,13 @@
GET is_sse, %eax
// CHECK: movl is_sse@GOTOFF(%ebx), %eax
.macro bar
.long $n
.endm
bar 1, 2, 3
bar
// CHECK: .long 3
// CHECK: .long 0