- } else if (intern_get_irn_op(node) == op_Filter) {
- set_irg_current_block(current_ir_graph, get_nodes_Block(node));
- exchange(node, new_Proj(get_Filter_pred(node), intern_get_irn_mode(node), get_Filter_proj(node)));
- } else if (intern_get_irn_op(node) == op_Break) {
- set_irg_current_block(current_ir_graph, get_nodes_Block(node));
- exchange(node, new_Jmp());
- } else if (intern_get_irn_op(node) == op_Call) {
+ /* Do not turn Break into Jmp. Better: merge blocks right away. */
+ if (get_Block_n_cfgpreds(node) == 1) {
+ ir_node *pred = get_Block_cfgpred(node, 0);
+ if (get_irn_op(pred) == op_Break)
+ exchange(node, get_nodes_block(pred));
+ }
+ } else if (get_irn_op(node) == op_Filter) {
+ set_irg_current_block(current_ir_graph, get_nodes_block(node));
+ exchange(node, new_Proj(get_Filter_pred(node), get_irn_mode(node), get_Filter_proj(node)));
+ } else if (get_irn_op(node) == op_Break) {
+ //set_irg_current_block(current_ir_graph, get_nodes_block(node));
+ //exchange(node, new_Jmp());
+ } else if (get_irn_op(node) == op_Call) {