mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-24 08:18:33 +00:00
[mips] [IAS] Implement the .asciiz directive.
Summary: This directive is exactly the same as .asciz, except it's only used by MIPS. It is used to store null terminated strings in object files. Reviewers: rafael, dsanders, echristo Reviewed By: dsanders, echristo Subscribers: echristo, llvm-commits Differential Revision: http://reviews.llvm.org/D7530 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235382 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -84,6 +84,8 @@ public:
|
|||||||
virtual void addDirectiveHandler(StringRef Directive,
|
virtual void addDirectiveHandler(StringRef Directive,
|
||||||
ExtensionDirectiveHandler Handler) = 0;
|
ExtensionDirectiveHandler Handler) = 0;
|
||||||
|
|
||||||
|
virtual void addAliasForDirective(StringRef Directive, StringRef Alias) = 0;
|
||||||
|
|
||||||
virtual SourceMgr &getSourceManager() = 0;
|
virtual SourceMgr &getSourceManager() = 0;
|
||||||
|
|
||||||
virtual MCAsmLexer &getLexer() = 0;
|
virtual MCAsmLexer &getLexer() = 0;
|
||||||
|
|||||||
@@ -184,6 +184,10 @@ public:
|
|||||||
ExtensionDirectiveMap[Directive] = Handler;
|
ExtensionDirectiveMap[Directive] = Handler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void addAliasForDirective(StringRef Directive, StringRef Alias) override {
|
||||||
|
DirectiveKindMap[Directive] = DirectiveKindMap[Alias];
|
||||||
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/// @name MCAsmParser Interface
|
/// @name MCAsmParser Interface
|
||||||
/// {
|
/// {
|
||||||
|
|||||||
@@ -349,6 +349,8 @@ public:
|
|||||||
sti.getCPU(), Options)) {
|
sti.getCPU(), Options)) {
|
||||||
MCAsmParserExtension::Initialize(parser);
|
MCAsmParserExtension::Initialize(parser);
|
||||||
|
|
||||||
|
parser.addAliasForDirective(".asciiz", ".asciz");
|
||||||
|
|
||||||
// Initialize the set of available features.
|
// Initialize the set of available features.
|
||||||
setAvailableFeatures(ComputeAvailableFeatures(STI.getFeatureBits()));
|
setAvailableFeatures(ComputeAvailableFeatures(STI.getFeatureBits()));
|
||||||
|
|
||||||
|
|||||||
8
test/MC/Mips/asciiz-directive-bad.s
Normal file
8
test/MC/Mips/asciiz-directive-bad.s
Normal file
@@ -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
|
||||||
28
test/MC/Mips/asciiz-directive.s
Normal file
28
test/MC/Mips/asciiz-directive.s
Normal file
@@ -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
|
||||||
Reference in New Issue
Block a user