From: Götz Lindenmaier Date: Wed, 1 Oct 2003 14:12:27 +0000 (+0000) Subject: bugfixes X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=071a25888579c12f2975cec66c844e043ab9a8e9;p=libfirm bugfixes [r1899] --- diff --git a/ir/ir/ircgcons.c b/ir/ir/ircgcons.c index 929e5e28f..4e6f2cdd7 100644 --- a/ir/ir/ircgcons.c +++ b/ir/ir/ircgcons.c @@ -782,6 +782,9 @@ static void destruct_walker(ir_node * node, void * env) { exchange(node, new_Jmp()); } else if (get_irn_op(node) == op_Call) { remove_Call_callee_arr(node); + } else if (get_irn_op(node) == op_Proj) { + // some ProjX end up in strage blocks. + set_nodes_block(node, get_nodes_block(get_Proj_pred(node))); } } diff --git a/ir/ir/irgopt.c b/ir/ir/irgopt.c index 4cb15d2da..5da5d4660 100644 --- a/ir/ir/irgopt.c +++ b/ir/ir/irgopt.c @@ -778,7 +778,7 @@ void inline_method(ir_node *call, ir_graph *called_graph) { if (get_irn_op(cf_op) == op_Proj) { cf_op = get_Proj_pred(cf_op); if ((get_irn_op(cf_op) == op_Tuple) && (cf_op == call)) { - // There are unoptimized tuples from inlineing before when no exc + // There are unoptimized tuples from inlineing before when no exc assert(get_Proj_proj(get_Block_cfgpred(end_bl, i)) == pn_Call_X_except); cf_op = get_Tuple_pred(cf_op, pn_Call_X_except); assert(get_irn_op(cf_op) == op_Jmp); @@ -799,6 +799,8 @@ void inline_method(ir_node *call, ir_graph *called_graph) { cf_pred[j] = get_Block_cfgpred(end_bl, j-get_Block_n_cfgpreds(bl) +1); set_irn_in(end_bl, arity, cf_pred); free(cf_pred); + // Remove the exception pred from post-call Tuple. + set_Tuple_pred(call, pn_Call_X_except, new_Bad()); } }