#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"
set *spills; /**< all spill_info_t's, which must be
placed */
spill_info_t **mem_phis; /**< set of all spilled phis. */
- ir_exec_freq *exec_freq;
unsigned spill_count;
unsigned reload_count;
int hash = hash_irn(value);
info.to_spill = value;
- res = (spill_info_t*)set_find(env->spills, &info, sizeof(info), hash);
+ res = set_find(spill_info_t, env->spills, &info, sizeof(info), hash);
if (res == NULL) {
info.reloaders = NULL;
info.spill_costs = -1;
info.reload_cls = NULL;
info.spilled_phi = false;
- res = (spill_info_t*)set_insert(env->spills, &info, sizeof(info), hash);
+ res = set_insert(spill_info_t, env->spills, &info, sizeof(info), hash);
}
return res;
env->mem_phis = NEW_ARR_F(spill_info_t*, 0);
env->spill_cost = arch_env->spill_cost;
env->reload_cost = arch_env->reload_cost;
- env->exec_freq = be_get_irg_exec_freq(irg);
obstack_init(&env->obst);
env->spill_count = 0;
double be_get_spill_costs(spill_env_t *env, ir_node *to_spill, ir_node *before)
{
ir_node *block = get_nodes_block(before);
- double freq = get_block_execfreq(env->exec_freq, block);
+ double freq = get_block_execfreq(block);
(void) to_spill;
return env->spill_cost * freq;
double be_get_reload_costs(spill_env_t *env, ir_node *to_spill, ir_node *before)
{
- ir_node *block = get_nodes_block(before);
- double freq = get_block_execfreq(env->exec_freq, block);
+ ir_node *block = get_nodes_block(before);
+ double freq = get_block_execfreq(block);
if (be_do_remats) {
/* is the node rematerializable? */
}
spill_block = get_nodes_block(insn);
- spill_execfreq = get_block_execfreq(env->exec_freq, spill_block);
+ spill_execfreq = get_block_execfreq(spill_block);
if (spillinfo->spilled_phi) {
/* TODO calculate correct costs...
s = spillinfo->spills;
for ( ; s != NULL; s = s->next) {
ir_node *spill_block = get_block(s->after);
- double freq = get_block_execfreq(env->exec_freq, spill_block);
+ double freq = get_block_execfreq(spill_block);
spills_execfreq += freq;
}
void be_insert_spills_reloads(spill_env_t *env)
{
- const ir_exec_freq *exec_freq = env->exec_freq;
- size_t n_mem_phis = ARR_LEN(env->mem_phis);
- spill_info_t *si;
- size_t i;
+ size_t n_mem_phis = ARR_LEN(env->mem_phis);
+ size_t i;
be_timer_push(T_RA_SPILL_APPLY);
remat_cost_delta = remat_cost - env->reload_cost;
rld->remat_cost_delta = remat_cost_delta;
block = is_Block(reloader) ? reloader : get_nodes_block(reloader);
- freq = get_block_execfreq(exec_freq, block);
+ freq = get_block_execfreq(block);
all_remat_costs += remat_cost_delta * freq;
DBG((dbg, LEVEL_2, "\tremat costs delta before %+F: "
"%d (rel %f)\n", reloader, remat_cost_delta,