* @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");
}
foreach_out_edge_safe(call, edge, next) {
ir_node *proj = get_edge_src_irn(edge);
- pn_Call pn = get_Proj_proj(proj);
+ pn_Call pn = (pn_Call)get_Proj_proj(proj);
switch (pn) {
case pn_Call_X_regular:
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:
- case pn_Call_P_value_res_base:
/* should not happen here */
- edges_reroute(proj, bad, irg);
+ edges_reroute(proj, bad);
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");
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_P_value_res_base, bad);
}
}
/* the shift count is a const, create better code */
ir_tarval *tv = get_Const_tarval(cnt);
- if (tarval_cmp(tv, new_tarval_from_long(32, l_mode)) & (pn_Cmp_Gt|pn_Cmp_Eq)) {
+ if (tarval_cmp(tv, new_tarval_from_long(32, l_mode))
+ & (ir_relation_greater_equal)) {
/* simplest case: shift only the lower bits. Note that there is no
need to reduce the constant here, this is done by the hardware. */
ir_node *conv = new_rd_Conv(dbg, block, a_l, h_mode);
c_mode = get_irn_mode(cnt);
irn = new_r_Const_long(irg, c_mode, 32);
irn = new_rd_And(dbg, upper, cnt, irn, c_mode);
- irn = new_rd_Cmp(dbg, upper, irn, new_r_Const(irg, get_mode_null(c_mode)));
- irn = new_r_Proj(irn, mode_b, pn_Cmp_Eq);
+ irn = new_rd_Cmp(dbg, upper, irn, new_r_Const(irg, get_mode_null(c_mode)), ir_relation_equal);
cond = new_rd_Cond(dbg, upper, irn);
in[0] = new_r_Proj(cond, mode_X, pn_Cond_true);
/* move it down */
set_nodes_block(call, block);
- for (irn = get_irn_link(call); irn != NULL; irn = get_irn_link(irn))
+ for (irn = (ir_node*)get_irn_link(call); irn != NULL;
+ irn = (ir_node*)get_irn_link(irn)) {
set_nodes_block(irn, block);
+ }
resolve_call(call, l_res, h_res, irg, block);
return 1;
/* the shift count is a const, create better code */
ir_tarval *tv = get_Const_tarval(cnt);
- if (tarval_cmp(tv, new_tarval_from_long(32, l_mode)) & (pn_Cmp_Gt|pn_Cmp_Eq)) {
+ if (tarval_cmp(tv, new_tarval_from_long(32, l_mode)) & (ir_relation_greater_equal)) {
/* simplest case: shift only the higher bits. Note that there is no
need to reduce the constant here, this is done by the hardware. */
ir_node *conv = new_rd_Conv(dbg, block, a_h, l_mode);
c_mode = get_irn_mode(cnt);
irn = new_r_Const_long(irg, c_mode, 32);
irn = new_rd_And(dbg, upper, cnt, irn, c_mode);
- irn = new_rd_Cmp(dbg, upper, irn, new_r_Const(irg, get_mode_null(c_mode)));
- irn = new_r_Proj(irn, mode_b, pn_Cmp_Eq);
+ irn = new_rd_Cmp(dbg, upper, irn, new_r_Const(irg, get_mode_null(c_mode)), ir_relation_equal);
cond = new_rd_Cond(dbg, upper, irn);
in[0] = new_r_Proj(cond, mode_X, pn_Cond_true);
/* move it down */
set_nodes_block(call, block);
- for (irn = get_irn_link(call); irn != NULL; irn = get_irn_link(irn))
+ for (irn = (ir_node*)get_irn_link(call); irn != NULL;
+ irn = (ir_node*)get_irn_link(irn)) {
set_nodes_block(irn, block);
+ }
resolve_call(call, l_res, h_res, irg, block);
return 1;
/* the shift count is a const, create better code */
ir_tarval *tv = get_Const_tarval(cnt);
- if (tarval_cmp(tv, new_tarval_from_long(32, l_mode)) & (pn_Cmp_Gt|pn_Cmp_Eq)) {
+ if (tarval_cmp(tv, new_tarval_from_long(32, l_mode)) & (ir_relation_greater_equal)) {
/* simplest case: shift only the higher bits. Note that there is no
need to reduce the constant here, this is done by the hardware. */
ir_node *conv = new_rd_Conv(dbg, block, a_h, l_mode);
c_mode = get_irn_mode(cnt);
irn = new_r_Const_long(irg, c_mode, 32);
irn = new_rd_And(dbg, upper, cnt, irn, c_mode);
- irn = new_rd_Cmp(dbg, upper, irn, new_r_Const(irg, get_mode_null(c_mode)));
- irn = new_r_Proj(irn, mode_b, pn_Cmp_Eq);
+ irn = new_rd_Cmp(dbg, upper, irn, new_r_Const(irg, get_mode_null(c_mode)), ir_relation_equal);
cond = new_rd_Cond(dbg, upper, irn);
in[0] = new_r_Proj(cond, mode_X, pn_Cond_true);
/* move it down */
set_nodes_block(call, block);
- for (irn = get_irn_link(call); irn != NULL; irn = get_irn_link(irn))
+ for (irn = (ir_node*)get_irn_link(call); irn != NULL;
+ irn = (ir_node*)get_irn_link(irn)) {
set_nodes_block(irn, block);
+ }
resolve_call(call, l_res, h_res, irg, block);
return 1;
*/
static int map_Div(ir_node *call, void *ctx)
{
- ia32_intrinsic_env_t *env = ctx;
+ ia32_intrinsic_env_t *env = (ia32_intrinsic_env_t*)ctx;
ir_type *method = get_Call_type(call);
ir_mode *h_mode = get_type_mode(get_method_res_type(method, 1));
ir_node *ptr;
*/
static int map_Mod(ir_node *call, void *ctx)
{
- ia32_intrinsic_env_t *env = ctx;
+ ia32_intrinsic_env_t *env = (ia32_intrinsic_env_t*)ctx;
ir_type *method = get_Call_type(call);
ir_mode *h_mode = get_type_mode(get_method_res_type(method, 1));
ir_node *ptr;
part_block(call);
upper_blk = get_nodes_block(call);
- cmp = new_rd_Cmp(dbg, upper_blk, a_f, flt_corr);
- proj = new_r_Proj(cmp, mode_b, pn_Cmp_Lt);
- cond = new_rd_Cond(dbg, upper_blk, proj);
+ cmp = new_rd_Cmp(dbg, upper_blk, a_f, flt_corr, ir_relation_less);
+ cond = new_rd_Cond(dbg, upper_blk, cmp);
in[0] = new_r_Proj(cond, mode_X, pn_Cond_true);
in[1] = new_r_Proj(cond, mode_X, pn_Cond_false);
blk = new_r_Block(irg, 1, &in[1]);
/* move the call and its Proj's to the lower block */
set_nodes_block(call, lower_blk);
- for (proj = get_irn_link(call); proj != NULL; proj = get_irn_link(proj))
+ for (proj = (ir_node*)get_irn_link(call); proj != NULL;
+ proj = (ir_node*)get_irn_link(proj)) {
set_nodes_block(proj, lower_blk);
+ }
block = lower_blk;
}
/* lower the call */