+ DBG((dbg, DBG_GLOBAL, "\t-> bring it in.", pressure_inc));
+
+ /* second half of case 2 */
+ if (pressure_upto_use >= k) {
+ DBG((dbg, DBG_GLOBAL, "\t-> use blocked. local reload: %+F, try spill at: %+F\n",
+ br->first_use, better_spill_loc));
+ be_add_reload(env->senv, irn, br->first_use, env->cls, 1);
+ be_add_spill(env->senv, irn, better_spill_loc);
+ ir_nodeset_insert(env->extra_spilled, irn);
+ }
+
+ /*
+ * go from the last bring in use to the first and add all the variables
+ * which additionally live through the block to their pressure.
+ * at the point were the actually treated use is, we have to increase
+ * the pressure by one more as the brought in value starts to count.
+ * Finally, adjust the front pressure as well.
+ */
+ pressure_inc = 0;
+ list_for_each_entry_reverse(bring_in_t, iter, &bi->br_head, list) {
+ if (iter == br)
+ pressure_inc += pressure_upto_use < k;
+ iter->sect_pressure += pressure_inc;
+ check = MAX(check, iter->sect_pressure);
+ DBG((dbg, DBG_GLOBAL, "\tinc section pressure of %+F by %d to %d\n", iter->first_use, pressure_inc, iter->sect_pressure));
+ }
+ bi->front_pressure += pressure_inc;
+ assert(MAX(check, bi->front_pressure) <= bi->pressure);
+ DBG((dbg, DBG_GLOBAL, "\t-> result: p: %d, fp: %d\n", bi->pressure, bi->front_pressure));
+ }
+
+ /* case 3: nothing worked. insert normal reload and rollback. */
+ else {
+ DBG((dbg, DBG_GLOBAL, "\t-> bring in was too expensive. local reload: %+F\n", br->first_use));
+ be_add_reload(env->senv, irn, br->first_use, env->cls, 1);
+ bitset_add_irn(env->spilled, irn);
+ trans_rollback(ges, &trans);