Preprocessor: Evaluate INT_MIN % -1 to 0.
authorAaron Muir Hamilton <aaron@correspondwith.me>
Tue, 24 Oct 2017 10:59:01 +0000 (10:59 +0000)
committerAaron Muir Hamilton <aaron@correspondwith.me>
Tue, 24 Oct 2017 10:59:01 +0000 (10:59 +0000)
Test/cppIntMinOverNegativeOne.frag
glslang/MachineIndependent/preprocessor/Pp.cpp

index 1cdaaeb..b7e0a95 100644 (file)
@@ -1,3 +1,6 @@
 #if (-2147483648 / -1) != 0
 #error INT_MIN / -1 should yield 0, something went wrong.
+#endif
+#if (-2147483648 % -1) != 0
+#error INT_MIN % -1 should yield 0, something went wrong.
 #endif
\ No newline at end of file
index 0cb560c..aeb42a0 100644 (file)
@@ -352,7 +352,7 @@ namespace {
     int op_sub(int a, int b) { return a - b; }
     int op_mul(int a, int b) { return a * b; }
     int op_div(int a, int b) { return a == INT_MIN && b == -1 ? 0 : a / b; }
-    int op_mod(int a, int b) { return a % b; }
+    int op_mod(int a, int b) { return a == INT_MIN && b == -1 ? 0 : a % b; }
     int op_pos(int a) { return a; }
     int op_neg(int a) { return -a; }
     int op_cmpl(int a) { return ~a; }