Author: zoltan
Date: 2006-04-18 10:09:57 -0400 (Tue, 18 Apr 2006)
New Revision: 59590
Modified:
branches/vargaz/mini-linear-il/mono/mono/mini/ChangeLog
branches/vargaz/mini-linear-il/mono/mono/mini/method-to-ir.c
Log:
2006-04-18 Zoltan Varga <[EMAIL PROTECTED]>
* method-to-ir.c (mono_spill_global_vars): Disable the lvreg
optimization for
now since it leads to unsolvable situations in the local register
allocator.
Modified: branches/vargaz/mini-linear-il/mono/mono/mini/ChangeLog
===================================================================
--- branches/vargaz/mini-linear-il/mono/mono/mini/ChangeLog 2006-04-18
12:36:59 UTC (rev 59589)
+++ branches/vargaz/mini-linear-il/mono/mono/mini/ChangeLog 2006-04-18
14:09:57 UTC (rev 59590)
@@ -1,3 +1,8 @@
+2006-04-18 Zoltan Varga <[EMAIL PROTECTED]>
+
+ * method-to-ir.c (mono_spill_global_vars): Disable the lvreg
optimization for
+ now since it leads to unsolvable situations in the local register
allocator.
+
2006-04-16 Zoltan Varga <[EMAIL PROTECTED]>
* mini-ops.h: Add OP_VTARG_ADDR opcode.
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
2006-04-18 12:36:59 UTC (rev 59589)
+++ branches/vargaz/mini-linear-il/mono/mono/mini/method-to-ir.c
2006-04-18 14:09:57 UTC (rev 59590)
@@ -9763,10 +9763,24 @@
*/
sreg =
ins->dreg;
}
-
+ /*
+ * FIXME: This
causes assertions in the local allocator.
+ * Specially,
in Mono.Globalization.Unicode.SimpleCollator:.ctor:
+ * there is a
instruction of the form:
+ * int_div R112
<- R250 R111 clobbers: d
+ * Here, R112
is assigned to RDX, R250 is assigned to
+ * RCX. int_div
has the following spec:
+ * int_div:
dest:a src1:a src2:i len:15 clob:d
+ * So we need
to copy from RCX to RAX, and the
+ * instruction
clobbers RDX before accessing SREG1
+ * and SREG2,
so there are no registers left for
+ * SREG2. Not
sure how this can be fixed.
+ */
+#if 0
vreg_to_lvreg
[var->dreg] = sreg;
g_assert
(lvregs_len < 1024);
lvregs
[lvregs_len ++] = var->dreg;
+#endif
}
}
@@ -9793,10 +9807,13 @@
}
if (dest_has_lvreg) {
+ /* FIXME: This causes assertions in the local
allocator */
+#if 0
vreg_to_lvreg [prev_dreg] = ins->dreg;
g_assert (lvregs_len < 1024);
lvregs [lvregs_len ++] = prev_dreg;
dest_has_lvreg = FALSE;
+#endif
}
if (store) {
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches