From e7ef087598d74e3329a7f0b24af8430faf639606 Mon Sep 17 00:00:00 2001 From: Michael Matz Date: Wed, 24 Aug 2016 17:50:23 +0200 Subject: [PATCH] x86-asm: Accept all 32bit immediates In particular don't care if they're signed or unsigned, they're all acceptable as immediates. --- i386-asm.c | 2 +- tests/asmtest.S | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/i386-asm.c b/i386-asm.c index 3d87e92..473088b 100644 --- a/i386-asm.c +++ b/i386-asm.c @@ -423,7 +423,7 @@ static void parse_operand(TCCState *s1, Operand *op) if (op->e.v == (uint16_t)op->e.v) op->type |= OP_IM16; #ifdef TCC_TARGET_X86_64 - if (op->e.v != (int32_t)op->e.v) + if (op->e.v != (int32_t)op->e.v && op->e.v != (uint32_t)op->e.v) op->type = OP_IM64; #endif } diff --git a/tests/asmtest.S b/tests/asmtest.S index c19db06..59deb06 100644 --- a/tests/asmtest.S +++ b/tests/asmtest.S @@ -49,6 +49,8 @@ movw %ax, 0x100(%ebx,%edx,2) movw $0x1122,%si movl $0x112233,%edx +movl $0x80000000, %esi +movl $-0x7fffffff, %edi #ifdef __x86_64__ mov $0x11223344,%rbx movq $0x11223344,%rbx