ir_node *block = get_nodes_block(cond);
ir_mode *cmp_mode = get_irn_mode(sel);
ir_node **default_preds = NEW_ARR_F(ir_node*, 0);
- unsigned long default_pn = get_Cond_default_proj(cond);
+ long default_pn = get_Cond_default_proj(cond);
long delta = 0;
ir_node *max_const;
ir_node *proj_true;
/* adapt projs */
foreach_out_irn(cond, i, proj) {
- unsigned long pn = get_Proj_proj(proj);
- unsigned long new_pn = pn - delta;
+ long pn = get_Proj_proj(proj);
+ long new_pn = pn - delta;
if (pn == default_pn) {
- /* we might have to choose a new default_pn */
- if (pn < (unsigned long) env->switch_max) {
- new_pn = env->switch_max + 1;
- set_Cond_default_proj(cond, new_pn);
- } else {
- new_pn = default_pn;
- }
+ set_Cond_default_proj(cond, new_pn);
ARR_APP1(ir_node*, default_preds, proj);
}
/* adapt default block */
n_default_preds = ARR_LEN(default_preds);
if (n_default_preds > 1) {
- size_t i;
+ size_t p;
/* create new intermediate blocks so we don't have critical edges */
- for (i = 0; i < n_default_preds; ++i) {
- ir_node *proj = default_preds[i];
- ir_node *block;
- ir_node *in[1];
+ for (p = 0; p < n_default_preds; ++p) {
+ ir_node *pred = default_preds[p];
+ ir_node *split_block;
+ ir_node *block_in[1];
- in[0] = proj;
- block = new_r_Block(irg, 1, in);
+ block_in[0] = pred;
+ split_block = new_r_Block(irg, 1, block_in);
- default_preds[i] = new_r_Jmp(block);
+ default_preds[p] = new_r_Jmp(split_block);
}
}
set_irn_in(env->default_block, n_default_preds, default_preds);