#include "belive_t.h"
#include "benode.h"
#include "bechordal_t.h"
-#include "bestatevent.h"
+#include "statev_t.h"
#include "bessaconstr.h"
#include "beirg.h"
#include "beirgmod.h"
typedef struct reloader_t reloader_t;
struct reloader_t {
reloader_t *next;
- ir_node *can_spill_after;
ir_node *reloader;
ir_node *rematted_node;
int remat_cost_delta; /** costs needed for rematerialization,
spill_info->spills = spill;
}
-void be_add_reload2(spill_env_t *env, ir_node *to_spill, ir_node *before,
- ir_node *can_spill_after, const arch_register_class_t *reload_cls,
- int allow_remat)
+void be_add_reload(spill_env_t *env, ir_node *to_spill, ir_node *before, const arch_register_class_t *reload_cls, int allow_remat)
{
spill_info_t *info;
reloader_t *rel;
}
}
- assert(!is_Proj(before) && !be_is_Keep(before));
+ assert(!be_is_Keep(before));
/* put reload into list */
rel = OALLOC(&env->obst, reloader_t);
rel->next = info->reloaders;
rel->reloader = before;
rel->rematted_node = NULL;
- rel->can_spill_after = can_spill_after;
rel->remat_cost_delta = allow_remat ? 0 : REMAT_COST_INFINITE;
info->reloaders = rel;
to_spill, before, allow_remat ? "" : " not"));
}
-void be_add_reload(spill_env_t *senv, ir_node *to_spill, ir_node *before,
- const arch_register_class_t *reload_cls, int allow_remat)
-{
- be_add_reload2(senv, to_spill, before, to_spill, reload_cls, allow_remat);
-
-}
-
ir_node *be_get_end_of_block_insertion_point(const ir_node *block)
{
ir_node *last = sched_last(block);
return be_get_end_of_block_insertion_point(predblock);
}
-void be_add_reload_at_end(spill_env_t *env, ir_node *to_spill,
- const ir_node *block,
- const arch_register_class_t *reload_cls,
- int allow_remat)
-{
- ir_node *before = be_get_end_of_block_insertion_point(block);
- be_add_reload(env, to_spill, before, reload_cls, allow_remat);
-}
-
void be_add_reload_on_edge(spill_env_t *env, ir_node *to_spill, ir_node *block,
int pos, const arch_register_class_t *reload_cls,
int allow_remat)
{
int i, arity;
ir_node *res;
- ir_node *bl;
ir_node **ins;
- if (is_Block(reloader)) {
- bl = reloader;
- } else {
- bl = get_nodes_block(reloader);
- }
-
ins = ALLOCAN(ir_node*, get_irn_arity(spilled));
for (i = 0, arity = get_irn_arity(spilled); i < arity; ++i) {
ir_node *arg = get_irn_n(spilled, i);
}
/* create a copy of the node */
+ ir_node *const bl = get_nodes_block(reloader);
res = new_ir_node(get_irn_dbg_info(spilled), env->irg, bl,
get_irn_op(spilled), get_irn_mode(spilled),
get_irn_arity(spilled), ins);