Author: zoltan
Date: 2008-01-26 08:52:37 -0500 (Sat, 26 Jan 2008)
New Revision: 93985

Modified:
   branches/vargaz/mini-linear-il/mono/mono/mini/ChangeLog
   branches/vargaz/mini-linear-il/mono/mono/mini/method-to-ir.c
   branches/vargaz/mini-linear-il/mono/mono/mini/mini.c
   branches/vargaz/mini-linear-il/mono/mono/mini/mini.h
Log:
2008-01-26  Zoltan Varga  <[EMAIL PROTECTED]>

        * mini.h mini.c method-to-ir.c: Only run the local opts pass after 
        spill_global_vars if it is useful.


Modified: branches/vargaz/mini-linear-il/mono/mono/mini/ChangeLog
===================================================================
--- branches/vargaz/mini-linear-il/mono/mono/mini/ChangeLog     2008-01-26 
13:42:01 UTC (rev 93984)
+++ branches/vargaz/mini-linear-il/mono/mono/mini/ChangeLog     2008-01-26 
13:52:37 UTC (rev 93985)
@@ -1,3 +1,8 @@
+2008-01-26  Zoltan Varga  <[EMAIL PROTECTED]>
+
+       * mini.h mini.c method-to-ir.c: Only run the local opts pass after 
+       spill_global_vars if it is useful.
+
 2008-01-24  Zoltan Varga  <[EMAIL PROTECTED]>
 
        * method-to-ir.c: Remove some macros which are in mini.h.

Modified: branches/vargaz/mini-linear-il/mono/mono/mini/method-to-ir.c
===================================================================
--- branches/vargaz/mini-linear-il/mono/mono/mini/method-to-ir.c        
2008-01-26 13:42:01 UTC (rev 93984)
+++ branches/vargaz/mini-linear-il/mono/mono/mini/method-to-ir.c        
2008-01-26 13:52:37 UTC (rev 93985)
@@ -10743,10 +10743,11 @@
  * mono_spill_global_vars:
  *
  *   Generate spill code for variables which are not allocated to registers, 
- * and replace vregs with their allocated hregs.
+ * and replace vregs with their allocated hregs. *need_local_opts is set to 
TRUE if
+ * code is generated which could be optimized by the local optimization passes.
  */
 void
-mono_spill_global_vars (MonoCompile *cfg)
+mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
 {
        MonoBasicBlock *bb;
        char spec2 [16];
@@ -10757,6 +10758,8 @@
        gboolean dest_has_lvreg = FALSE;
        guint32 stacktypes [128];
 
+       *need_local_opts = FALSE;
+
        memset (spec2, 0, sizeof (spec2));
 
        /* FIXME: Move this function to mini.c */
@@ -10866,6 +10869,7 @@
                                        ins->inst_imm = var->inst_offset;
                                }
 
+                               *need_local_opts = TRUE;
                                spec = INS_INFO (ins->opcode);
                        }
 

Modified: branches/vargaz/mini-linear-il/mono/mono/mini/mini.c
===================================================================
--- branches/vargaz/mini-linear-il/mono/mono/mini/mini.c        2008-01-26 
13:42:01 UTC (rev 93984)
+++ branches/vargaz/mini-linear-il/mono/mono/mini/mini.c        2008-01-26 
13:52:37 UTC (rev 93985)
@@ -12415,12 +12415,15 @@
 
        if (cfg->new_ir) {
                MonoBasicBlock *bb;
+               gboolean need_local_opts;
 
-               mono_spill_global_vars (cfg);
+               mono_spill_global_vars (cfg, &need_local_opts);
 
-               /* To optimize code created by spill_global_vars */
-               mono_local_cprop2 (cfg);
-               mono_local_deadce (cfg);
+               if (need_local_opts || cfg->compile_aot) {
+                       /* To optimize code created by spill_global_vars */
+                       mono_local_cprop2 (cfg);
+                       mono_local_deadce (cfg);
+               }
 
                /* Add branches between non-consecutive bblocks */
                for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {

Modified: branches/vargaz/mini-linear-il/mono/mono/mini/mini.h
===================================================================
--- branches/vargaz/mini-linear-il/mono/mono/mini/mini.h        2008-01-26 
13:42:01 UTC (rev 93984)
+++ branches/vargaz/mini-linear-il/mono/mono/mini/mini.h        2008-01-26 
13:52:37 UTC (rev 93985)
@@ -1182,7 +1182,7 @@
 void              mono_decompose_array_access_opts (MonoCompile *cfg) 
MONO_INTERNAL;
 void              mono_handle_soft_float (MonoCompile *cfg) MONO_INTERNAL;
 void              mono_handle_global_vregs (MonoCompile *cfg) MONO_INTERNAL;
-void              mono_spill_global_vars (MonoCompile *cfg) MONO_INTERNAL;
+void              mono_spill_global_vars (MonoCompile *cfg, gboolean 
*need_local_opts) MONO_INTERNAL;
 void              mono_branch_to_cmov (MonoCompile *cfg) MONO_INTERNAL;
 
 /* methods that must be provided by the arch-specific port */

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to