} else if (arity == 1) {
ir_node *pred_block = get_Block_cfgpred_block(block, 0);
ir_loop *pred_loop = get_irn_loop(pred_block);
- float freq = get_block_execfreq(env->execfreqs, block);
+ float freq = (float)get_block_execfreq(env->execfreqs, block);
/* is it an edge leaving a loop */
if (get_loop_depth(pred_loop) > get_loop_depth(loop)) {
- float pred_freq = get_block_execfreq(env->execfreqs, pred_block);
+ float pred_freq = (float)get_block_execfreq(env->execfreqs, pred_block);
edge.outedge_penalty_freq = -(pred_freq - freq);
}
*/
static void analyze_block(ir_node *block, void *data)
{
- float weight = get_block_execfreq(execfreqs, block);
+ float weight = (float)get_block_execfreq(execfreqs, block);
ir_nodeset_t live_nodes;
ir_node *node;
(void) data;
from_reg = arch_get_irn_register(to_split);
from_r = arch_register_get_index(from_reg);
block = get_nodes_block(before);
- split_threshold = get_block_execfreq(execfreqs, block) * SPLIT_DELTA;
+ split_threshold = (float)get_block_execfreq(execfreqs, block) * SPLIT_DELTA;
if (pref_delta < split_threshold*0.5)
return false;
in_node = skip_Proj(node);
if (req->type & arch_register_req_type_should_be_same) {
- float weight = get_block_execfreq(execfreqs, block);
+ float weight = (float)get_block_execfreq(execfreqs, block);
int arity = get_irn_arity(in_node);
int i;
continue;
/* give bonus for already assigned register */
- weight = get_block_execfreq(execfreqs, pred_block);
+ weight = (float)get_block_execfreq(execfreqs, pred_block);
r = arch_register_get_index(reg);
info->prefs[r] += weight * AFF_PHI;
}
ir_node *pred_block = get_Block_cfgpred_block(block, i);
unsigned r;
float weight
- = get_block_execfreq(execfreqs, pred_block) * AFF_PHI;
+ = (float)get_block_execfreq(execfreqs, pred_block) * AFF_PHI;
if (info->prefs[assigned_r] >= weight)
continue;
costs = costs < 0 ? -logf(-costs+1) : logf(costs+1);
costs *= 100;
costs += 10000;
- hungarian_add(bp, n, r, costs);
+ hungarian_add(bp, n, r, (int)costs);
DB((dbg, LEVEL_3, " %s(%f)", arch_register_for_index(cls, r)->name,
info->prefs[r]));
}
block_costs_t *cost_info;
ir_node *block = blocklist[i];
- float execfreq = get_block_execfreq(execfreqs, block);
+ float execfreq = (float)get_block_execfreq(execfreqs, block);
float costs = execfreq;
int n_cfgpreds = get_Block_n_cfgpreds(block);
int p;