From: Aleksey Demakov Date: Sun, 22 Oct 2006 23:51:41 +0000 (+0000) Subject: remove excessive and buggy patterns from JIT_OP_EXPAND_INT and X-Git-Tag: before.move.to.git~183 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=5691831f5fbbc39d065861341ff90d59f0571a9b;p=francis%2Flibjit.git remove excessive and buggy patterns from JIT_OP_EXPAND_INT and JIT_OP_EXPAND_UINT rules --- 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) {