+ /* get all special spilled phis */
+ DBG((senv->dbg, LEVEL_1, "Mem-phis:\n"));
+ senv->mem_phis = pset_new_ptr_default();
+ irg_walk_graph(senv->chordal_env->irg, phi_walker, NULL, senv);
+
+ /* Add reloads for mem_phis */
+ /* BETTER: These reloads (1) should only be inserted, if they are really needed */
+ DBG((senv->dbg, LEVEL_1, "Reloads for mem-phis:\n"));
+ for(irn = pset_first(senv->mem_phis); irn; irn = pset_next(senv->mem_phis)) {
+ const ir_edge_t *e;
+ DBG((senv->dbg, LEVEL_1, " Mem-phi %+F\n", irn));
+ foreach_out_edge(irn, e) {
+ ir_node *user = e->src;
+ if (is_Phi(user) && !pset_find_ptr(senv->mem_phis, user)) {
+ ir_node *use_bl = get_nodes_block(user);
+ DBG((senv->dbg, LEVEL_1, " non-mem-phi user %+F\n", user));
+ be_add_reload_on_edge(senv, irn, use_bl, e->pos); /* (1) */
+ }
+ }
+ }
+