Adapted to changes in benode_t.h
authorSebastian Hack <hack@ipd.info.uni-karlsruhe.de>
Tue, 7 Mar 2006 14:49:40 +0000 (14:49 +0000)
committerSebastian Hack <hack@ipd.info.uni-karlsruhe.de>
Tue, 7 Mar 2006 14:49:40 +0000 (14:49 +0000)
ir/be/beraextern.c
ir/be/bespill.c
ir/be/bespillbelady.c

index ac38070..be43239 100644 (file)
@@ -709,6 +709,7 @@ static void execute(char *prog_to_call, char *out_file, char *result_file) {
 static INLINE void var_add_spills_and_reloads(be_raext_env_t *raenv, int var_nr) {
        var_info_t *vi = var_find(raenv->vars, var_nr);
        ir_node *spill=NULL, *ctx, *irn;
+       ir_mode *mode;
        const ir_edge_t *edge, *ne;
        pset *spills  = pset_new_ptr(4);        /* the spills of this variable */
        pset *reloads = pset_new_ptr(4);        /* the reloads of this variable */
@@ -744,6 +745,8 @@ static INLINE void var_add_spills_and_reloads(be_raext_env_t *raenv, int var_nr)
 
        assert(spill && "There must be at least one non-phi-node");
 
+       mode = get_irn_mode(get_irn_n(spill, 0));
+
        /* insert reloads and wire them arbitrary*/
        pset_foreach(vi->values, irn)
                foreach_out_edge_safe(irn, edge, ne) {
@@ -753,7 +756,8 @@ static INLINE void var_add_spills_and_reloads(be_raext_env_t *raenv, int var_nr)
 
                        /* all real uses must be reloaded */
                        DBG((raenv->dbg, LEVEL_2, "  reloading before %+F\n", src));
-                       reload = be_reload(raenv->aenv, raenv->cls, edge->src, edge->pos, get_irn_mode(get_irn_n(spill, 0)), spill);
+                       reload = be_reload(raenv->aenv, raenv->cls, edge->src, mode, spill);
+                       set_irn_n(edge->src, edge->pos, reload);
 
                        /* remember the reload */
                        pset_insert_ptr(reloads, reload);
index cfc5e62..0f6d4bb 100644 (file)
@@ -179,7 +179,8 @@ static void phi_walker(ir_node *irn, void *env) {
 }
 
 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;
@@ -222,15 +223,14 @@ void be_insert_spills_reloads(spill_env_t *senv, pset *reload_set) {
 
                        /* 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++;
                }
 
index 19ab8a2..1e765a5 100644 (file)
@@ -20,6 +20,7 @@
 #include "obst.h"
 #include "set.h"
 #include "pset.h"
+#include "irprintf_t.h"
 #include "irgraph.h"
 #include "irnode.h"
 #include "irmode.h"