[Mono-bugs] [Bug 54209][Maj] Changed - this.bool = (DateTime.Ticks != 0) in DateTime Property
bugzilla-daemon@bugzilla.ximian.com
bugzilla-daemon@bugzilla.ximian.com
Tue, 2 Mar 2004 16:27:59 -0500 (EST)
Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.
Changed by vargaz@freemail.hu.
http://bugzilla.ximian.com/show_bug.cgi?id=54209
--- shadow/54209 2004-03-02 08:48:10.000000000 -0500
+++ shadow/54209.tmp.28354 2004-03-02 16:27:59.000000000 -0500
@@ -1,16 +1,16 @@
Bug#: 54209
-Product: Mono/Class Libraries
+Product: Mono/Runtime
Version: unspecified
OS: Debian Woody
OS Details:
Status: NEW
Resolution:
Severity: Unknown
Priority: Major
-Component: CORLIB
+Component: misc
AssignedTo: mono-bugs@ximian.com
ReportedBy: simon.steele@softel.co.uk
QAContact: mono-bugs@ximian.com
TargetMilestone: ---
URL:
Cc:
@@ -58,6 +58,35 @@
------- Additional Comments From simon.steele@softel.co.uk 2004-02-11 11:47 -------
Also, the bug can be hidden by including: System.Console.WriteLine
(_dt.ToString()) before the check on the Ticks property.
------- Additional Comments From simon.steele@softel.co.uk 2004-03-02 08:48 -------
This code now causes a segfault on the latest mono.
+
+------- Additional Comments From vargaz@freemail.hu 2004-03-02 16:27 -------
+This is a code generation problem in the JIT. The body of the
+set_Start method is emitted in one basic block, but the block will
+contain branches, so it is not a real basic block.
+
+The problem is in the local register allocator:
+
+processing: 29 x86_seteq_membase R18
+ assigned sreg1 %eax to R18
+processing: 28 compare_imm R19
+ assigned sreg1 %ecx to R19
+processing: 27 label
+processing: 26 iconst R19 <-
+ assigned dreg %ecx to dest R19
+processing: 25 bne.un
+processing: 24 compare R20 R22
+ assigned sreg1 %edx to R20
+start regmask to assign R22: 0x00000007 (R-1 <- R2 R22)
+excluding sreg1 %edx
+available regmask: 0x00000003
+selected register %eax has assignment 0
+SPILLED LOAD (1 at 0xffffffe8(%ebp)) R18 (freed %eax)
+ assigned sreg2 %eax to R22
+
+Here, eax is spilled at instruction 24, so a load instruction is
+generated there. But since the code contains branches, this load
+might not be executed, meaning that eax will not contain the value of
+the R18 register at instruction 29.