From 5691831f5fbbc39d065861341ff90d59f0571a9b Mon Sep 17 00:00:00 2001 From: Aleksey Demakov Date: Sun, 22 Oct 2006 23:51:41 +0000 Subject: [PATCH] remove excessive and buggy patterns from JIT_OP_EXPAND_INT and JIT_OP_EXPAND_UINT rules --- ChangeLog | 7 +++++++ jit/jit-rules-x86.ins | 18 ------------------ 2 files changed, 7 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index 109fc9d..7f686dc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-10-23 Aleksey Demakov + + * jit/jit-rules-x86.ins: JIT_OP_EXPAND_INT and JIT_OP_EXPAND_UINT + rules were broken for local byte or short values. Fixed by removing + the local pattern altogether as the reg pattern produces the same + code but without the bug. + 2006-10-18 Aleksey Demakov * jit/jit-reg-alloc.c (clobbers_register, bind_value): enable diff --git a/jit/jit-rules-x86.ins b/jit/jit-rules-x86.ins index f1f97f5..97dd12b 100644 --- a/jit/jit-rules-x86.ins +++ b/jit/jit-rules-x86.ins @@ -118,16 +118,6 @@ JIT_OP_LOW_WORD: } JIT_OP_EXPAND_INT: - [=lreg, imm] -> { - x86_mov_reg_imm(inst, $1, $2); - x86_mov_reg_reg(inst, %1, $1, 4); - x86_shift_reg_imm(inst, X86_SAR, %1, 31); - } - [=lreg, local] -> { - x86_mov_reg_membase(inst, $1, X86_EBP, $2, 4); - x86_mov_reg_reg(inst, %1, $1, 4); - x86_shift_reg_imm(inst, X86_SAR, %1, 31); - } [=lreg, reg] -> { if($1 != $2) { @@ -138,14 +128,6 @@ JIT_OP_EXPAND_INT: } JIT_OP_EXPAND_UINT: - [=lreg, imm] -> { - x86_mov_reg_imm(inst, $1, $2); - x86_clear_reg(inst, %1); - } - [=lreg, local] -> { - x86_mov_reg_membase(inst, $1, X86_EBP, $2, 4); - x86_clear_reg(inst, %1); - } [=lreg, reg] -> { if($1 != $2) { -- 2.47.3