-static INLINE void check_for_memory_operands(be_chordal_env_t *chordal_env) {
- irg_walk_graph(chordal_env->irg, NULL, memory_operand_walker, chordal_env);
-}
-
-/**
- * Sorry for doing stats again...
- */
-typedef struct _node_stat_t {
- unsigned int n_phis; /**< Phis of the current register class. */
- unsigned int n_mem_phis; /**< Memory Phis (Phis with spill operands). */
- unsigned int n_copies; /**< Copies */
- unsigned int n_perms; /**< Perms */
- unsigned int n_spills; /**< Spill nodes */
- unsigned int n_reloads; /**< Reloads */
-} node_stat_t;
-
-struct node_stat_walker {
- node_stat_t *stat;
- const arch_env_t *arch_env;
- bitset_t *mem_phis;
- const arch_register_class_t *cls;
-};
-
-static void node_stat_walker(ir_node *irn, void *data)
-{
- struct node_stat_walker *env = data;
- const arch_env_t *aenv = env->arch_env;
-
- if (arch_irn_consider_in_reg_alloc(aenv, env->cls, irn)) {
-
- /* if the node is a normal phi */
- if(is_Phi(irn))
- env->stat->n_phis++;
-
- else if(arch_irn_classify(aenv, irn) & arch_irn_class_spill)
- ++env->stat->n_spills;
-
- else if(arch_irn_classify(aenv, irn) & arch_irn_class_reload)
- ++env->stat->n_reloads;
-
- else if(arch_irn_classify(aenv, irn) & arch_irn_class_copy)
- ++env->stat->n_copies;
-
- else if(arch_irn_classify(aenv, irn) & arch_irn_class_perm)
- ++env->stat->n_perms;
- }
-
- /* a mem phi is a PhiM with a mem phi operand or a Spill operand */
- else if(is_Phi(irn) && get_irn_mode(irn) == mode_M) {
- int i;
-
- for(i = get_irn_arity(irn) - 1; i >= 0; --i) {
- ir_node *op = get_irn_n(irn, i);
-
- if((is_Phi(op) && bitset_contains_irn(env->mem_phis, op)) || (arch_irn_classify(aenv, op) & arch_irn_class_spill)) {
- bitset_add_irn(env->mem_phis, irn);
- env->stat->n_mem_phis++;
- break;
- }
- }
- }
-}
-
-static void node_stats(be_irg_t *birg, const arch_register_class_t *cls, node_stat_t *stat)
-{
- struct node_stat_walker env;
-
- memset(stat, 0, sizeof(stat[0]));
- env.arch_env = birg->main_env->arch_env;
- env.mem_phis = bitset_irg_malloc(birg->irg);
- env.stat = stat;
- env.cls = cls;
- irg_walk_graph(birg->irg, NULL, node_stat_walker, &env);
- bitset_free(env.mem_phis);
-}
-
-static void insn_count_walker(ir_node *irn, void *data)