#include "ircons_t.h"
#include "irpass.h"
-DEBUG_ONLY(static firm_dbg_module_t *dbg);
+DEBUG_ONLY(static firm_dbg_module_t *dbg;)
/**
* the environment for collecting data
assert(env->n_tail_calls > 0);
/* we add new blocks and change the control flow */
- set_irg_doms_inconsistent(irg);
- set_irg_extblk_inconsistent(irg);
-
- /* calls are removed */
- set_trouts_inconsistent();
+ clear_irg_state(irg, IR_GRAPH_STATE_CONSISTENT_DOMINANCE
+ | IR_GRAPH_STATE_VALID_EXTENDED_BLOCKS);
/* we must build some new nodes WITHOUT CSE */
set_optimize(0);
if (n_params > 0) {
ir_node *calls;
ir_node *args;
- ir_node *args_bl;
NEW_ARR_A(ir_node **, call_params, env->n_tail_calls);
/* build new Proj's and Phi's */
args = get_irg_args(irg);
- args_bl = get_nodes_block(args);
for (i = 0; i < n_params; ++i) {
ir_mode *mode = get_type_mode(get_method_param_type(method_tp, i));
}
/* tail recursion was done, all info is invalid */
- set_irg_doms_inconsistent(irg);
- set_irg_extblk_inconsistent(irg);
- set_irg_loopinfo_state(irg, loopinfo_cf_inconsistent);
- set_trouts_inconsistent();
+ clear_irg_state(irg, IR_GRAPH_STATE_CONSISTENT_DOMINANCE
+ | IR_GRAPH_STATE_CONSISTENT_LOOPINFO
+ | IR_GRAPH_STATE_VALID_EXTENDED_BLOCKS);
set_irg_callee_info_state(irg, irg_callee_info_inconsistent);
set_optimize(rem);
/* create a new tuple for the return values */
tuple = new_r_Tuple(block, env->n_ress, in);
- turn_into_tuple(call, pn_Call_max);
+ turn_into_tuple(call, pn_Call_max+1);
set_Tuple_pred(call, pn_Call_M, mem);
set_Tuple_pred(call, pn_Call_X_regular, jmp);
set_Tuple_pred(call, pn_Call_X_except, new_r_Bad(irg, mode_X));