[interp] do widening for more arith ops
authorBernhard Urban <bernhard.urban@xamarin.com>
Wed, 3 May 2017 08:45:40 +0000 (10:45 +0200)
committerBernhard Urban <bernhard.urban@xamarin.com>
Fri, 5 May 2017 11:06:36 +0000 (13:06 +0200)
mono/mini/interp/transform.c

index 182ef3ac84f5a9d52b604c6c6931d7ac6a9c5aa1..e5c8f3f00abe61148ad8fed3081c6bebb878f55a 100644 (file)
@@ -259,17 +259,6 @@ binary_arith_op(TransformData *td, int mint_op)
        --td->sp;
 }
 
-static void
-binary_int_op(TransformData *td, int mint_op)
-{
-       int op = mint_op + td->sp [-1].type - STACK_TYPE_I4;
-       CHECK_STACK(td, 2);
-       if (td->sp [-1].type != td->sp [-2].type)
-               g_warning("%s.%s: int type mismatch", td->method->klass->name, td->method->name);
-       ADD_CODE(td, op);
-       --td->sp;
-}
-
 static void
 shift_op(TransformData *td, int mint_op)
 {
@@ -1615,23 +1604,23 @@ generate (MonoMethod *method, RuntimeMethod *rtm, unsigned char *is_bb_start, Mo
                        ++td.ip;
                        break;
                case CEE_REM:
-                       binary_int_op (&td, MINT_REM_I4);
+                       binary_arith_op (&td, MINT_REM_I4);
                        ++td.ip;
                        break;
                case CEE_REM_UN:
-                       binary_int_op (&td, MINT_REM_UN_I4);
+                       binary_arith_op (&td, MINT_REM_UN_I4);
                        ++td.ip;
                        break;
                case CEE_AND:
-                       binary_int_op (&td, MINT_AND_I4);
+                       binary_arith_op (&td, MINT_AND_I4);
                        ++td.ip;
                        break;
                case CEE_OR:
-                       binary_int_op (&td, MINT_OR_I4);
+                       binary_arith_op (&td, MINT_OR_I4);
                        ++td.ip;
                        break;
                case CEE_XOR:
-                       binary_int_op (&td, MINT_XOR_I4);
+                       binary_arith_op (&td, MINT_XOR_I4);
                        ++td.ip;
                        break;
                case CEE_SHL: