diff options
author | marha <marha@users.sourceforge.net> | 2011-01-28 08:01:47 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2011-01-28 08:01:47 +0000 |
commit | dc0f390b45a3037c85163b8a9e945a31f5756690 (patch) | |
tree | 317b992cf88d5a7df8c9b9c7c419aef42246fa3f /mesalib/src/glsl/glcpp | |
parent | 987904f9692c374b81547ebe0bd3bad5a279db48 (diff) | |
download | vcxsrv-dc0f390b45a3037c85163b8a9e945a31f5756690.tar.gz vcxsrv-dc0f390b45a3037c85163b8a9e945a31f5756690.tar.bz2 vcxsrv-dc0f390b45a3037c85163b8a9e945a31f5756690.zip |
libfontenc libXau libxcb mesalib git update 28 jan 2011
Diffstat (limited to 'mesalib/src/glsl/glcpp')
-rw-r--r-- | mesalib/src/glsl/glcpp/README | 25 | ||||
-rw-r--r-- | mesalib/src/glsl/glcpp/glcpp-parse.c | 8 | ||||
-rw-r--r-- | mesalib/src/glsl/glcpp/glcpp-parse.y | 8 |
3 files changed, 32 insertions, 9 deletions
diff --git a/mesalib/src/glsl/glcpp/README b/mesalib/src/glsl/glcpp/README index 0b5ef508c..9cc00e927 100644 --- a/mesalib/src/glsl/glcpp/README +++ b/mesalib/src/glsl/glcpp/README @@ -29,4 +29,27 @@ The __LINE__ and __FILE__ macros are not yet supported. A file that ends with a function-like macro name as the last non-whitespace token will result in a parse error, (where it should be -passed through as is).
\ No newline at end of file +passed through as is). + +Known deviations from the specification +--------------------------------------- +As mentoned above, the GLSL specification (as of 1.30.10) is fairly +vague on some aspects of the preprocessor, and we've been using C99 to +fill in details. Here is a list of cases where we have deviated from +the behavior specified in C99 to obtain better compatibility with +other GLSL implementations: + + * Redefining a macro with a different value + + C89 says that a macro "may be redefined ... provided that the + second definition [is equivalent]" (Section 3.8.3 Macro + Replacement/constraints) + + C99 is even more explicit, saying tthat a macro "shall not be + redefined by another #define preprocessing directive unless the + second definition [is equivalent]" (Section 6.10.3 Macro + Replacement/Constraints) + + In spite of this, glcpp emits a warning rather than an error for + non-equivalent redefinition of macros since this matches the + behavior of other, widely-used implementations. diff --git a/mesalib/src/glsl/glcpp/glcpp-parse.c b/mesalib/src/glsl/glcpp/glcpp-parse.c index 8567bda1e..2bf96e035 100644 --- a/mesalib/src/glsl/glcpp/glcpp-parse.c +++ b/mesalib/src/glsl/glcpp/glcpp-parse.c @@ -4012,8 +4012,8 @@ _define_object_macro (glcpp_parser_t *parser, talloc_free (macro); return; } - glcpp_error (loc, parser, "Redefinition of macro %s\n", - identifier); + glcpp_warning (loc, parser, "Redefinition of macro %s\n", + identifier); } hash_table_insert (parser->defines, macro, identifier); @@ -4043,8 +4043,8 @@ _define_function_macro (glcpp_parser_t *parser, talloc_free (macro); return; } - glcpp_error (loc, parser, "Redefinition of macro %s\n", - identifier); + glcpp_warning (loc, parser, "Redefinition of macro %s\n", + identifier); } hash_table_insert (parser->defines, macro, identifier); diff --git a/mesalib/src/glsl/glcpp/glcpp-parse.y b/mesalib/src/glsl/glcpp/glcpp-parse.y index b449eb288..797e61428 100644 --- a/mesalib/src/glsl/glcpp/glcpp-parse.y +++ b/mesalib/src/glsl/glcpp/glcpp-parse.y @@ -1687,8 +1687,8 @@ _define_object_macro (glcpp_parser_t *parser, talloc_free (macro); return; } - glcpp_error (loc, parser, "Redefinition of macro %s\n", - identifier); + glcpp_warning (loc, parser, "Redefinition of macro %s\n", + identifier); } hash_table_insert (parser->defines, macro, identifier); @@ -1718,8 +1718,8 @@ _define_function_macro (glcpp_parser_t *parser, talloc_free (macro); return; } - glcpp_error (loc, parser, "Redefinition of macro %s\n", - identifier); + glcpp_warning (loc, parser, "Redefinition of macro %s\n", + identifier); } hash_table_insert (parser->defines, macro, identifier); |