execution. */
static int num_updated_if_blocks;
-/* # of basic blocks that were removed. */
-static int num_removed_blocks;
+/* # of changes made which require life information to be updated. */
+static int num_true_changes;
/* Whether conditional execution changes were made. */
static int cond_exec_changed_p;
\f
/* Sets EDGE_LOOP_EXIT flag for all loop exits. */
static void
-mark_loop_exit_edges ()
+mark_loop_exit_edges (void)
{
struct loops loops;
basic_block bb;
}
cond = canonicalize_condition (if_info->jump, cond, reverse,
- earliest, target);
+ earliest, target, false);
if (! cond || ! reg_mentioned_p (target, cond))
return NULL;
/* Otherwise, fall back on canonicalize_condition to do the dirty
work of manipulating MODE_CC values and COMPARE rtx codes. */
- tmp = canonicalize_condition (jump, cond, reverse, earliest, NULL_RTX);
+ tmp = canonicalize_condition (jump, cond, reverse, earliest, NULL_RTX,
+ false);
if (!tmp)
return NULL_RTX;
tmp = XEXP (tmp, 0);
if (!REG_P (tmp) || GET_MODE_CLASS (GET_MODE (tmp)) != MODE_INT)
return NULL_RTX;
- tmp = canonicalize_condition (jump, cond, reverse, earliest, tmp);
+ tmp = canonicalize_condition (jump, cond, reverse, earliest, tmp,
+ false);
if (!tmp)
return NULL_RTX;
if (post_dominators)
delete_from_dominance_info (post_dominators, bb);
merge_blocks (combo_bb, bb);
- num_removed_blocks++;
+ num_true_changes++;
}
while (bb != last_test_bb);
}
if (post_dominators)
delete_from_dominance_info (post_dominators, then_bb);
merge_blocks (combo_bb, then_bb);
- num_removed_blocks++;
+ num_true_changes++;
}
/* The ELSE block, if it existed, had a label. That label count
if (post_dominators)
delete_from_dominance_info (post_dominators, else_bb);
merge_blocks (combo_bb, else_bb);
- num_removed_blocks++;
+ num_true_changes++;
}
/* If there was no join block reported, that means it was not adjacent
if (post_dominators)
delete_from_dominance_info (post_dominators, join_bb);
merge_blocks (combo_bb, join_bb);
- num_removed_blocks++;
+ num_true_changes++;
}
else
{
if (seq == NULL)
return FALSE;
+ num_true_changes++;
+
/* Emit the new insns before cond_earliest. */
emit_insn_before_setloc (seq, cond_earliest, INSN_LOCATOR (trap));
if (post_dominators)
delete_from_dominance_info (post_dominators, trap_bb);
delete_block (trap_bb);
- num_removed_blocks++;
}
/* If the non-trap block and the test are now adjacent, merge them.
/* We've possibly created jump to next insn, cleanup_cfg will solve that
later. */
- num_removed_blocks++;
+ num_true_changes++;
num_updated_if_blocks++;
return TRUE;
delete_from_dominance_info (post_dominators, else_bb);
delete_block (else_bb);
- num_removed_blocks++;
+ num_true_changes++;
num_updated_if_blocks++;
/* ??? We may now fallthru from one of THEN's successors into a join
num_possible_if_blocks = 0;
num_updated_if_blocks = 0;
- num_removed_blocks = 0;
+ num_true_changes = 0;
life_data_ok = (x_life_data_ok != 0);
if (! (* targetm.cannot_modify_jumps_p) ())
clear_aux_for_blocks ();
/* Rebuild life info for basic blocks that require it. */
- if (num_removed_blocks && life_data_ok)
+ if (num_true_changes && life_data_ok)
{
/* If we allocated new pseudos, we must resize the array for sched1. */
if (max_regno < max_reg_num ())
"%d IF blocks converted.\n",
num_updated_if_blocks);
fprintf (rtl_dump_file,
- "%d basic blocks deleted.\n\n\n",
- num_removed_blocks);
+ "%d true changes made.\n\n\n",
+ num_true_changes);
}
#ifdef ENABLE_CHECKING