From: Matthias Braun Date: Thu, 13 Sep 2007 08:32:13 +0000 (+0000) Subject: fix flags code for mem-input changes X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=13f415de8399c17e4297eacf3c4003a54ff23dfc;p=libfirm fix flags code for mem-input changes [r15771] --- diff --git a/ir/be/ia32/bearch_ia32.c b/ir/be/ia32/bearch_ia32.c index c974a6e40..8aef2c70a 100644 --- a/ir/be/ia32/bearch_ia32.c +++ b/ir/be/ia32/bearch_ia32.c @@ -946,9 +946,9 @@ static void turn_back_am(ir_node *node) ir_graph *irg = current_ir_graph; dbg_info *dbgi = get_irn_dbg_info(node); ir_node *block = get_nodes_block(node); - ir_node *base = get_irn_n(node, 0); - ir_node *index = get_irn_n(node, 1); - ir_node *mem; + ir_node *base = get_irn_n(node, n_ia32_base); + ir_node *index = get_irn_n(node, n_ia32_index); + ir_node *mem = get_irn_n(node, n_ia32_mem); ir_node *load; ir_node *load_res; ir_node *mem_proj; @@ -956,28 +956,18 @@ static void turn_back_am(ir_node *node) ir_fprintf(stderr, "truning back AM in %+F\n", node); - if(get_ia32_am_arity(node) == ia32_am_unary) { - mem = get_irn_n(node, 3); - } else if(get_ia32_am_arity(node) == ia32_am_binary) { - mem = get_irn_n(node, 4); - } else { - assert(get_ia32_am_arity(node) == ia32_am_ternary); - mem = get_irn_n(node, 5); - } - load = new_rd_ia32_Load(dbgi, irg, block, base, index, mem); load_res = new_rd_Proj(dbgi, irg, block, load, mode_Iu, pn_ia32_Load_res); ia32_copy_am_attrs(load, node); + set_irn_n(node, n_ia32_mem, new_NoMem()); + if(get_ia32_am_arity(node) == ia32_am_unary) { - set_irn_n(node, 2, load_res); - set_irn_n(node, 3, new_NoMem()); + set_irn_n(node, n_ia32_unary_op, load_res); } else if(get_ia32_am_arity(node) == ia32_am_binary) { - set_irn_n(node, 3, load_res); - set_irn_n(node, 4, new_NoMem()); + set_irn_n(node, n_ia32_binary_right, load_res); } else if(get_ia32_am_arity(node) == ia32_am_ternary) { - set_irn_n(node, 3, load_res); - set_irn_n(node, 4, new_NoMem()); + set_irn_n(node, n_ia32_binary_right, load_res); } /* rewire mem-proj */ diff --git a/ir/be/ia32/ia32_transform.c b/ir/be/ia32/ia32_transform.c index ee8b3d8ad..face275ce 100644 --- a/ir/be/ia32/ia32_transform.c +++ b/ir/be/ia32/ia32_transform.c @@ -3651,8 +3651,8 @@ static ir_node *gen_ia32_l_Adc(ir_node *node) { match_arguments(&am, src_block, op1, op2, 1, 0, 1, 0); - new_node = new_rd_ia32_Adc(dbgi, irg, block, addr->base, addr->index, am.new_op1, - am.new_op2, addr->mem, new_flags); + new_node = new_rd_ia32_Adc(dbgi, irg, block, addr->base, addr->index, + addr->mem, am.new_op1, am.new_op2, new_flags); set_am_attributes(new_node, &am); /* we can't use source address mode anymore when using immediates */ if(is_ia32_Immediate(am.new_op1) || is_ia32_Immediate(am.new_op2))