From 2f7da22ade10e502888999170ef42fcf9a619852 Mon Sep 17 00:00:00 2001 From: Christoph Mallon Date: Sat, 4 Oct 2008 07:43:39 +0000 Subject: [PATCH] Use ia32_copy_am_attrs() for splitting IMul reg, mem, imm and also reset base and index. [r22455] --- ir/be/ia32/ia32_optimize.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/ir/be/ia32/ia32_optimize.c b/ir/be/ia32/ia32_optimize.c index 2288e61db..719c158d5 100644 --- a/ir/be/ia32/ia32_optimize.c +++ b/ir/be/ia32/ia32_optimize.c @@ -1171,18 +1171,14 @@ static void peephole_ia32_Imul_split(ir_node *imul) { load = new_rd_ia32_Load(dbgi, irg, block, base, index, mem); /* copy all attributes */ - set_irn_pinned(load, get_irn_pinned(imul)); - set_ia32_op_type(load, ia32_AddrModeS); - set_ia32_ls_mode(load, get_ia32_ls_mode(imul)); - - set_ia32_am_scale(load, get_ia32_am_scale(imul)); - set_ia32_am_sc(load, get_ia32_am_sc(imul)); - set_ia32_am_offs_int(load, get_ia32_am_offs_int(imul)); - if (is_ia32_am_sc_sign(imul)) - set_ia32_am_sc_sign(load); - if (is_ia32_use_frame(imul)) - set_ia32_use_frame(load); - set_ia32_frame_ent(load, get_ia32_frame_ent(imul)); + set_irn_pinned( load, get_irn_pinned(imul)); + set_ia32_op_type( load, ia32_AddrModeS); + ia32_copy_am_attrs(load, imul); + + set_ia32_am_offs_int( imul, 0); + set_ia32_am_sc( imul, NULL); + set_ia32_am_scale( imul, 0); + clear_ia32_am_sc_sign(imul); sched_add_before(imul, load); @@ -1194,7 +1190,9 @@ static void peephole_ia32_Imul_split(ir_node *imul) { set_irn_n(imul, n_ia32_IMul_mem, mem); noreg = get_irn_n(imul, n_ia32_IMul_left); - set_irn_n(imul, n_ia32_IMul_left, res); + set_irn_n(imul, n_ia32_IMul_base, noreg); + set_irn_n(imul, n_ia32_IMul_index, noreg); + set_irn_n(imul, n_ia32_IMul_left, res); set_ia32_op_type(imul, ia32_Normal); } -- 2.20.1