diff options
author | Saleem Abdulrasool <compnerd@compnerd.org> | 2014-02-19 03:00:29 +0000 |
---|---|---|
committer | Saleem Abdulrasool <compnerd@compnerd.org> | 2014-02-19 03:00:29 +0000 |
commit | 156f2a1f5ddad573a884b52774c14e4b327d2ad0 (patch) | |
tree | 6f0da2c588f6b631288f34fa4984276cf5a0e9d7 /test/MC | |
parent | 5bbd4d2bd4749894ed7c53bbfd040532f98c37df (diff) | |
download | llvm-156f2a1f5ddad573a884b52774c14e4b327d2ad0.tar.gz llvm-156f2a1f5ddad573a884b52774c14e4b327d2ad0.tar.bz2 llvm-156f2a1f5ddad573a884b52774c14e4b327d2ad0.tar.xz |
MCAsmParser: support required parameters
This enhances the macro parser to parse and handle parameter qualifications,
which is needed to support required formal parameters in macro definitions. A
required parameter may not be defaulted (though providing a default value is
accepted with a warning). This improves GAS compatibility.
Partially addresses PR9248.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201630 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/MC')
-rw-r--r-- | test/MC/AsmParser/macro-qualifier-diagnostics.s | 64 | ||||
-rw-r--r-- | test/MC/AsmParser/macro-qualifier.s | 16 |
2 files changed, 80 insertions, 0 deletions
diff --git a/test/MC/AsmParser/macro-qualifier-diagnostics.s b/test/MC/AsmParser/macro-qualifier-diagnostics.s new file mode 100644 index 0000000000..4ebad2b69e --- /dev/null +++ b/test/MC/AsmParser/macro-qualifier-diagnostics.s @@ -0,0 +1,64 @@ +# RUN: not llvm-mc -triple i386 -o /dev/null %s 2>&1 | FileCheck %s + + .macro missing_qualifier parameter: + +# CHECK: error: missing parameter qualifier for 'parameter' in macro 'missing_qualifier' +# CHECK: .macro missing_qualifier parameter: +# CHECK: ^ + + .macro non_identifier_qualifier parameter:0 + +# CHECK: error: missing parameter qualifier for 'parameter' in macro 'non_identifier_qualifier' +# CHECK: .macro non_identifier_qualifier parameter:0 +# CHECK: ^ + + .macro invalid_qualifier parameter:invalid_qualifier + +# CHECK: error: invalid_qualifier is not a valid parameter qualifier for 'parameter' in macro 'invalid_qualifier' +# CHECK: .macro invalid_qualifier parameter:invalid_qualifier +# CHECK: ^ + + .macro pointless_default parameter:req=default + .endm + +# CHECK: warning: pointless default value for required parameter 'parameter' in macro 'pointless_default' +# CHECK: .macro pointless_default parameter:req=default +# CHECK: ^ + + .macro missing_required_parameter parameter:req + .endm + + missing_required_parameter + +# CHECK: error: missing value for required parameter 'parameter' in macro 'missing_required_parameter' +# CHECK: missing_required_parameter +# CHECK: ^ + + .macro missing_second_required_argument first=0 second:req + .endm + + missing_second_required_argument + +# CHECK: error: missing value for required parameter 'second' in macro 'missing_second_required_argument' +# CHECK: missing_second_required_argument +# CHECK: ^ + + .macro second_third_required first=0 second:req third:req + .endm + + second_third_required 0 + +# CHECK: error: missing value for required parameter 'second' in macro 'second_third_required' +# CHECK: second_third_required 0 +# CHECK: ^ + +# CHECK: error: missing value for required parameter 'third' in macro 'second_third_required' +# CHECK: second_third_required 0 +# CHECK: ^ + + second_third_required third=3 first=1 + +# CHECK: error: missing value for required parameter 'second' in macro 'second_third_required' +# CHECK: second_third_required third=3 first=1 +# CHECK: ^ + diff --git a/test/MC/AsmParser/macro-qualifier.s b/test/MC/AsmParser/macro-qualifier.s new file mode 100644 index 0000000000..7714e5cfa9 --- /dev/null +++ b/test/MC/AsmParser/macro-qualifier.s @@ -0,0 +1,16 @@ +# RUN: llvm-mc -triple i386 -o - %s | FileCheck %s + + .macro required parameter:req + .long \parameter + .endm + + required 0 +# CHECK: .long 0 + + .macro required_with_default parameter:req=0 + .long \parameter + .endm + + required 1 +# CHECK: .long 1 + |