* Ensures that edges are activated.
*
* @param irg the IR graph
- *
- * @return 0 if edges was deactivated before the call, 1 else
*/
-FIRM_API int edges_assure(ir_graph *irg);
+FIRM_API void assure_edges(ir_graph *irg);
/**
* Ensures that edges of a given kind are activated.
*
* @param irg the IR graph
* @param kind the edge kind
- *
- * @return 0 if edges was deactivated before the call, 1 else
*/
-FIRM_API int edges_assure_kind(ir_graph *irg, ir_edge_kind_t kind);
+FIRM_API void assure_edges_kind(ir_graph *irg, ir_edge_kind_t kind);
/**
* Walks only over Block nodes in the graph. Uses the block visited
static void *irg_cfg_succ_get_root(void *self)
{
ir_graph *irg = (ir_graph*) self;
- edges_assure_kind(irg, EDGE_KIND_BLOCK);
+ assure_edges_kind(irg, EDGE_KIND_BLOCK);
return get_irg_start_block(irg);
}
irg_block_walk_graph(irg, collect_blocks, NULL, freqs);
construct_cf_backedges(irg);
- edges_assure(irg);
+ assure_edges(irg);
size = dfs_get_n_nodes(dfs);
mat = gs_new_matrix(size, size);
ir_graph *irg = get_irn_irg(block);
const ir_edge_t *edge;
- edges_assure(irg);
+ assure_edges(irg);
/* reset phase data for all nodes in the block */
foreach_out_edge(block, edge) {
obstack_init(&res->obst);
res->dump_handle = dump_add_node_info_callback(height_dump_cb, res);
- edges_assure(irg);
+ assure_edges(irg);
irg_block_walk_graph(irg, compute_heights_in_block_walker, NULL, res);
return res;
env->init_sp = dummy;
env->calls = NEW_ARR_F(ir_node*, 0);
- edges_assure(irg);
+ assure_edges(irg);
if (be_options.pic) {
irg_walk_graph(irg, fix_pic_symconsts, NULL, env);
{
be_dom_front_info_t *info = XMALLOC(be_dom_front_info_t);
- edges_assure(irg);
+ assure_edges(irg);
obstack_init(&info->obst);
info->df_map = pmap_create();
assure_doms(irg);
remove_bads(irg);
/* Ensure, that the ir_edges are computed. */
- edges_assure(irg);
+ assure_edges(irg);
set_irg_phase_state(irg, phase_backend);
be_info_init_irg(irg);
{
be_uses_t *env = XMALLOC(be_uses_t);
- edges_assure(irg);
+ assure_edges(irg);
//set_using_irn_link(irg);
/* do local optimizations (mainly CSE) */
optimize_graph_df(irg);
/* backend code expects that outedges are always enabled */
- edges_assure(irg);
+ assure_edges(irg);
if (irg_data->dump)
dump_ir_graph(irg, "transformed");
/* do code placement, to optimize the position of constants */
place_code(irg);
/* backend code expects that outedges are always enabled */
- edges_assure(irg);
+ assure_edges(irg);
if (irg_data->dump)
dump_ir_graph(irg, "place");
/* do code placement, to optimize the position of constants */
place_code(irg);
/* backend expects outedges to be always on */
- edges_assure(irg);
+ assure_edges(irg);
}
void sparc_init_transform(void)
int i, idx, need_new_block;
symconst_symbol sym;
- edges_assure(irg);
+ assure_edges(irg);
/* find the first block */
initial_exec = get_irg_initial_exec(irg);
edges_deactivate_kind(irg, EDGE_KIND_NORMAL);
}
-int edges_assure(ir_graph *irg)
+void assure_edges(ir_graph *irg)
{
- int activated = 0;
-
- if (edges_activated_kind(irg, EDGE_KIND_BLOCK)) {
- activated = 1;
- } else {
- edges_activate_kind(irg, EDGE_KIND_BLOCK);
- }
- if (edges_activated_kind(irg, EDGE_KIND_NORMAL)) {
- activated = 1;
- } else {
- edges_activate_kind(irg, EDGE_KIND_NORMAL);
- }
-
- return activated;
+ assure_edges_kind(irg, EDGE_KIND_BLOCK);
+ assure_edges_kind(irg, EDGE_KIND_NORMAL);
}
-int edges_assure_kind(ir_graph *irg, ir_edge_kind_t kind)
+void assure_edges_kind(ir_graph *irg, ir_edge_kind_t kind)
{
- int activated = edges_activated_kind(irg, kind);
-
- if (!activated)
+ if (!edges_activated_kind(irg, kind))
edges_activate_kind(irg, kind);
-
- return activated;
}
void edges_node_deleted(ir_node *irn)
add_irg_constraints(irg, IR_GRAPH_CONSTRAINT_OPTIMIZE_UNREACHABLE_CODE);
new_identities(irg);
- edges_assure(irg);
+ assure_edges(irg);
assure_doms(irg);
/* just here for debugging */
current_ir_graph = irg;
- edges_assure(irg);
+ assure_edges(irg);
n_idx = get_irg_last_idx(irg);
n_idx = n_idx + (n_idx >> 2); /* add 25% */
lowered_mode = nlowered_mode;
/* edges are used by part_block_edges in the ir_create_cond_set variant. */
- edges_assure(irg);
+ assure_edges(irg);
/* part_block_edges can go wrong with tuples present */
remove_tuples(irg);
ir_nodeset_init(&created_mux_nodes);
- edges_assure(irg);
+ assure_edges(irg);
irg_walk_graph(irg, NULL, lower_node, NULL);
ir_node *end_blk = get_irg_end_block(irg);
int i;
mtp_additional_properties res = ~mtp_no_property;
- int old_edges = edges_assure_kind(irg, EDGE_KIND_NORMAL);
+ assure_edges_kind(irg, EDGE_KIND_NORMAL);
for (i = get_Block_n_cfgpreds(end_blk) - 1; i >= 0; --i) {
ir_node *pred = get_Block_cfgpred(end_blk, i);
}
}
finish:
- if (! old_edges)
- edges_deactivate_kind(irg, EDGE_KIND_NORMAL);
+ edges_deactivate_kind(irg, EDGE_KIND_NORMAL);
return res;
}
PREPARE(IR_GRAPH_PROPERTY_NO_BADS, remove_bads)
PREPARE(IR_GRAPH_PROPERTY_CONSISTENT_DOMINANCE, assure_doms)
PREPARE(IR_GRAPH_PROPERTY_CONSISTENT_POSTDOMINANCE, assure_postdoms)
- PREPARE(IR_GRAPH_PROPERTY_CONSISTENT_OUT_EDGES, edges_assure)
+ PREPARE(IR_GRAPH_PROPERTY_CONSISTENT_OUT_EDGES, assure_edges)
PREPARE(IR_GRAPH_PROPERTY_CONSISTENT_OUTS, assure_irg_outs)
PREPARE(IR_GRAPH_PROPERTY_CONSISTENT_LOOPINFO, assure_loopinfo)
PREPARE(IR_GRAPH_PROPERTY_CONSISTENT_ENTITY_USAGE, assure_irg_entity_usage_computed)
/* Performs Operator Strength Reduction for the passed graph. */
void opt_osr(ir_graph *irg, unsigned flags)
{
- iv_env env;
- int edges;
+ iv_env env;
FIRM_DBG_REGISTER(dbg, "firm.opt.osr");
/* we need dominance */
assure_doms(irg);
- edges = edges_assure(irg);
+ assure_edges(irg);
/* calculate the post order number for blocks by walking the out edges. */
assure_irg_outs(irg);
DEL_ARR_F(env.stack);
obstack_free(&env.obst, NULL);
- if (! edges)
- edges_deactivate(irg);
-} /* opt_osr */
+ edges_deactivate(irg);
+}
typedef struct pass_t {
ir_graph_pass_t pass;