+ node_t *node = get_irn_node(irn);
+
+ if (is_Block(irn)) {
+ if (node->type.tv == tarval_unreachable) {
+ set_Block_dead(irn);
+ }
+ } else {
+ node_t *block = get_irn_node(get_nodes_block(irn));
+
+ if (block->type.tv == tarval_unreachable) {
+ DB((dbg, LEVEL_1, "%+F is unreachable\n", irn));
+ exchange(irn, get_irg_bad(current_ir_graph));
+ }
+ else if (get_irn_mode(irn) == mode_X) {
+ if (node->type.tv == tarval_unreachable) {
+ DB((dbg, LEVEL_1, "%+F is unreachable\n", irn));
+ exchange(irn, get_irg_bad(current_ir_graph));
+ }
+ else if (is_Proj(irn)) {
+ /* leave or Jmp */
+ ir_node *cond = get_Proj_pred(irn);
+
+ if (is_Cond(cond)) {
+ ir_node *sel = get_Cond_selector(cond);