[Mono-bugs] [Bug 70637][Nor] Changed - ssapre creates invalid IL on amd64

bugzilla-daemon@bugzilla.ximian.com bugzilla-daemon@bugzilla.ximian.com
Fri, 17 Dec 2004 17:05:43 -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 massi@ximian.com.

http://bugzilla.ximian.com/show_bug.cgi?id=70637

--- shadow/70637	2004-12-17 13:13:13.000000000 -0500
+++ shadow/70637.tmp.8620	2004-12-17 17:05:43.000000000 -0500
@@ -1,14 +1,14 @@
 Bug#: 70637
 Product: Mono: Runtime
 Version: 1.0
-OS: 
+OS: unknown
 OS Details: 
-Status: NEW   
+Status: ASSIGNED   
 Resolution: 
-Severity: 
+Severity: Unknown
 Priority: Normal
 Component: JIT
 AssignedTo: massi@ximian.com                            
 ReportedBy: vargaz@gmail.com               
 QAContact: mono-bugs@ximian.com
 TargetMilestone: ---
@@ -32,6 +32,40 @@
 hope it helps.
 
 ------- Additional Comments From vargaz@gmail.com  2004-12-17 13:13 -------
 Created an attachment (id=13541)
 output of -v -v -v -v
 
+
+------- Additional Comments From massi@ximian.com  2004-12-17 17:05 -------
+Yes, this is a problem.
+SSAPRE relies on the fact that an inst has a stack type which is one
+of STACK_I4, STACK_I8 or STACK_R8 to decide that it is an expression",
+and it later uses an helper function to get the MonoType from the
+stack type to decide the type of the temporary.
+
+Inside "analyze_expression" in "ssapre.c" there's a big switch where
+several opcodes are forced to be ignored (the case with the has the
+"result->opcode = 0" statement).
+
+All the platform independent "OUTARG" opcodes are there, probably also
+OP_AMD64_OUTARG_XMMREG_R4, OP_AMD64_OUTARG_XMMREG_R8,
+OP_AMD64_OUTARG_ALIGN_STACK for AMD 64 and
+OP_SPARC_OUTARG_REGPAIR, OP_SPARC_OUTARG_MEM, OP_SPARC_OUTARG_MEMPAIR,
+OP_SPARC_OUTARG_SPLIT_REG_STACK, OP_SPARC_OUTARG_FLOAT_REG,
+OP_SPARC_OUTARG_DOUBLE_REG for Sparc should be added to the switch.
+
+This evening I don't have time to produce a proper patch (my tree is
+too different from svn in that file), I'll do it on Monday (or maybe
+on the weekend...).
+
+However, even if I do it, I cannot test it (no hardware), so, Zoltan,
+would you please try it out yourself if you have time?
+Just locate "analyze_expression" in "ssapre.c" and add those opcodes
+to the switch, and report what happens...
+
+By the way, my bad!
+The proper fix is simply to avoid processing the "tree roots" in the
+list of MonoInst trees (being roots they cannot have an "output
+value")!
+I'll code this and commit the fix in Monday.
+