+/**
+ * Re-initialize the irn data for all nodes in the node => data map using the given callback.
+ * @param phase The phase.
+ */
+void phase_reinit_irn_data(phase_t *phase);
+
+/**
+ * Re-initialize the irn data for all nodes in the given block.
+ * @param phase The phase.
+ * @param block The block.
+ */
+void phase_reinit_block_irn_data(phase_t *phase, ir_node *block);
+
+/**
+ * Re-initialize the irn data for the given node.
+ * @param phase The phase.
+ * @param irn The irn.
+ */
+#define phase_reinit_single_irn_data(phase, irn) _phase_reinit_single_irn_data((phase), (irn))
+
+/**
+ * Returns the first node of the phase having some data assigned.
+ * @param phase The phase.
+ * @return The first irn having some data assigned, NULL otherwise
+ */
+ir_node *phase_get_first_node(phase_t *phase);
+
+/**
+ * Returns the next node after @p start having some data assigned.
+ * @param phase The phase.
+ * @param start The node to start from
+ * @return The next node after start having some data assigned, NULL otherwise
+ */
+ir_node *phase_get_next_node(phase_t *phase, ir_node *start);
+
+/**
+ * Convenience macro to iterate over all nodes of a phase
+ * having some data assigned.
+ */
+#define foreach_phase_irn(phase, irn) \
+ for (irn = phase_get_first_node(phase); irn; irn = phase_get_next_node(phase, irn))
+