Two things I just noticed: I think you need to maintain cfg->bblocks. Also, > + for (bb = cfg->bb_entry; bb; bb = bb->next_bb) { > + if (bb->out_count > 1) { > [...] > + } > + } It would be much, much cleaner to have: if (bb->out_count <= 1) continue; This saves an entire level of indentation. -- Ben