- for (i = 0; i < op_pred; ++i){
- ir_node *out = get_irn_out(info->op, i);
- ir_op *out_op = get_irn_op(out);
-
- if (out_op == op_Store)
- Store_in_op++;
- else {
- if (out_op == op_Cmp && !is_loop_invariant(out, loop_head)){
- cmp_pred_bl = get_irn_out(out, 0);
- cmp_pred_bl = get_irn_out(cmp_pred_bl, 0);
- cond_succ_true = get_irn_out(cmp_pred_bl, 1);
- cond_succ_false = get_irn_out(cmp_pred_bl, 0);
- if(is_loop_invariant(get_irn_out(cond_succ_false, 0), loop_head) ||
- is_loop_invariant(get_irn_out(cond_succ_true, 0), loop_head)){
- if (get_Cmp_left(out) == info->op)
- cmp_const = get_Cmp_right(out);
- else
- cmp_const = get_Cmp_left(out);
- } else
- continue;
- if (info->cmp == NULL) {
- info->cmp = out;
- info->cmp_const = cmp_const;
- set_irn_link(info->cmp_const, (void *) 1);
- } else {
- info->cmp = NULL;
- return NULL;
- }
- }
- }
- }
-
-
- if((info->phi_pred == 3 && op_pred == 1 && Store_in_phi == 0 && info->cmp != NULL) ||