assert(n_preds > 1);
- for(i = 0; i < n_preds; ++i) {
+ for (i = 0; i < n_preds; ++i) {
ins[i] = new_r_Unknown(irg, env->mode);
}
phi = be_new_Phi(block, n_preds, ins, env->mode, env->phi_cls);
- if(env->new_phis != NULL) {
+ if (env->new_phis != NULL) {
ARR_APP1(ir_node*, env->new_phis, phi);
}
- if(env->mode != mode_M) {
+ if (env->mode != mode_M) {
sched_add_after(block, phi);
}
set_irn_link(link_with, phi);
mark_irn_visited(block);
- for(i = 0; i < n_preds; ++i) {
+ for (i = 0; i < n_preds; ++i) {
ir_node *pred_block = get_Block_cfgpred_block(block, i);
ir_node *pred_def = search_def_end_of_block(env, pred_block);
static ir_node *search_def_end_of_block(be_ssa_construction_env_t *env,
ir_node *block)
{
- if(irn_visited(block)) {
+ if (irn_visited(block)) {
assert(get_irn_link(block) != NULL);
return get_irn_link(block);
- } else if(Block_block_visited(block)) {
+ } else if (Block_block_visited(block)) {
return create_phi(env, block, block);
} else {
ir_node *def = get_def_at_idom(env, block);
DBG((dbg, LEVEL_3, "\t...searching def at %+F\n", at));
/* no defs in the current block we can do the normal searching */
- if(!irn_visited(block) && !Block_block_visited(block)) {
+ if (!irn_visited(block) && !Block_block_visited(block)) {
DBG((dbg, LEVEL_3, "\t...continue at idom\n"));
return get_def_at_idom(env, block);
}
*/
node = block;
def = get_irn_link(node);
- while(def != NULL) {
- if(!value_dominates(at, def)) {
+ while (def != NULL) {
+ if (!value_dominates(at, def)) {
DBG((dbg, LEVEL_3, "\t...found dominating def %+F\n", def));
return def;
}
}
/* block in dominance frontier? create a phi then */
- if(Block_block_visited(block)) {
+ if (Block_block_visited(block)) {
DBG((dbg, LEVEL_3, "\t...create phi at block %+F\n", block));
assert(!is_Phi(node));
return create_phi(env, block, node);
ir_node *node = block;
ir_node *current_def;
- while(1) {
+ for (;;) {
current_def = get_irn_link(node);
- if(current_def == def) {
+ if (current_def == def) {
/* already in block */
return;
}
- if(current_def == NULL)
+ if (current_def == NULL)
break;
- if(value_dominates(current_def, def))
+ if (value_dominates(current_def, def))
break;
node = current_def;
}
}
}
-void be_ssa_construction_init(be_ssa_construction_env_t *env, be_irg_t *birg)
+void be_ssa_construction_init(be_ssa_construction_env_t *env, ir_graph *irg)
{
- ir_graph *irg = be_get_birg_irg(birg);
ir_node *sb = get_irg_start_block(irg);
int n_blocks = get_Block_dom_max_subtree_pre_num(sb);
stat_ev_dbl("bessaconstr_n_blocks", n_blocks);
memset(env, 0, sizeof(env[0]));
- be_assure_dom_front(birg);
+ be_assure_dom_front(irg);
env->irg = irg;
- env->domfronts = be_get_birg_dom_front(birg);
+ env->domfronts = be_get_irg_dom_front(irg);
env->new_phis = NEW_ARR_F(ir_node*, 0);
env->worklist = new_waitq();
assert(env->iterated_domfront_calculated == 0);
- if(env->mode == NULL) {
+ if (env->mode == NULL) {
env->mode = get_irn_mode(copy);
env->phi_cls = arch_get_irn_reg_class_out(copy);
} else {
block = get_nodes_block(copy);
- if(!irn_visited(block)) {
+ if (!irn_visited(block)) {
waitq_put(env->worklist, block);
}
introduce_def_at_block(block, copy);
assert(env->iterated_domfront_calculated == 0);
- if(env->mode == NULL) {
+ if (env->mode == NULL) {
env->mode = get_irn_mode(copies[0]);
env->phi_cls = arch_get_irn_reg_class_out(copies[0]);
}
- for(i = 0; i < copies_len; ++i) {
+ for (i = 0; i < copies_len; ++i) {
ir_node *copy = copies[i];
ir_node *block = get_nodes_block(copy);
assert(env->mode == get_irn_mode(copy));
- if(!irn_visited(block)) {
+ if (!irn_visited(block)) {
waitq_put(env->worklist, block);
}
introduce_def_at_block(block, copy);
size_t i;
stat_ev_cnt_decl(uses);
- BE_TIMER_PUSH(t_ssa_constr);
+ be_timer_push(T_SSA_CONSTR);
- if(!env->iterated_domfront_calculated) {
+ if (!env->iterated_domfront_calculated) {
mark_iterated_dominance_frontiers(env);
env->iterated_domfront_calculated = 1;
}
stat_ev_tim_push();
- for(i = 0; i < nodes_len; ++i) {
+ for (i = 0; i < nodes_len; ++i) {
ir_node *value = nodes[i];
/*
int pos = get_edge_src_pos(edge);
ir_node *def;
- if(env->ignore_uses != NULL &&
+ if (env->ignore_uses != NULL &&
ir_nodeset_contains(env->ignore_uses, use))
continue;
- if(is_Anchor(use) || is_End(use))
+ if (is_Anchor(use) || is_End(use))
continue;
- if(is_Phi(use)) {
+ if (is_Phi(use)) {
ir_node *block = get_nodes_block(use);
ir_node *predblock = get_Block_cfgpred_block(block, pos);
at = sched_last(predblock);
def = search_def(env, at);
- if(def == NULL) {
+ if (def == NULL) {
panic("no definition found for %+F at position %d", use, pos);
}
stat_ev_cnt_inc(uses);
}
}
- BE_TIMER_POP(t_ssa_constr);
+ be_timer_pop(T_SSA_CONSTR);
stat_ev_tim_pop("bessaconstr_fix_time");
stat_ev_cnt_done(uses, "bessaconstr_uses");
{
int i, n;
- BE_TIMER_PUSH(t_ssa_constr);
+ be_timer_push(T_SSA_CONSTR);
n = ARR_LEN(env->new_phis);
- for(i = 0; i < n; ++i) {
+ for (i = 0; i < n; ++i) {
ir_node *phi = env->new_phis[i];
be_liveness_introduce(lv, phi);
}
- BE_TIMER_POP(t_ssa_constr);
+ be_timer_pop(T_SSA_CONSTR);
}
+BE_REGISTER_MODULE_CONSTRUCTOR(be_init_ssaconstr);
void be_init_ssaconstr(void)
{
FIRM_DBG_REGISTER(dbg, "firm.be.ssaconstr");
}
-
-BE_REGISTER_MODULE_CONSTRUCTOR(be_init_ssaconstr);