*changed |= remove_senseless_conds(block);
- /* clear the block mark of all blocks that have NO label */
+ /* clear the block mark of all non labeled blocks */
if (has_Block_label(block))
- set_Block_removable(block);
- else
set_Block_non_removable(block);
+ else
+ set_Block_removable(block);
}
/**
/* case 1: Do nothing */
} else if (is_Block_removable(pred) && !Block_block_visited(pred)) {
/* case 2: It's an empty block and not yet visited. */
- assert(get_Block_n_cfgpreds(b) > 1);
+ assert(get_Block_n_cfgpreds(b) > 1 || has_Block_label(b));
/* Else it should be optimized by equivalent_node. */
for (j = 0; j < get_Block_n_cfgpreds(pred); j++) {
ir_node *pred_X = get_Block_cfgpred(pred, j);
return dca;
}
-/* FIXME: the name clashes here with the function from ana/field_temperature.c
- * please rename. */
-static inline int get_irn_loop_depth(ir_node *n) {
- return get_loop_depth(get_irn_loop(n));
+static inline int get_block_loop_depth(ir_node *block) {
+ return get_loop_depth(get_irn_loop(block));
}
/**
while (dca != early) {
dca = get_Block_idom(dca);
if (!dca || is_Bad(dca)) break; /* may be Bad if not reachable from Start */
- if (get_irn_loop_depth(dca) < get_irn_loop_depth(best)) {
+ if (get_block_loop_depth(dca) < get_block_loop_depth(best)) {
best = dca;
}
}