X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fopt%2Fscalar_replace.c;h=011af99a9e1a44d7860c5a99cf6f561eb9de20d9;hb=c7dc950ac0cdd7d24acffb798b5867d0db5dd7c8;hp=b073688e315b3515885de3fa299581578a50531d;hpb=e74e0c8fb6ef361347b2f580ce3fa71afe10874e;p=libfirm diff --git a/ir/opt/scalar_replace.c b/ir/opt/scalar_replace.c index b073688e3..011af99a9 100644 --- a/ir/opt/scalar_replace.c +++ b/ir/opt/scalar_replace.c @@ -514,6 +514,9 @@ static void topologic_walker(ir_node *node, void *ctx) { DB((dbg, SET_LEVEL_3, "replacing by value %u\n", vnum)); + block = get_nodes_block(node); + set_cur_block(block); + /* check, if we can replace this Load */ val = get_value(vnum, env->modes[vnum]); @@ -529,11 +532,10 @@ static void topologic_walker(ir_node *node, void *ctx) { val = new_d_Conv(get_irn_dbg_info(node), val, mode); mem = get_Load_mem(node); - block = get_nodes_block(node); turn_into_tuple(node, pn_Load_max); set_Tuple_pred(node, pn_Load_M, mem); set_Tuple_pred(node, pn_Load_res, val); - set_Tuple_pred(node, pn_Load_X_regular, new_r_Jmp(current_ir_graph, block)); + set_Tuple_pred(node, pn_Load_X_regular, new_Jmp()); set_Tuple_pred(node, pn_Load_X_except, new_Bad()); } else if (op == op_Store) { DB((dbg, SET_LEVEL_3, " checking %+F for replacement ", node)); @@ -560,14 +562,15 @@ static void topologic_walker(ir_node *node, void *ctx) { val = get_Store_value(node); if (get_irn_mode(val) != env->modes[vnum]) val = new_d_Conv(get_irn_dbg_info(node), val, env->modes[vnum]); - set_value(vnum, val); - mem = get_Store_mem(node); block = get_nodes_block(node); + set_cur_block(block); + set_value(vnum, val); + mem = get_Store_mem(node); turn_into_tuple(node, pn_Store_max); set_Tuple_pred(node, pn_Store_M, mem); - set_Tuple_pred(node, pn_Store_X_regular, new_r_Jmp(current_ir_graph, block)); + set_Tuple_pred(node, pn_Store_X_regular, new_Jmp()); set_Tuple_pred(node, pn_Store_X_except, new_Bad()); } } @@ -604,7 +607,7 @@ static void do_scalar_replacements(pset *sels, int nvals, ir_mode **modes) { * * @param irg The current ir graph. */ -void scalar_replacement_opt(ir_graph *irg) { +int scalar_replacement_opt(ir_graph *irg) { unsigned nvals; int i; scalars_t key, *value; @@ -685,7 +688,7 @@ void scalar_replacement_opt(ir_graph *irg) { set_irg_outs_inconsistent(irg); set_irg_loopinfo_inconsistent(irg); - res = 1 + res = 1; } del_pset(sels); del_set(set_ent);