}
if (env.num_confirms | env.num_consts | env.num_eq) {
- /* we have add nodes or changed DF edges */
- set_irg_outs_inconsistent(irg);
-
/* the new nodes are not in the loop info */
set_irg_loopinfo_inconsistent(irg);
}
/* invalidate analysis info */
set_irg_doms_inconsistent(irg);
set_irg_extblk_inconsistent(irg);
- set_irg_outs_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
}
return blocks_removed;
if (get_opt_global_cse())
set_irg_pinned(irg, op_pin_state_floats);
- set_irg_outs_inconsistent(irg);
set_irg_doms_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
set_irg_state(irg, IR_GRAPH_STATE_BAD_BLOCK);
/* invalidate info */
- set_irg_outs_inconsistent(irg);
set_irg_doms_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
opt_walker(n, waitq);
}
/* kill newly generated unreachable code */
- set_irg_outs_inconsistent(irg);
compute_doms(irg);
irg_block_walk_graph(irg, NULL, kill_dead_blocks, waitq);
} while (! pdeq_empty(waitq));
if (remove_Bads(irg)) {
edges_deactivate(irg);
- set_irg_outs_inconsistent(irg);
}
clear_irg_state(irg, IR_GRAPH_STATE_BAD_BLOCK);
if (get_opt_global_cse())
set_irg_pinned(irg, op_pin_state_floats);
- if (get_irg_outs_state(irg) == outs_consistent)
- set_irg_outs_inconsistent(irg);
/* FIXME: Maybe we could also test whether optimizing the node can
change the control graph. */
if (env.changed) {
/* invalidate the analysis info */
- set_irg_outs_inconsistent(irg);
set_irg_loopinfo_state(irg, loopinfo_inconsistent);
}
current_ir_graph = rem;
}
if (changed) {
- set_irg_outs_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
}
ir_free_resources(irg, IR_RESOURCE_IRN_VISITED);
- /* outs are invalid, we changed the graph */
- set_irg_outs_inconsistent(irg);
-
if (env->flags & CF_CHANGED) {
/* control flow changed, dominance info is invalid */
set_irg_doms_inconsistent(irg);
/* Finally: lower SymConst-Size and Sel nodes, Casts, unaligned Load/Stores. */
irg_walk_graph(irg, NULL, lower_irnode, NULL);
-
- set_irg_outs_inconsistent(irg);
}
typedef struct pass_t {
if (wenv.nr_of_intrinsics > 0) {
/* Changes detected: we might have added/removed nodes. */
- set_irg_outs_inconsistent(irg);
set_irg_callee_info_state(irg, irg_callee_info_inconsistent);
/* Exception control flow might have changed / new block might have added. */
ir_free_resources(irg, IR_RESOURCE_IRN_LINK);
if (changed) {
- set_irg_outs_inconsistent(irg);
/* lowering might create new blocks, so be sure to handle this */
set_irg_extblk_inconsistent(irg);
set_irg_doms_inconsistent(irg);
/* Cleanup, verify the graph. */
ir_free_resources(irg, resources);
- set_irg_outs_inconsistent(irg);
set_irg_doms_inconsistent(irg);
set_irg_extblk_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
if (env.changed) {
/* control flow changed */
- set_irg_outs_inconsistent(irg);
set_irg_doms_inconsistent(irg);
set_irg_extblk_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
irg_block_walk_graph(irg, NULL, find_cf_and_or_walker, &env);
if (env.changed) {
- set_irg_outs_inconsistent(irg);
set_irg_doms_inconsistent(irg);
set_irg_extblk_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
if (env.changed) {
/* Handle graph state if was changed. */
- set_irg_outs_inconsistent(irg);
set_irg_doms_inconsistent(irg);
set_irg_extblk_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
n = get_End_n_keepalives(end);
if (n > 0) {
NEW_ARR_A(ir_node *, in, n);
- if (env.changed) {
- /* Handle graph state if was changed. */
- set_irg_outs_inconsistent(irg);
- }
assure_irg_outs(irg);
for (i = j = 0; i < n; ++i) {
if (env.changed) {
/* Handle graph state if was changed. */
- set_irg_outs_inconsistent(irg);
set_irg_doms_inconsistent(irg);
set_irg_extblk_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
unnecessary executions of the node. */
place_late(irg, worklist);
- set_irg_outs_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
del_waitq(worklist);
}
if (env.modified) {
/* control flow might changed */
- set_irg_outs_inconsistent(irg);
set_irg_extblk_inconsistent(irg);
set_irg_doms_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
invalidate |= changed;
} while (changed);
- if (invalidate) {
- set_irg_outs_inconsistent(irg);
- }
return invalidate;
}
irg_block_walk_graph(irg, NULL, walk_critical_cf_edges, &env);
if (env.changed) {
/* control flow changed */
- set_irg_outs_inconsistent(irg);
set_irg_extblk_inconsistent(irg);
set_irg_doms_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
}
/* if allocs were removed somehow */
- if (env->nr_removed | env->nr_deads) {
- set_irg_outs_inconsistent(irg);
-
- if (env->nr_deads) {
- /* exception control flow might have been changed */
- set_irg_doms_inconsistent(irg);
- }
+ if (env->nr_removed && env->nr_deads) {
+ /* exception control flow might have been changed */
+ set_irg_doms_inconsistent(irg);
}
}
if (env.modified) {
/* control flow might changed */
- set_irg_outs_inconsistent(irg);
set_irg_extblk_inconsistent(irg);
set_irg_doms_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
}
/* changes were done ... */
- set_irg_outs_inconsistent(irg);
set_irg_loopinfo_state(irg, loopinfo_cf_inconsistent);
if (exc_changed) {
}
/* changes were done ... */
- set_irg_outs_inconsistent(irg);
set_irg_loopinfo_state(irg, loopinfo_cf_inconsistent);
if (exc_changed) {
restore_optimization_state(&state);
if (a_env.pairs) {
- set_irg_outs_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
}
} /* do_gvn_pre */
local_optimize_graph(irg);
/* graph has changed, invalidate analysis info */
- set_irg_outs_inconsistent(irg);
set_irg_extblk_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
set_irg_doms_inconsistent(irg);
if (changed) {
/* control flow changed, some blocks may become dead */
- set_irg_outs_inconsistent(irg);
set_irg_doms_inconsistent(irg);
set_irg_extblk_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
/* Handle graph state */
if (env.changes) {
- set_irg_outs_inconsistent(irg);
set_irg_entity_usage_state(irg, ir_entity_usage_not_computed);
}
set_irg_doms_inconsistent(current_ir_graph);
/* Loop content changed */
set_irg_loopinfo_inconsistent(current_ir_graph);
- /* TODO are they? Depends on set_irn_in and set_irn_n exchange and new_node. */
- set_irg_outs_inconsistent(current_ir_graph);
count_stats(stats.inverted);
}
set_irg_doms_inconsistent(current_ir_graph);
set_irg_loopinfo_inconsistent(current_ir_graph);
- /* TODO is it? */
- set_irg_outs_inconsistent(current_ir_graph);
DEL_ARR_F(loop_entries);
}
if (res) {
/* control flow changed */
- set_irg_outs_inconsistent(irg);
set_irg_extblk_inconsistent(irg);
set_irg_doms_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
assert(get_irg_phase_state(irg) != phase_building);
assert(get_irg_pinned(irg) == op_pin_state_pinned);
assert(get_irg_pinned(called_graph) == op_pin_state_pinned);
- set_irg_outs_inconsistent(irg);
set_irg_extblk_inconsistent(irg);
set_irg_doms_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
*/
static void clear_and_fix(ir_node *irn, void *env)
{
- int *moved = (int*)env;
set_irn_link(irn, NULL);
if (is_Proj(irn)) {
if (get_nodes_block(irn) != pred_block) {
set_nodes_block(irn, pred_block);
- *moved = 1;
}
}
} /* clear_and_fix */
void remove_phi_cycles(ir_graph *irg)
{
iv_env env;
- int projs_moved;
FIRM_DBG_REGISTER(dbg, "firm.opt.remove_phi");
* the same block as their predecessors.
* This can improve the placement of new nodes.
*/
- projs_moved = 0;
- irg_walk_graph(irg, NULL, clear_and_fix, &projs_moved);
- if (projs_moved)
- set_irg_outs_inconsistent(irg);
+ irg_walk_graph(irg, NULL, clear_and_fix, NULL);
/* we need outs for calculating the post order */
assure_irg_outs(irg);
ir_free_resources(irg, IR_RESOURCE_IRN_LINK);
if (env.replaced) {
- set_irg_outs_inconsistent(irg);
DB((dbg, LEVEL_1, "remove_phi_cycles: %u Cycles removed\n\n", env.replaced));
}
{
iv_env env;
int edges;
- int projs_moved;
FIRM_DBG_REGISTER(dbg, "firm.opt.osr");
* the same block as its predecessors.
* This can improve the placement of new nodes.
*/
- projs_moved = 0;
- irg_walk_graph(irg, NULL, clear_and_fix, &projs_moved);
- if (projs_moved)
- set_irg_outs_inconsistent(irg);
+ irg_walk_graph(irg, NULL, clear_and_fix, NULL);
/* we need dominance */
assure_doms(irg);
lftr(irg, &env);
(void)lftr;
- set_irg_outs_inconsistent(irg);
DB((dbg, LEVEL_1, "Replacements: %u + %u (lftr)\n\n", env.replaced, env.lftr_replaced));
}
ir_free_resources(irg, IR_RESOURCE_IRN_LINK);
/* Handle graph state */
if (env.changes) {
- set_irg_outs_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
}
* trouts and callee-state should be still valid
*/
set_irg_doms_inconsistent(irg);
- set_irg_outs_inconsistent(irg);
set_irg_extblk_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
}
*/
set_irg_doms_inconsistent(irg);
set_irg_extblk_inconsistent(irg); /* may not be needed */
- set_irg_outs_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
}
* neither changed control flow, cf-backedges should be still
* consistent.
*/
- set_irg_outs_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
res = 1;
assert(env->n_tail_calls > 0);
- /* we add new nodes, so the outs are inconsistent */
- set_irg_outs_inconsistent(irg);
-
/* we add new blocks and change the control flow */
set_irg_doms_inconsistent(irg);
set_irg_extblk_inconsistent(irg);
/* tail recursion was done, all info is invalid */
set_irg_doms_inconsistent(irg);
- set_irg_outs_inconsistent(irg);
set_irg_extblk_inconsistent(irg);
set_irg_loopinfo_state(irg, loopinfo_cf_inconsistent);
set_trouts_inconsistent();
size_t i, n;
set_trouts_inconsistent();
- for (i = 0, n = get_irp_n_irgs(); i < n; ++i)
- set_irg_outs_inconsistent(get_irp_irg(i));
}
DB((dbg, SET_LEVEL_1, " Cast optimization: %zu Casts removed, %zu Sels concretized.\n",