2007-01-27 Zoltan Varga <vargaz@gmail.com>
authorZoltan Varga <vargaz@gmail.com>
Sat, 27 Jan 2007 16:17:52 +0000 (16:17 -0000)
committerZoltan Varga <vargaz@gmail.com>
Sat, 27 Jan 2007 16:17:52 +0000 (16:17 -0000)
* mini-amd64.c (peephole_pass): Remove optimizations which omit a
narrowing. Fixes #80622.

* iltests.il: Add new regresssion test.

svn path=/trunk/mono/; revision=71791

mono/mini/ChangeLog
mono/mini/iltests.il
mono/mini/mini-amd64.c

index b419e76e3d9fd306c07c1760e106ceb8414650b1..73cafb2216bae91be50f3f3aeb69bee6074e033c 100644 (file)
@@ -1,3 +1,9 @@
+2007-01-27  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
+       narrowing. Fixes #80622.
+
+       * iltests.il: Add new regresssion test. 
 
 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
 
index 0a98aa8ceb9dc4ee526d39eb8cefc383f8196fff..a23b749a4e19a6900e393eb191176c46d3c87b0d 100644 (file)
@@ -1192,4 +1192,31 @@ COND:   ldloc.0
        IL_0049:  ret 
     } // end of method Tests::test_5_float_branch_nan
 
+    .method private static  hidebysig
+           default void regress_80622_inner (object x)  cil managed
+    {
+               .locals (unsigned int8 i)
+        // Method begins at RVA 0x2050
+        // Code size 14 (0xe)
+        .maxstack 8
+        IL_1000:  ldarg.0
+        IL_1001:  unbox unsigned int8
+        IL_1006:  ldobj unsigned int8
+        IL_000b:  conv.ovf.i4.un
+        IL_000c:  pop
+        IL_000d:  ret
+    }
+
+    // method line 2
+    .method private static  hidebysig
+           default int32 test_0_regress_80622 ()  cil managed
+    {
+        .maxstack 8
+        IL_0000:  ldc.i4 255
+        IL_0005:  box unsigned int8
+        IL_000a:  call void class Tests::regress_80622_inner (object)
+               ldc.i4.0
+        IL_000f:  ret
+    }
+
 }
index 7b3b9be54a4cb66a3201bf44b3503077593a5a25..0c08103c1a7757410f2e239e36857cdcad46afe7 100644 (file)
@@ -1691,7 +1691,6 @@ peephole_pass (MonoCompile *cfg, MonoBasicBlock *bb)
 #endif
                        }
                        break;
-               case OP_LOADU1_MEMBASE:
                case OP_LOADI1_MEMBASE:
                        /* 
                         * Note: if reg1 = reg2 the load op is removed
@@ -1716,7 +1715,6 @@ peephole_pass (MonoCompile *cfg, MonoBasicBlock *bb)
                                }
                        }
                        break;
-               case OP_LOADU2_MEMBASE:
                case OP_LOADI2_MEMBASE:
                        /* 
                         * Note: if reg1 = reg2 the load op is removed