From 6314e4a6c52efda9637045757a03064fb134cd49 Mon Sep 17 00:00:00 2001 From: Christoph Mallon Date: Wed, 3 Oct 2007 21:18:57 +0000 Subject: [PATCH] Do not transform a Shl by 0-3 into a Lea. A Lea with only index and no base always has a 4 byte displacement, so the opcode is longer than a Mov + Shl. [r16070] --- ir/be/ia32/ia32_transform.c | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/ir/be/ia32/ia32_transform.c b/ir/be/ia32/ia32_transform.c index 098387289..7c62241b9 100644 --- a/ir/be/ia32/ia32_transform.c +++ b/ir/be/ia32/ia32_transform.c @@ -1340,27 +1340,6 @@ static ir_node *gen_Quot(ir_node *node) * @return The created ia32 Shl node */ static ir_node *gen_Shl(ir_node *node) { - ir_node *right = get_Shl_right(node); - - /* test whether we can build a lea */ - if(is_Const(right)) { - tarval *tv = get_Const_tarval(right); - if(tarval_is_long(tv)) { - long val = get_tarval_long(tv); - if(val >= 0 && val <= 3) { - ir_graph *irg = current_ir_graph; - dbg_info *dbgi = get_irn_dbg_info(node); - ir_node *block = be_transform_node(get_nodes_block(node)); - ir_node *base = ia32_new_NoReg_gp(env_cg); - ir_node *index = be_transform_node(get_Shl_left(node)); - ir_node *res = new_rd_ia32_Lea(dbgi, irg, block, base, index); - set_ia32_am_scale(res, val); - SET_IA32_ORIG_NODE(res, ia32_get_old_node_name(env_cg, node)); - return res; - } - } - } - return gen_shift_binop(node, get_Shl_left(node), get_Shl_right(node), new_rd_ia32_Shl); } -- 2.20.1