- * Convenience macro to get the outs_head from a irn_edge_info_t
- * struct.
- */
-#define _get_irn_outs_head(irn) (&_get_irn_edge_info(irn)->outs_head)
-
-/**
- * Convenience macro to get the succ_head from a block_attr
- * struct.
- */
-#define _get_block_succ_head(bl) (&((bl)->attr.block.succ_head))
-
-/**
- * Get the first edge pointing to some node.
- * @note There is no order on out edges. First in this context only
- * means, that you get some starting point into the list of edges.
- * @param irn The node.
- * @return The first out edge that points to this node.
- */
-static INLINE const ir_edge_t *_get_irn_out_edge_first(const ir_node *irn)
-{
- const struct list_head *head = _get_irn_outs_head(irn);
- return list_empty(head) ? NULL : list_entry(head->next, ir_edge_t, list);
-}
-
-/**
- * Get the next edge in the out list of some node.
- * @param irn The node.
- * @param last The last out edge you have seen.
- * @return The next out edge in @p irn 's out list after @p last.
- */
-static INLINE const ir_edge_t *_get_irn_out_edge_next(const ir_node *irn, const ir_edge_t *last)
-{
- struct list_head *next = last->list.next;
- return next == _get_irn_outs_head(irn) ? NULL : list_entry(next, ir_edge_t, list);
-}
-
-/**
- * Get the first successor edge of a block.
- * A successor edge is an edge originated from another block, pointing
- * to a mode_X node in the given block and is thus a control flow
- * successor edge.
- * @param irn The block.
- * @return The first successor edge of the block.
- */
-static INLINE const ir_edge_t *_get_block_succ_first(const ir_node *irn)
-{
- const struct list_head *head;
-
- assert(is_Block(irn) && "Node must be a block here");
- head = _get_block_succ_head(irn);
- return (ir_edge_t *) (list_empty(head) ? NULL :
- list_entry(head->next, ir_block_edge_t, succ_list));
-}
-
-/**
- * Get the next block successor edge.
- * @see See _get_block_succ_first() for details.
- * @param irn The block.
- * @param last The last edge.
- * @return The next edge, or NULL if there is no further.
- */
-static INLINE const ir_edge_t *_get_block_succ_next(const ir_node *irn, const ir_edge_t *last)
-{
- const ir_block_edge_t *block_edge;
- struct list_head *next;
-
- assert(is_Block(irn) && "Node must be a block here");
- block_edge = (const ir_block_edge_t *) last;
- next = block_edge->succ_list.next;
- return (ir_edge_t *) (next == _get_block_succ_head(irn) ? NULL :
- list_entry(next, ir_block_edge_t, succ_list));
-}