+ if (c1 == NULL) {
+ if (c2 == NULL) {
+ /* no chunk exists */
+ co_mst_irn_t *mirn = get_co_mst_irn(env, src);
+ int i;
+
+ for (i = mirn->n_neighs - 1; i >= 0; --i) {
+ if (mirn->int_neighs[i] == tgt)
+ break;
+ }
+ if (i < 0) {
+ /* create one containing both nodes */
+ c1 = new_aff_chunk(env);
+ aff_chunk_add_node(c1, get_co_mst_irn(env, src));
+ aff_chunk_add_node(c1, get_co_mst_irn(env, tgt));
+ goto absorbed;
+ }
+ } else {
+ /* c2 already exists */
+ if (! aff_chunk_interferes(env, c2, src)) {
+ aff_chunk_add_node(c2, get_co_mst_irn(env, src));
+ goto absorbed;
+ }
+ }
+ } else if (c2 == NULL) {
+ /* c1 already exists */
+ if (! aff_chunk_interferes(env, c1, tgt)) {
+ aff_chunk_add_node(c1, get_co_mst_irn(env, tgt));
+ goto absorbed;
+ }
+ } else if (c1 != c2 && ! aff_chunks_interfere(env, c1, c2)) {
+ int idx, len;