+/**
+ * Register additional memory in an edge.
+ * This must be called before Firm is initialized.
+ * @param n Number of bytes you need.
+ * @return A number you have to keep and to pass
+ * edges_get_private_data()
+ * to get a pointer to your data.
+ */
+int edges_register_private_data(size_t n);
+
+/**
+ * Get a pointer to the private data you registered.
+ * @param edge The edge.
+ * @param ofs The number, you obtained with
+ * edges_register_private_data().
+ * @return A pointer to the private data.
+ */
+static INLINE void *_get_edge_private_data(const ir_edge_t *edge, int ofs)
+{
+ /* Get the size of the edge. */
+ size_t size =
+ is_Block(edge->src) ? sizeof(ir_block_edge_t) : sizeof(ir_edge_t);
+
+ return (void *) ((char *) edge + size + ofs);
+}
+