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;
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);
{
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);