Commit 3112b568 by John Kessenich Committed by GitHub

Merge pull request #1113 from xorgy/preprocessor-int-min-over-negative-one

Preprocessor: Evaluate INT_MIN / -1 to 0.
parents 0b55e0f2 dc756a61
cppIntMinOverNegativeOne.frag
Shader version: 100
0:? Sequence
0:? Linker Objects
Linked fragment stage:
ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point
Shader version: 100
0:? Sequence
0:? Linker Objects
#if (-2147483648 / -1) != 0
#error INT_MIN / -1 should yield 0, something went wrong.
#endif
\ No newline at end of file
...@@ -84,6 +84,7 @@ NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ...@@ -84,6 +84,7 @@ NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <cstdlib> #include <cstdlib>
#include <cstring> #include <cstring>
#include <cctype> #include <cctype>
#include <climits>
#include "PpContext.h" #include "PpContext.h"
#include "PpTokens.h" #include "PpTokens.h"
...@@ -350,7 +351,7 @@ namespace { ...@@ -350,7 +351,7 @@ namespace {
int op_add(int a, int b) { return a + b; } int op_add(int a, int b) { return a + b; }
int op_sub(int a, int b) { return a - b; } int op_sub(int a, int b) { return a - b; }
int op_mul(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 / 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 % b; }
int op_pos(int a) { return a; } int op_pos(int a) { return a; }
int op_neg(int a) { return -a; } int op_neg(int a) { return -a; }
......
...@@ -78,6 +78,7 @@ INSTANTIATE_TEST_CASE_P( ...@@ -78,6 +78,7 @@ INSTANTIATE_TEST_CASE_P(
"matrixError.vert", "matrixError.vert",
"cppSimple.vert", "cppSimple.vert",
"cppIndent.vert", "cppIndent.vert",
"cppIntMinOverNegativeOne.frag",
"cppNest.vert", "cppNest.vert",
"cppBad.vert", "cppBad.vert",
"cppBad2.vert", "cppBad2.vert",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment