From db1ec481e0ff8d3afc24c124a597e12bf45d39c4 Mon Sep 17 00:00:00 2001 From: Sebastian Hack Date: Tue, 7 Mar 2006 14:49:40 +0000 Subject: [PATCH] Adapted to changes in benode_t.h --- ir/be/beraextern.c | 6 +++++- ir/be/bespill.c | 8 ++++---- ir/be/bespillbelady.c | 1 + 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/ir/be/beraextern.c b/ir/be/beraextern.c index ac3807062..be4323977 100644 --- a/ir/be/beraextern.c +++ b/ir/be/beraextern.c @@ -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); diff --git a/ir/be/bespill.c b/ir/be/bespill.c index cfc5e62b2..0f6d4bbb4 100644 --- a/ir/be/bespill.c +++ b/ir/be/bespill.c @@ -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++; } diff --git a/ir/be/bespillbelady.c b/ir/be/bespillbelady.c index 19ab8a217..1e765a5c5 100644 --- a/ir/be/bespillbelady.c +++ b/ir/be/bespillbelady.c @@ -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" -- 2.20.1