1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 12:02:58 +02:00
llvm-mirror/test/MC/Mips/macro-aliases-invalid-wrong-error.s
Simon Dardis ced90969e3 [mips] Partially fix PR34391
Previously, the parsing of the 'subu $reg, ($reg,) imm' relied on a parser
which also rendered the operand to the instruction. In some cases the
general parser could construct an MCExpr which was not a MCConstantExpr
which MipsAsmParser was expecting.

Address this by altering the special handling to cope with unexpected inputs
and fine-tune the handling of cases where an register name that is not
available in the current ABI is regarded as not a match for the custom parser
but also not as an outright error.

Also enforces the binutils restriction that only constants are accepted.

This partially resolves PR34391.

Thanks to Ed Maste for reporting the issue!

Reviewers: nitesh.jain, arichardson

Differential Revision: https://reviews.llvm.org/D37476

llvm-svn: 315310
2017-10-10 13:34:45 +00:00

39 lines
2.8 KiB
ArmAsm

# RUN: not llvm-mc -arch=mips %s 2>%t1
# RUN: FileCheck --check-prefix=O32 %s < %t1
# RUN: not llvm-mc -arch=mips64 %s 2>%t1
# RUN: FileCheck --check-prefix=N64 %s < %t1
# Check that subu only rejects any non-constant values.
.globl end
subu $4, $4, %lo($start) # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
# N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
subu $4, $4, $start # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
# N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
subu $4, $a4, $a4 # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
subu $4, $4, %hi(end) # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
# N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
subu $4, $4, end + 4 # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
# N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
subu $4, $4, end # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
# N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
subu $4, $4, sp # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
# N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
subu $4, %lo($start) # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
# N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
subu $4, $start # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
# N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
subu $4, $a4 # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
subu $4, %hi(end) # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
# N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
subu $4, end + 4 # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
# N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
subu $4, end # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
# N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
subu $4, sp # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
# N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
$start: