documentation: Update (i.e. mostly delete) information regarding current_ir_graph.
[libfirm] / include / libfirm / iredges.h
index 8847378..d50d57b 100644 (file)
@@ -64,7 +64,7 @@ FIRM_API const ir_edge_t *get_irn_out_edge_next(const ir_node *irn,
  * edge.
  */
 #define foreach_out_edge_kind(irn, edge, kind) \
-       for(edge = get_irn_out_edge_first_kind(irn, kind); edge; edge = get_irn_out_edge_next(irn, edge))
+       for (ir_edge_t const *edge = get_irn_out_edge_first_kind(irn, kind); edge; edge = get_irn_out_edge_next(irn, edge))
 
 /**
  * A convenience iteration macro over all out edges of a node, which is safe
@@ -72,27 +72,27 @@ FIRM_API const ir_edge_t *get_irn_out_edge_next(const ir_node *irn,
  *
  * @param irn  The node.
  * @param edge An ir_edge_t pointer which shall be set to the current edge.
- * @param ne   The next edge, enables alteration safe edge processing.
  * @param kind The kind of the edge.
  */
-#define foreach_out_edge_kind_safe(irn, edge, ne, kind) \
-       for((edge) = (get_irn_out_edge_first_kind(irn, kind)), (ne) = ((edge) ? (get_irn_out_edge_next(irn, edge)) : NULL); \
-               edge; (edge) = (ne), (ne) = ((edge) ? (get_irn_out_edge_next(irn, edge)) : NULL))
+#define foreach_out_edge_kind_safe(irn, edge, kind) \
+       for (ir_edge_t const *edge = get_irn_out_edge_first_kind((irn), (kind)), *edge##__next; \
+            edge ? edge##__next = get_irn_out_edge_next((irn), edge), 1 : (edge##__next = NULL, 0); \
+            edge = edge##__next)
 
 /**
  * Convenience macro for normal out edges.
  */
-#define foreach_out_edge(irn, edge)            foreach_out_edge_kind(irn, edge, EDGE_KIND_NORMAL)
+#define foreach_out_edge(irn, edge)       foreach_out_edge_kind(irn, edge, EDGE_KIND_NORMAL)
 
 /**
  * Convenience macro for normal out edges.
  */
-#define foreach_out_edge_safe(irn, edge, tmp)  foreach_out_edge_kind_safe(irn, edge, tmp, EDGE_KIND_NORMAL)
+#define foreach_out_edge_safe(irn, edge)  foreach_out_edge_kind_safe(irn, edge, EDGE_KIND_NORMAL)
 
 /**
  * A convenience iteration macro for all control flow edges.
  */
-#define foreach_block_succ(bl, edge)           foreach_out_edge_kind(bl, edge, EDGE_KIND_BLOCK)
+#define foreach_block_succ(bl, edge)      foreach_out_edge_kind(bl, edge, EDGE_KIND_BLOCK)
 
 /**
  * Returns the source node of an edge.
@@ -108,17 +108,6 @@ FIRM_API ir_node *get_edge_src_irn(const ir_edge_t *edge);
  */
 FIRM_API int get_edge_src_pos(const ir_edge_t *edge);
 
-/**
- * Returns the edge object of an outgoing edge at a node.
- * @param  irn  The node at which the edge originates.
- * @param  pos  The position of the edge.
- * @param  kind The kind of the edge.
- * @return      The corresponding edge object or NULL,
- *              if no such edge exists.
- */
-FIRM_API const ir_edge_t *get_irn_edge_kind(const ir_node *irn,
-                                            int pos, ir_edge_kind_t kind);
-
 /**
  * Returns the number of registered out edges for a specific kind.
  * @param irn The node.
@@ -269,18 +258,6 @@ FIRM_API void irg_block_edges_walk(ir_node *block, irg_walk_func *pre,
 FIRM_API void irg_walk_edges(ir_node *start, irg_walk_func *pre,
                              irg_walk_func *post, void *env);
 
-/**
- * Reset the user's private data at offset 'offset'
- * The user has to remember his offset and the size of his data!
- * Caution: Using wrong values here can destroy other users private data!
- *
- * @param irg     the IR graph to operate on
- * @param offset  offset of the private data inside the edge
- * @param size    length of the private data inside the edge
- */
-FIRM_API void edges_reset_private_data(ir_graph *irg, int offset,
-                                       unsigned size);
-
 /** @} */
 
 #include "end.h"