-ir_node *get_Block_cfg_out_ka(ir_node *node, int pos);
-
-/** Walks over the graph starting at node. Walks also if graph is in state
- "outs_inconsistent". Assumes current_ir_graph is set properly. */
-void irg_out_walk(ir_node *node,
- irg_walk_func *pre, irg_walk_func *post,
- void *env);
-
-/** Walks only over Block nodes in the graph. Has it's own visited
- flag, so that it can be interleaved with the other walker.
- node must be either op_Block or mode_X. */
-void irg_out_block_walk(ir_node *node,
- irg_walk_func *pre, irg_walk_func *post,
- void *env);
-
-/*------------------------------------------------------------------*/
-/* Building and Removing the out datastructure */
-/*------------------------------------------------------------------*/
-
-/** Computes the out edges. Sets a flag in irg to "outs_consistent". If the
- graph is changed this flag must be set to "outs_inconsistent". Computes
- out edges from block to floating nodes even if graph is in state
- "op_pin_state_floats". Optimizes Tuple nodes. */
-void compute_irg_outs(ir_graph *irg);
-void compute_irp_outs(void);
-
-void assure_irg_outs(ir_graph *irg);
-
-/** Computes the out edges in interprocedural view */
-void compute_ip_outs(void);
-/** Frees the out datastructures. Sets the flag in irg to "outs_none". */
-void free_ip_outs(void);
-void free_irg_outs(ir_graph *irg);
-void free_irp_outs(void);
+FIRM_API ir_node *get_Block_cfg_out_ka(const ir_node *node, int pos);
+
+/**
+ * Walks over the graph starting at node. Walks also if graph is in state
+ * "outs_inconsistent". Assumes current_ir_graph is set properly.
+ */
+FIRM_API void irg_out_walk(ir_node *node, irg_walk_func *pre,
+ irg_walk_func *post, void *env);
+
+/**
+ * Walks only over Block nodes in the graph. Has its own visited
+ * flag, so that it can be interleaved with the other walker.
+ * node must be either op_Block or mode_X.
+ */
+FIRM_API void irg_out_block_walk(ir_node *node, irg_walk_func *pre,
+ irg_walk_func *post, void *env);
+
+/**
+ * Returns 1 if outs have been computed for a node, 0 otherwise.
+ *
+ * this is useful to detect newly created nodes that have no outs set yet
+ */
+FIRM_API int get_irn_outs_computed(const ir_node *node);
+
+/**
+ * Computes the out edges. Sets a flag in irg to "outs_consistent". If the
+ * graph is changed this flag must be set to "outs_inconsistent". Computes
+ * out edges from block to floating nodes even if graph is in state
+ * "op_pin_state_floats". Optimizes Tuple nodes.
+ */
+FIRM_API void compute_irg_outs(ir_graph *irg);
+/** Recomputes out edges for each graph where it is necessary */
+FIRM_API void compute_irp_outs(void);
+
+/** Recomputes out edges if necessary */
+FIRM_API void assure_irg_outs(ir_graph *irg);
+
+/** Frees memory occupied by out edges datastructures */
+FIRM_API void free_irg_outs(ir_graph *irg);
+/** Frees memory occupied by out edges datastructures in the whole program */
+FIRM_API void free_irp_outs(void);
+
+/** @} */
+
+#include "end.h"