- /* Have we seen this block before? */
- if (res)
- return res;
-
- /* Create the block info for this block. */
- res = new_block_info(&bel->ob);
- set_block_info(blk, res);
-
-
- /* Get all values living at the block start sorted by next use*/
- obstack_init(&ob);
-
- DBG((dbg, DBG_START, "Living at start of %+F:\n", blk));
- first = sched_first(blk);
- count = 0;
- sched_foreach(blk, irn)
- if (is_Phi(irn) && arch_get_irn_reg_class(bel->arch, irn, -1) == bel->cls) {
- loc.irn = irn;
- loc.time = get_distance(bel, first, 0, irn, 0);
- obstack_grow(&ob, &loc, sizeof(loc));
- DBG((dbg, DBG_START, " %+F:\n", irn));
- count++;
- } else
- break;
-
- live_foreach(blk, li)
- if (live_is_in(li) && arch_get_irn_reg_class(bel->arch, li->irn, -1) == bel->cls) {
- loc.irn = (ir_node *)li->irn;
- loc.time = get_distance(bel, first, 0, li->irn, 0);
- obstack_grow(&ob, &loc, sizeof(loc));
- DBG((dbg, DBG_START, " %+F:\n", irn));
- count++;
- }
-
- starters = obstack_finish(&ob);
- qsort(starters, count, sizeof(starters[0]), loc_compare);