diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/include/llvm/MC/MCParser/MCAsmParser.h | 2 | ||||
| -rw-r--r-- | llvm/lib/MC/MCParser/AsmParser.cpp | 4 | ||||
| -rw-r--r-- | llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp | 2 | ||||
| -rw-r--r-- | llvm/test/MC/Mips/asciiz-directive-bad.s | 8 | ||||
| -rw-r--r-- | llvm/test/MC/Mips/asciiz-directive.s | 28 |
5 files changed, 44 insertions, 0 deletions
diff --git a/llvm/include/llvm/MC/MCParser/MCAsmParser.h b/llvm/include/llvm/MC/MCParser/MCAsmParser.h index 83ffbb5044d..7dcefdb9892 100644 --- a/llvm/include/llvm/MC/MCParser/MCAsmParser.h +++ b/llvm/include/llvm/MC/MCParser/MCAsmParser.h @@ -84,6 +84,8 @@ public: virtual void addDirectiveHandler(StringRef Directive, ExtensionDirectiveHandler Handler) = 0; + virtual void addAliasForDirective(StringRef Directive, StringRef Alias) = 0; + virtual SourceMgr &getSourceManager() = 0; virtual MCAsmLexer &getLexer() = 0; diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp index 92a75074ab5..12b9cf561a8 100644 --- a/llvm/lib/MC/MCParser/AsmParser.cpp +++ b/llvm/lib/MC/MCParser/AsmParser.cpp @@ -184,6 +184,10 @@ public: ExtensionDirectiveMap[Directive] = Handler; } + void addAliasForDirective(StringRef Directive, StringRef Alias) override { + DirectiveKindMap[Directive] = DirectiveKindMap[Alias]; + } + public: /// @name MCAsmParser Interface /// { diff --git a/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp b/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp index 6f7e3c16a9b..7615f87f721 100644 --- a/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp +++ b/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp @@ -349,6 +349,8 @@ public: sti.getCPU(), Options)) { MCAsmParserExtension::Initialize(parser); + parser.addAliasForDirective(".asciiz", ".asciz"); + // Initialize the set of available features. setAvailableFeatures(ComputeAvailableFeatures(STI.getFeatureBits())); diff --git a/llvm/test/MC/Mips/asciiz-directive-bad.s b/llvm/test/MC/Mips/asciiz-directive-bad.s new file mode 100644 index 00000000000..0f30cfbee63 --- /dev/null +++ b/llvm/test/MC/Mips/asciiz-directive-bad.s @@ -0,0 +1,8 @@ +# RUN: not llvm-mc -triple mips-unknown-linux %s 2>&1 | FileCheck %s + + .asciiz 12 +# CHECK: :[[@LINE-1]]:11: error: expected string in '.asciiz' directive + .asciiz "a"3 +# CHECK: :[[@LINE-1]]:14: error: unexpected token in '.asciiz' directive + .asciiz "a", +# CHECK: :[[@LINE-1]]:15: error: expected string in '.asciiz' directive diff --git a/llvm/test/MC/Mips/asciiz-directive.s b/llvm/test/MC/Mips/asciiz-directive.s new file mode 100644 index 00000000000..0e582145c71 --- /dev/null +++ b/llvm/test/MC/Mips/asciiz-directive.s @@ -0,0 +1,28 @@ +# RUN: llvm-mc -triple mips-unknown-linux %s | FileCheck %s +# .asciiz is exactly the same as .asciz, except it's MIPS-specific. + +t1: + .asciiz +# CHECK-LABEL: t1 + +t2: + .asciiz "a" +# CHECK-LABEL: t2 +# CHECK: .byte 97 +# CHECK: .byte 0 + +t3: + .asciiz "a", "b", "c" +# CHECK-LABEL: t3 +# CHECK: .byte 97 +# CHECK: .byte 0 +# CHECK: .byte 98 +# CHECK: .byte 0 +# CHECK: .byte 99 +# CHECK: .byte 0 + +t4: + .asciiz "abcdefghijklmnop" +# CHECK-LABEL: t4 +# CHECK: .ascii "abcdefghijklmnop" +# CHECK: .byte 0 |

