*/
static inline const ir_edge_t *_get_irn_out_edge_first_kind(const ir_node *irn, ir_edge_kind_t kind)
{
- const struct list_head *head = _get_irn_outs_head(irn, kind);
+ const struct list_head *head;
+ assert(edges_activated_kind(get_irn_irg(irn), kind));
+ head = _get_irn_outs_head(irn, kind);
return list_empty(head) ? NULL : list_entry(head->next, ir_edge_t, list);
}
void edges_init_graph_kind(ir_graph *irg, ir_edge_kind_t kind);
/**
-* Notify of a edge change.
-* The edge from (src, pos) -> old_tgt is redirected to tgt
-*/
-void edges_notify_edge_kind(ir_node *src, int pos, ir_node *tgt, ir_node *old_tgt, ir_edge_kind_t kind, ir_graph *irg);
-
-/**
-* A node is deleted.
-*/
-void edges_node_deleted(ir_node *old, ir_graph *irg);
+ * A node might be revivaled by CSE.
+ */
+void edges_node_revival(ir_node *node, ir_graph *irg);
void edges_invalidate_kind(ir_node *irn, ir_edge_kind_t kind, ir_graph *irg);
*/
extern void init_edges(void);
+void edges_invalidate_all(ir_node *irn, ir_graph *irg);
+
/**
- * Set dbg information for edges.
+ * Helper function to dump the edge set of a graph,
+ * unused in normal code.
*/
-void edges_init_dbg(int do_dbg);
-
-void edges_invalidate_all(ir_node *irn, ir_graph *irg);
+void edges_dump_kind(ir_graph *irg, ir_edge_kind_t kind);
#define get_irn_n_edges_kind(irn, kind) _get_irn_n_edges_kind(irn, kind)
#define get_edge_src_irn(edge) _get_edge_src_irn(edge)