}
void be_insert_spills_reloads(spill_env_t *senv, pset *reload_set) {
- ir_graph *irg = senv->chordal_env->irg;
+ const arch_env_t *aenv = senv->chordal_env->birg->main_env->arch_env;
+ ir_graph *irg = senv->chordal_env->irg;
ir_node *irn;
spill_info_t *si;
struct obstack ob;
ir_node *spill = be_spill_node(senv, si->spilled_node);
/* the reload */
- ir_node *bl = is_Block(rld->reloader) ? rld->reloader : get_nodes_block(rld->reloader);
- ir_node *reload = be_new_Reload(senv->cls, irg, bl, mode, spill);
+ ir_node *reload = be_reload(aenv, senv->cls, rld->reloader, mode, spill);
DBG((senv->dbg, LEVEL_1, " %+F of %+F before %+F\n", reload, si->spilled_node, rld->reloader));
if(reload_set)
pset_insert_ptr(reload_set, reload);
- /* remember the reaload */
+ /* remember the reload */
obstack_ptr_grow(&ob, reload);
- sched_add_before(rld->reloader, reload);
n_reloads++;
}
/* Clean up */
pmap_foreach(ssenv.slots, pme)
- del_pset(((spill_slot_t *)pme->value)->members);
+ del_pset(((spill_slot_t *)pme->value)->members);
pmap_destroy(ssenv.slots);
- pmap_destroy(ssenv.types);
+ pmap_destroy(ssenv.types);
obstack_free(&ssenv.ob, NULL);
+
+ be_copy_entities_to_reloads(cenv->irg);
}