+void be_delete_spill_env(spill_env_t *env)
+{
+ del_set(env->spills);
+ ir_nodeset_destroy(&env->mem_phis);
+ obstack_free(&env->obst, NULL);
+ free(env);
+}
+
+/*
+ * ____ _ ____ _ _
+ * | _ \| | __ _ ___ ___ | _ \ ___| | ___ __ _ __| |___
+ * | |_) | |/ _` |/ __/ _ \ | |_) / _ \ |/ _ \ / _` |/ _` / __|
+ * | __/| | (_| | (_| __/ | _ < __/ | (_) | (_| | (_| \__ \
+ * |_| |_|\__,_|\___\___| |_| \_\___|_|\___/ \__,_|\__,_|___/
+ *
+ */
+
+void be_add_spill(spill_env_t *env, ir_node *to_spill, ir_node *before)
+{
+#if 1
+ spill_info_t *spill_info = get_spillinfo(env, to_spill);
+ spill_t *spill;
+ spill_t *s;
+ spill_t *last;
+
+ assert(! arch_irn_is(env->arch_env, to_spill, dont_spill));
+ DB((dbg, LEVEL_1, "Add spill of %+F before %+F\n", to_spill, before));
+
+ /* spills that are dominated by others are not needed */
+ last = NULL;
+ s = spill_info->spills;
+ for( ; s != NULL; s = s->next) {
+ /* no need to add this spill if it is dominated by another */
+ if(value_dominates(s->before, before)) {
+ DB((dbg, LEVEL_1, "...dominated by %+F, not added\n", s->before));
+ return;
+ }
+ /* remove spills that we dominate */
+ if(value_dominates(before, s->before)) {
+ DB((dbg, LEVEL_1, "...remove old spill at %+F\n", s->before));
+ if(last != NULL) {
+ last->next = s->next;
+ } else {
+ spill_info->spills = s->next;
+ }
+ } else {
+ last = s;
+ }
+ }
+
+ spill = obstack_alloc(&env->obst, sizeof(spill[0]));
+ spill->before = before;
+ spill->next = spill_info->spills;
+ spill->spill = NULL;
+
+ spill_info->spills = spill;
+#endif
+}
+
+void be_add_remat(spill_env_t *env, ir_node *to_spill, ir_node *before,
+ ir_node *rematted_node)
+{
+ spill_info_t *spill_info;
+ reloader_t *reloader;
+
+ spill_info = get_spillinfo(env, to_spill);
+
+ /* add the remat information */
+ reloader = obstack_alloc(&env->obst, sizeof(reloader[0]));
+ reloader->next = spill_info->reloaders;
+ reloader->reloader = before;
+ reloader->rematted_node = rematted_node;
+ reloader->remat_cost_delta = 0; /* We will never have a cost win over a
+ reload since we're not even allowed to
+ create a reload */
+
+ spill_info->reloaders = reloader;
+
+ DBG((dbg, LEVEL_1, "creating spillinfo for %+F, will be rematerialized before %+F\n",
+ to_spill, before));