+ public static int test_0_sub_ovf () {
+ long i, j, k;
+
+ checked {
+ i = System.Int64.MinValue;
+ j = 0;
+ k = i - j;
+ }
+
+ if (k != System.Int64.MinValue)
+ return 1;
+
+ checked {
+ i = System.Int64.MaxValue;
+ j = 0;
+ k = i - j;
+ }
+
+ if (k != System.Int64.MaxValue)
+ return 2;
+
+ checked {
+ i = System.Int64.MinValue;
+ j = System.Int64.MinValue + 1234;
+ k = i - j;
+ }
+
+ if (k != -1234)
+ return 3;
+
+ checked {
+ i = System.Int64.MaxValue;
+ j = 1234;
+ k = i - j;
+ }
+
+ if (k != System.Int64.MaxValue - 1234)
+ return 4;
+
+ checked {
+ i = System.Int64.MaxValue - 1234;
+ j = -1234;
+ k = i - j;
+ }
+
+ if (k != System.Int64.MaxValue)
+ return 5;
+
+ checked {
+ i = System.Int64.MinValue + 1234;
+ j = 1234;
+ k = i - j;
+ }
+
+ if (k != System.Int64.MinValue)
+ return 6;
+
+ return 0;
+ }
+
+ public static int test_0_sub_ovf_un () {
+ ulong i, j, k;
+
+ checked {
+ i = System.UInt64.MaxValue;
+ j = 0;
+ k = i - j;
+ }
+
+ if (k != System.UInt64.MaxValue)
+ return 1;
+
+ checked {
+ i = System.UInt64.MaxValue;
+ j = System.UInt64.MaxValue;
+ k = i - j;
+ }
+
+ if (k != 0)
+ return 2;
+
+ return 0;
+ }
+
+ public static int test_2_neg () {
+ long a = -2;
+ return (int)(-a);
+ }
+
+ public static int test_0_neg_large () {
+ long min = -9223372036854775808;
+ unchecked {
+ ulong ul = (ulong)min;
+ return (min == -(long)ul) ? 0 : 1;
+ }
+ }
+
+ public static int test_5_shift ()