[llvm] Allow phi instructions where some incoming nodes are not defined because they...
[mono.git] / mono / mini / linear-scan.c
index 1e5a3429f500f4e85de47fe3d09c08cb54cff4ff..d778ab5fc73f700a880ab4f65618a59172e62a66 100644 (file)
@@ -10,6 +10,8 @@
 #include "mini.h"
 #include <mono/metadata/debug-helpers.h>
 
+#ifndef DISABLE_JIT
+
 static void mono_linear_scan2 (MonoCompile *cfg, GList *vars, GList *regs, regmask_t *used_mask);
 
 GList *
@@ -78,7 +80,7 @@ mono_linear_scan (MonoCompile *cfg, GList *vars, GList *regs, regmask_t *used_ma
        regmask_t used_regs = 0;
        gboolean cost_driven;
 
-       if (vars && (((MonoMethodVar*)vars->data)->interval != NULL)) {
+       if (!cfg->disable_reuse_registers && vars && (((MonoMethodVar*)vars->data)->interval != NULL)) {
                mono_linear_scan2 (cfg, vars, regs, used_mask);
                return;
        }
@@ -202,10 +204,7 @@ mono_linear_scan (MonoCompile *cfg, GList *vars, GList *regs, regmask_t *used_ma
                if (vmv->reg >= 0)  {
                        if ((gains [vmv->reg] > mono_arch_regalloc_cost (cfg, vmv)) && (cfg->varinfo [vmv->idx]->opcode != OP_REGVAR)) {
                                if (cfg->verbose_level > 2) {
-                                       if (cfg->new_ir)
-                                               printf ("ALLOCATED R%d(%d) TO HREG %d COST %d\n", cfg->varinfo [vmv->idx]->dreg, vmv->idx, vmv->reg, vmv->spill_costs);
-                                       else
-                                               printf ("REGVAR %d C%d R%d\n", vmv->idx, vmv->spill_costs, vmv->reg);
+                                       printf ("ALLOCATED R%d(%d) TO HREG %d COST %d\n", cfg->varinfo [vmv->idx]->dreg, vmv->idx, vmv->reg, vmv->spill_costs);
                                }
                                cfg->varinfo [vmv->idx]->opcode = OP_REGVAR;
                                cfg->varinfo [vmv->idx]->dreg = vmv->reg;
@@ -223,7 +222,7 @@ mono_linear_scan (MonoCompile *cfg, GList *vars, GList *regs, regmask_t *used_ma
                }
        }
 
-       mono_jit_stats.regvars += n_regvars;
+       cfg->stat_n_regvars = n_regvars;
 
        /* Compute used regs */
        used_regs = 0;
@@ -494,7 +493,7 @@ mono_linear_scan2 (MonoCompile *cfg, GList *vars, GList *regs, regmask_t *used_m
                }
        }
 
-       mono_jit_stats.regvars += n_regvars;
+       cfg->stat_n_regvars = n_regvars;
 
        /* Compute used regs */
        used_regs = 0;
@@ -510,3 +509,5 @@ mono_linear_scan2 (MonoCompile *cfg, GList *vars, GList *regs, regmask_t *used_m
        g_list_free (active);
        g_list_free (inactive);
 }
+
+#endif /* #ifndef DISABLE_JIT */