[Mono-bugs] [Bug 63085][Nor] Changed - Bitwise shift might return an incorrect value.
bugzilla-daemon@bugzilla.ximian.com
bugzilla-daemon@bugzilla.ximian.com
Tue, 17 Aug 2004 10:13:02 -0400 (EDT)
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=63085
--- shadow/63085 2004-08-14 16:13:57.000000000 -0400
+++ shadow/63085.tmp.3098 2004-08-17 10:13:02.000000000 -0400
@@ -2,13 +2,13 @@
Product: Mono: Runtime
Version: unspecified
OS: SUSE 9.1
OS Details:
Status: NEW
Resolution:
-Severity:
+Severity: Unknown
Priority: Normal
Component: misc
AssignedTo: mono-bugs@ximian.com
ReportedBy: agallero@netscape.net
QAContact: mono-bugs@ximian.com
TargetMilestone: ---
@@ -54,6 +54,49 @@
windows and run it under .NET framework it works fine.
------- Additional Comments From agallero@netscape.net 2004-08-14 16:13 -------
Created an attachment (id=9092)
Test code.
+
+------- Additional Comments From vargaz@freemail.hu 2004-08-17 10:13 -------
+This is due to a bug in the long register allocation code:
+
+processing: 18 long_shr R8 <- R10 R12 clobbers: s
+ shortcut assignment of R12 to ECX
+ assigned dreg (long) %eax to dest R8
+ assigned hreg (long-high) %edx to dest R9
+ freeable %edx (R9) (born in 18)
+ freeable %eax (R8) (born in 18)
+ assigned sreg1 (long) %eax to sreg1 R10
+ assigned sreg1 (long-high) %edx to sreg1 R11
+
+...
+
+processing: 15 sub R14 <- R15 R16 clobbers: 1
+ assigned dreg %ecx to dest R14
+ freeable %ecx (R14) (born in 15)
+ assigned sreg1 %ecx to R15
+ start regmask to assign R16: 0x00000007 (R1 <- R1 R16)
+ excluding sreg1 %ecx
+ excluding dreg %ecx
+ available regmask: 0x00000005
+ selected register %eax has assignment 0
+ SPILLED LOAD (1 at 0xffffffe0(%ebp)) R0 (freed %eax)
+ assigned sreg2 %eax to R16
+
+processing: 11 loadi4_membase R10 <- %ebp
+ assigned dreg %eax to dest R10
+ freeable %eax (R10) (born in 11)
+
+Here, %eax is spilled at instruction 15, but no spilled store is
+generated at instruction 11. Thats probably because the rs->isymbolic
+array entries are not set around line 1896 in mini-x86.c (and
+possibly other places). More generally: the local reg allocation code
+is a mess, the handling of iassign and isymbolic probably needs to be
+put into a separate function so it is easier to keep them in sync.
+
+
+
+
+
+