Preprocessor: Evaluate INT_MIN % -1 to 0.

This commit is contained in:
Aaron Muir Hamilton 2017-10-24 10:59:01 +00:00
Родитель 047b65f953
Коммит 9d4a1b24e9
2 изменённых файлов: 4 добавлений и 1 удалений

Просмотреть файл

@ -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

Просмотреть файл

@ -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; }