+void co_complete_stats(const copy_opt_t *co, co_complete_stats_t *stat)
+{
+ bitset_t *seen = bitset_irg_malloc(co->irg);
+ affinity_node_t *an;
+
+ memset(stat, 0, sizeof(stat[0]));
+
+ /* count affinity edges. */
+ co_gs_foreach_aff_node(co, an) {
+ neighb_t *neigh;
+ stat->aff_nodes += 1;
+ bitset_add_irn(seen, an->irn);
+ co_gs_foreach_neighb(an, neigh) {
+ if(!bitset_contains_irn(seen, neigh->irn)) {
+ stat->aff_edges += 1;
+ stat->max_costs += neigh->costs;
+
+ if(get_irn_col(co, an->irn) != get_irn_col(co, neigh->irn)) {
+ stat->costs += neigh->costs;
+ stat->unsatisfied_edges += 1;
+ }
+
+ if(nodes_interfere(co->cenv, an->irn, neigh->irn)) {
+ stat->aff_int += 1;
+ stat->inevit_costs += neigh->costs;
+ }
+
+ }
+ }
+ }
+
+ bitset_free(seen);
+}
+