mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-28 22:29:56 +00:00
Until this point only macro definition with named parameters were parsed but the names were ignored. This adds support for using that information for named parameter instantiation. In order to support the full semantics of the keyword arguments, the arguments are no longer lazily initialised since the keyword arguments can be specified out of order and partially if they are defaulted. Prepopulate the arguments with the default value for any defaulted parameters, and then parse the specified arguments. This simplies some of the handling of the arguments in the inner loop since empty arguments simply increment the parameter index and move on. Note that keyword and positional arguments cannot be mixed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201499 91177308-0d34-0410-b5e6-96231b3b80d8
25 lines
606 B
ArmAsm
25 lines
606 B
ArmAsm
# RUN: not llvm-mc -triple i386 -filetype asm -o /dev/null %s 2>&1 | FileCheck %s
|
|
|
|
.macro double first = -1, second = -1
|
|
# begin entry
|
|
.long \first
|
|
.long \second
|
|
# end entry
|
|
.endm
|
|
|
|
double 0, 1, 2
|
|
# CHECK: error: too many positional arguments
|
|
# CHECK: double 0, 1, 2
|
|
# CHECK: ^
|
|
|
|
double second = 1, 2
|
|
# CHECK: error: cannot mix positional and keyword arguments
|
|
# CHECK: double second = 1, 2
|
|
# CHECK: ^
|
|
|
|
double third = 0
|
|
# CHECK: error: parameter named 'third' does not exist for macro 'double'
|
|
# CHECK: double third = 0
|
|
# CHECK: ^
|
|
|