* @param proj the pn_Call_T_result Proj
* @param l_res the lower 32 bit result
* @param h_res the upper 32 bit result or NULL
- * @param irg the graph to replace on
*/
-static void reroute_result(ir_node *proj, ir_node *l_res, ir_node *h_res, ir_graph *irg)
+static void reroute_result(ir_node *proj, ir_node *l_res, ir_node *h_res)
{
const ir_edge_t *edge, *next;
long pn = get_Proj_proj(proj);
if (pn == 0) {
- edges_reroute(proj, l_res, irg);
+ edges_reroute(proj, l_res);
} else if (pn == 1 && h_res != NULL) {
- edges_reroute(proj, h_res, irg);
+ edges_reroute(proj, h_res);
} else {
panic("Unsupported Result-Proj from Call found");
}
static void resolve_call(ir_node *call, ir_node *l_res, ir_node *h_res, ir_graph *irg, ir_node *block)
{
ir_node *jmp, *res, *in[2];
- ir_node *bad = get_irg_bad(irg);
ir_node *nomem = get_irg_no_mem(irg);
int old_cse;
set_opt_cse(0);
jmp = new_r_Jmp(block);
set_opt_cse(old_cse);
- edges_reroute(proj, jmp, irg);
+ edges_reroute(proj, jmp);
break;
case pn_Call_X_except:
/* should not happen here */
- edges_reroute(proj, bad, irg);
+ edges_reroute(proj, new_r_Bad(irg, mode_X));
break;
case pn_Call_M:
/* should not happen here */
- edges_reroute(proj, nomem, irg);
+ edges_reroute(proj, nomem);
break;
case pn_Call_T_result:
- reroute_result(proj, l_res, h_res, irg);
+ reroute_result(proj, l_res, h_res);
break;
default:
panic("Wrong Proj from Call");
jmp = new_r_Jmp(block);
set_opt_cse(old_cse);
- set_Tuple_pred(call, pn_Call_M, nomem);
- set_Tuple_pred(call, pn_Call_X_regular, jmp);
- set_Tuple_pred(call, pn_Call_X_except, bad);
- set_Tuple_pred(call, pn_Call_T_result, res);
+ set_Tuple_pred(call, pn_Call_M, nomem);
+ set_Tuple_pred(call, pn_Call_X_regular, jmp);
+ set_Tuple_pred(call, pn_Call_X_except, new_r_Bad(irg, mode_X));
+ set_Tuple_pred(call, pn_Call_T_result, res);
}
}