mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-11-04 05:17:07 +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