glsl: glcpp: Allow "#if undefined-macro' to evaluate to false.
authorCarl Worth <cworth@cworth.org>
Fri, 8 Jun 2012 22:00:49 +0000 (15:00 -0700)
committerCarl Worth <cworth@cworth.org>
Tue, 26 Jun 2012 22:20:03 +0000 (15:20 -0700)
commitc96b8302a398a6db27f1bb6070cdc088c7ee0fba
tree0a684b1cef15912802cc763af5e4191f98d7346e
parentb75f1d973c7b626dba567b792be5a3539855a705
glsl: glcpp: Allow "#if undefined-macro' to evaluate to false.

A strict reading of the GLSL specification would have this be an
error, but we've received reports from users who expect the
preprocessor to interepret undefined macros as 0. This is the standard
behavior of the rpeprocessor for C, and according to these user
reports is also the behavior of other OpenGL implementations.

So here's one of those cases where we can make our users happier by
ignoring the specification. And it's hard to imagine users who really,
really want to see an error for this case.

The two affected tests cases are updated to reflect the new behavior.

Signed-off-by: Carl Worth <cworth@cworth.org>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/glsl/glcpp/glcpp-parse.y
src/glsl/glcpp/tests/070-undefined-macro-in-expression.c
src/glsl/glcpp/tests/070-undefined-macro-in-expression.c.expected
src/glsl/glcpp/tests/098-elif-undefined.c
src/glsl/glcpp/tests/098-elif-undefined.c.expected