From: Peter Johnson Date: Sun, 11 Jun 2006 20:30:46 +0000 (-0000) Subject: x86_bc_insn_expand(): Don't require ea/imm to be abs to expand, and check X-Git-Tag: v0.6.0~172^2~21 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8e554a59ac8cac46530b3cbf42b9494a1193d441;p=yasm x86_bc_insn_expand(): Don't require ea/imm to be abs to expand, and check span ID. dwarf32_testhd.hex: New optimizer downsizes .text by 4 bytes, update. svn path=/branches/new-optimizer/; revision=1570 --- diff --git a/modules/arch/x86/x86bc.c b/modules/arch/x86/x86bc.c index 3c1766fc..1f5be62b 100644 --- a/modules/arch/x86/x86bc.c +++ b/modules/arch/x86/x86bc.c @@ -607,7 +607,7 @@ x86_bc_insn_expand(yasm_bytecode *bc, int span, long old_val, long new_val, yasm_effaddr *ea = &x86_ea->ea; yasm_immval *imm = insn->imm; - if (ea && ea->disp.abs) { + if (ea && span == 1) { /* Change displacement length into word-sized */ if (ea->disp.size == 0) { ea->disp.size = (insn->common.addrsize == 16) ? 16 : 32; @@ -618,7 +618,7 @@ x86_bc_insn_expand(yasm_bytecode *bc, int span, long old_val, long new_val, } } - if (imm && imm->val.abs) { + if (imm && span == 2) { if (insn->postop == X86_POSTOP_SIGNEXT_IMM8) { /* Update bc->len for new opcode and immediate size */ bc->len -= insn->opcode.len; diff --git a/modules/dbgfmts/dwarf2/tests/pass32/dwarf32_testhd.hex b/modules/dbgfmts/dwarf2/tests/pass32/dwarf32_testhd.hex index 3f197330..c145c87f 100644 --- a/modules/dbgfmts/dwarf2/tests/pass32/dwarf32_testhd.hex +++ b/modules/dbgfmts/dwarf2/tests/pass32/dwarf32_testhd.hex @@ -109,7 +109,7 @@ b8 00 00 e9 -ad +a9 00 00 00 @@ -138,7 +138,7 @@ c4 85 c0 75 -34 +30 83 ec 04 @@ -166,14 +166,10 @@ b8 00 00 00 -e9 -73 -00 -00 -00 -8d -76 -00 +eb +72 +89 +f6 83 ec 08 @@ -358,7 +354,7 @@ c3 56 00 00 -75 +71 00 00 00 @@ -366,7 +362,7 @@ c3 4b 00 00 -7a +76 00 00 00 @@ -374,7 +370,7 @@ c3 58 00 00 -86 +82 00 00 00 @@ -382,7 +378,7 @@ c3 59 00 00 -94 +90 00 00 00 @@ -390,7 +386,7 @@ c3 5a 00 00 -a8 +a4 00 00 00 @@ -398,7 +394,7 @@ a8 5b 00 00 -ba +b6 00 00 00 @@ -406,7 +402,7 @@ ba 4b 00 00 -c0 +bc 00 00 00 @@ -414,7 +410,7 @@ c0 55 00 00 -c5 +c1 00 00 00 @@ -422,7 +418,7 @@ c5 56 00 00 -d5 +d1 00 00 00 @@ -718,7 +714,7 @@ d5 00 00 00 -e7 +e3 00 00 00 @@ -1413,7 +1409,7 @@ d0 00 00 00 -e7 +e3 00 00 00 @@ -2054,7 +2050,7 @@ af 75 08 59 -cc +94 02 22 14 @@ -2186,7 +2182,7 @@ ff 00 00 00 -e7 +e3 00 00 00 @@ -2294,7 +2290,7 @@ b2 00 00 00 -e7 +e3 00 00 00 @@ -4418,7 +4414,7 @@ e8 01 00 00 -e7 +e3 00 00 00 @@ -4546,7 +4542,7 @@ e2 00 00 00 -e7 +e3 00 00 00 @@ -4562,7 +4558,7 @@ de 00 00 00 -d0 +cc 00 00 00 @@ -4578,7 +4574,7 @@ da 00 00 00 -b3 +af 00 00 00 @@ -4594,7 +4590,7 @@ d6 00 00 00 -a3 +9f 00 00 00 @@ -4610,7 +4606,7 @@ d2 00 00 00 -70 +6c 00 00 00 @@ -4626,7 +4622,7 @@ ce 00 00 00 -81 +7d 00 00 00 @@ -4642,7 +4638,7 @@ ca 00 00 00 -e0 +dc 00 00 00 @@ -4998,7 +4994,7 @@ a3 00 00 00 -e7 +e3 00 00 00 @@ -5174,6 +5170,10 @@ e7 00 00 00 +00 +00 +00 +00 ee 00 00 @@ -5190,7 +5190,7 @@ ee 00 00 00 -dc +d8 0a 00 00 @@ -5230,7 +5230,7 @@ de 00 00 00 -d4 +d0 0b 00 00 @@ -5270,7 +5270,7 @@ e6 00 00 00 -40 +3c 0e 00 00 @@ -5314,7 +5314,7 @@ d0 00 00 00 -e7 +e3 00 00 00 @@ -5350,7 +5350,7 @@ e7 00 00 00 -28 +24 01 00 00 @@ -5390,7 +5390,7 @@ e7 00 00 00 -b0 +ac 01 00 00 @@ -5430,7 +5430,7 @@ b0 00 00 00 -c0 +bc 02 00 00 @@ -5470,7 +5470,7 @@ c0 00 00 00 -ec +e8 05 00 00 @@ -5510,7 +5510,7 @@ ec 00 00 00 -74 +70 07 00 00 @@ -5550,7 +5550,7 @@ a4 00 00 00 -18 +14 08 00 00 @@ -5590,7 +5590,7 @@ a4 00 00 00 -20 +1c 08 00 00 @@ -5630,7 +5630,7 @@ a4 00 00 00 -6c +68 08 00 00 @@ -5670,7 +5670,7 @@ a6 00 00 00 -b0 +ac 08 00 00 @@ -5710,7 +5710,7 @@ b0 00 00 00 -c0 +bc 08 00 00 @@ -5750,7 +5750,7 @@ b7 00 00 00 -dc +d8 08 00 00 @@ -5790,7 +5790,7 @@ dc 00 00 00 -e4 +e0 08 00 00 @@ -5830,7 +5830,7 @@ cb 00 00 00 -04 +00 09 00 00 @@ -5870,7 +5870,7 @@ cb 00 00 00 -14 +10 09 00 00 @@ -5910,7 +5910,7 @@ a1 00 00 00 -b5 +b1 0a 00 00