mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
e20575db92
The target independent AsmParser doesn't recognise .hword, .word, .dword which are required for Mips. Currently MipsAsmParser recognises these through dispatch to MipsAsmParser::parseDataDirective. This contains equivalent logic to AsmParser::parseDirectiveValue. This patch allows reuse of AsmParser::parseDirectiveValue by making use of addAliasForDirective to support .hword, .word and .dword. Original patch provided by Alex Bradbury at D47001 was modified to fix handling of microMIPS symbols. The `AsmParser::parseDirectiveValue` calls either `EmitIntValue` or `EmitValue`. In this patch we override `EmitIntValue` in the `MipsELFStreamer` to clear a pending set of microMIPS symbols. Differential revision: https://reviews.llvm.org/D49539 llvm-svn: 337893
103 lines
2.0 KiB
ArmAsm
103 lines
2.0 KiB
ArmAsm
# RUN: llvm-mc %s -triple=mipsel-unknown-linux -mcpu=mips32r2 \
|
|
# RUN: -mattr=+micromips -filetype=obj -o - | llvm-readobj -t | FileCheck %s
|
|
.text
|
|
.set nomicromips
|
|
f:
|
|
nop
|
|
g:
|
|
.set micromips
|
|
nop
|
|
h:
|
|
.word 0
|
|
k:
|
|
.long 0
|
|
l:
|
|
.hword 0
|
|
m:
|
|
.2byte 0
|
|
n:
|
|
.4byte 0
|
|
o:
|
|
.8byte 0
|
|
i:
|
|
nop
|
|
j:
|
|
.set nomicromips
|
|
nop
|
|
# CHECK: Symbols [
|
|
# CHECK: Symbol {
|
|
# CHECK: Name: f
|
|
# CHECK: Binding: Local
|
|
# CHECK: Type: None
|
|
# CHECK: Other: 0
|
|
# CHECK: Section: .text
|
|
# CHECK: }
|
|
# CHECK: Symbol {
|
|
# CHECK: Name: g
|
|
# CHECK: Binding: Local
|
|
# CHECK: Type: None
|
|
# CHECK: Other [ (0x80)
|
|
# CHECK: STO_MIPS_MICROMIPS
|
|
# CHECK: ]
|
|
# CHECK: Section: .text
|
|
# CHECK: }
|
|
# CHECK: Symbol {
|
|
# CHECK: Name: h
|
|
# CHECK: Binding: Local
|
|
# CHECK: Type: None
|
|
# CHECK: Other: 0
|
|
# CHECK: Section: .text
|
|
# CHECK: }
|
|
# CHECK: Symbol {
|
|
# CHECK: Name: i
|
|
# CHECK: Binding: Local
|
|
# CHECK: Type: None
|
|
# CHECK: Other [ (0x80)
|
|
# CHECK: STO_MIPS_MICROMIPS
|
|
# CHECK: ]
|
|
# CHECK: Section: .text
|
|
# CHECK: }
|
|
# CHECK: Symbol {
|
|
# CHECK: Name: j
|
|
# CHECK: Binding: Local
|
|
# CHECK: Type: None
|
|
# CHECK: Other: 0
|
|
# CHECK: Section: .text
|
|
# CHECK: }
|
|
# CHECK: Symbol {
|
|
# CHECK: Name: k
|
|
# CHECK: Binding: Local
|
|
# CHECK: Type: None
|
|
# CHECK: Other: 0
|
|
# CHECK: Section: .text
|
|
# CHECK: }
|
|
# CHECK: Symbol {
|
|
# CHECK: Name: l
|
|
# CHECK: Binding: Local
|
|
# CHECK: Type: None
|
|
# CHECK: Other: 0
|
|
# CHECK: Section: .text
|
|
# CHECK: }
|
|
# CHECK: Symbol {
|
|
# CHECK: Name: m
|
|
# CHECK: Binding: Local
|
|
# CHECK: Type: None
|
|
# CHECK: Other: 0
|
|
# CHECK: Section: .text
|
|
# CHECK: }
|
|
# CHECK: Symbol {
|
|
# CHECK: Name: n
|
|
# CHECK: Binding: Local
|
|
# CHECK: Type: None
|
|
# CHECK: Other: 0
|
|
# CHECK: Section: .text
|
|
# CHECK: }
|
|
# CHECK: Symbol {
|
|
# CHECK: Name: o
|
|
# CHECK: Binding: Local
|
|
# CHECK: Type: None
|
|
# CHECK: Other: 0
|
|
# CHECK: Section: .text
|
|
# CHECK: }
|
|
# CHECK: ]
|