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