+/**
+ * Calculate a hash value of a node.
+ *
+ * @param node The IR-node
+ */
+unsigned ir_node_hash(const ir_node *node);
+
+/**
+ * equivalent_node() returns a node equivalent to input n. It skips all nodes that
+ * perform no actual computation, as, e.g., the Id nodes. It does not create
+ * new nodes. It is therefore safe to free n if the node returned is not n.
+ * If a node returns a Tuple we can not just skip it. If the size of the
+ * in array fits, we transform n into a tuple (e.g., Div).
+ */
+ir_node *equivalent_node(ir_node *n);
+
+/**
+ * Creates a new value table used for storing CSE identities.
+ * The value table is used to identify common expressions.
+ */
+void new_identities(ir_graph *irg);
+
+/**
+ * Deletes a identities value table.
+ *
+ * @param value_table the identity set
+ */
+void del_identities(ir_graph *irg);
+
+/**
+ * Add a node to the identities value table.
+ */
+void add_identities(ir_node *node);
+
+/**
+ * Compare function for two nodes in the hash table. Gets two
+ * nodes as parameters. Returns 0 if the nodes are a cse.
+ */
+int identities_cmp(const void *elt, const void *key);
+
+/**
+ * Return the canonical node computing the same value as n.
+ * Looks up the node in a hash table, enters it in the table
+ * if it isn't there yet.
+ */
+ir_node *identify_remember(ir_node *n);
+
+/** Visit each node in the value table of a graph. */
+void visit_all_identities(ir_graph *irg, irg_walk_func visit, void *env);
+
+/**
+ * Normalize a node by putting constants (and operands with larger
+ * node index) on the right (operator side).
+ *
+ * @param n The node to normalize
+ */
+void ir_normalize_node(ir_node *n);