+/**
+ * Computes the costs of a copy according to execution frequency
+ * @param co The copy opt object.
+ * @param pos the argument position of arg in the root arguments
+ * @return Must be >= 0 in all cases.
+ */
+int co_get_costs_exec_freq(const copy_opt_t *co, ir_node *root, ir_node* arg, int pos);
+
+/**
+ * All costs equal 1. Using this will reduce the _number_ of copies.
+ * @param co The copy opt object.
+ * @return Must be >= 0 in all cases.
+ */
+int co_get_costs_all_one(const copy_opt_t *co, ir_node *root, ir_node* arg, int pos);
+
+/**
+ * Statistics over a copy optimization module.
+ */
+typedef struct {
+ ulong64 aff_edges; /**< number of affinity edges. */
+ ulong64 aff_nodes; /**< number of nodes with incident affinity edges. */
+ ulong64 aff_int; /**< number of affinity edges whose nodes also interfere. */
+ ulong64 inevit_costs; /**< costs which cannot be evited (due to interfering affinities). */
+ ulong64 max_costs; /**< all costs of the affinities. */
+ ulong64 costs; /**< The costs of the current coloring. */
+ ulong64 unsatisfied_edges; /**< The number of unequally colored affinity edges. */
+} co_complete_stats_t;