*/
static void maybe_kill_node(ir_node *node)
{
- ir_graph *irg;
- int i, arity;
-
if (get_irn_n_edges(node) != 0)
return;
- irg = get_irn_irg(node);
-
- assert(!is_Bad(node));
-
- arity = get_irn_arity(node);
- for (i = 0; i < arity; ++i) {
- set_irn_n(node, i, new_r_Bad(irg));
- }
- set_nodes_block(node, new_r_Bad(irg));
-
- edges_node_deleted(node);
+ kill_node(node);
}
static ir_node *create_not(dbg_info *dbgi, ir_node *node)
if (res != NULL)
return res;
+ node = skip_Tuple(node);
+
assert(get_irn_mode(node) == mode_b);
irg = get_irn_irg(node);
set_irn_mode(node, mode);
res = node;
goto own_replacement;
- } else {
- panic("unexpected projb: %+F (pred: %+F)", node, pred);
}
- break;
+ panic("unexpected projb: %+F (pred: %+F)", node, pred);
}
case iro_Const: {
ir_free_resources(irg, IR_RESOURCE_IRN_LINK);
if (changed) {
- set_irg_outs_inconsistent(irg);
/* lowering might create new blocks, so be sure to handle this */
set_irg_extblk_inconsistent(irg);
set_irg_doms_inconsistent(irg);
- set_irg_loopinfo_inconsistent(irg);
+ edges_deactivate(irg);
}
}