mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-12 17:32:19 +00:00
MC assembly parser handling for trailing comma in macro instantiation.
A trailing comma means no argument at all (i.e., as if the comma were not present), not an empty argument to the invokee. rdar://11252521 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154863 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b8768dc32d
commit
68f89a6158
@ -1527,11 +1527,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();
|
||||
// If the last argument didn't end up with any tokens, it's not a real
|
||||
// argument and we should remove it from the list. This happens with either
|
||||
// a tailing comma or an empty argument list.
|
||||
if (MacroArguments.back().empty())
|
||||
MacroArguments.pop_back();
|
||||
|
||||
// Macro instantiation is lexical, unfortunately. We construct a new buffer
|
||||
// to hold the macro body with substitutions.
|
||||
|
@ -18,3 +18,27 @@ bar
|
||||
|
||||
// CHECK: .long 3
|
||||
// CHECK: .long 0
|
||||
|
||||
|
||||
.macro top
|
||||
middle _$0, $1
|
||||
.endm
|
||||
.macro middle
|
||||
$0:
|
||||
.if $n > 1
|
||||
bottom $1
|
||||
.endif
|
||||
.endm
|
||||
.macro bottom
|
||||
.set fred, $0
|
||||
.endm
|
||||
|
||||
.text
|
||||
|
||||
top foo
|
||||
top bar, 42
|
||||
|
||||
// CHECK: _foo:
|
||||
// CHECK-NOT: fred
|
||||
// CHECK: _bar
|
||||
// CHECK-NEXT: fred = 42
|
||||
|
Loading…
x
Reference in New Issue
Block a user