- if (block == old_block) {
- /* this effectively removed old_block from mbh's list */
- continue;
- }
-
- assert(get_Block_MacroBlock(curr) == mbh);
-
- for (;;) {
- if (curr == old_block) {
- /* old_block dominates the block, so old_block will be
- the new macro block header */
- set_Block_MacroBlock(block, old_block);
- set_irn_link(block, list);
- list = block;
- break;
- }
- if (curr == mbh) {
- /* leave it in the mbh */
- set_irn_link(block, get_irn_link(mbh));
- set_irn_link(mbh, block);
- break;
- }
-
- assert(get_Block_n_cfgpreds(curr) == 1);
- curr = get_Block_cfgpred_block(curr, 0);
- }
- }
- /* beware: do NOT directly manipulate old_block's list, as old_block is
- in mbh's list and this would destroy the list! */
- set_irn_link(old_block, list);
+ /* move node and its predecessors to new_block */
+ move_edges(node, old_block, new_block);