- 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 {
- arch_irn_class_t classify = arch_irn_classify(aenv, irn);
-
- if(classify & arch_irn_class_spill)
- ++env->stat->n_spills;
- if(classify & arch_irn_class_reload)
- ++env->stat->n_reloads;
- if(classify & arch_irn_class_copy)
- ++env->stat->n_copies;
- if(classify & 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;
- }
- }
- }