[Mesa-dev] [PATCH] glsl parser: Select typelist as early as possible.
Ian Romanick
idr at freedesktop.org
Tue Apr 24 03:48:14 PDT 2012
On 04/20/2012 08:20 AM, Olivier Galibert wrote:
> Guys, it's a bugfix, it's five lines changed, and it's falling through
> the cracks... Can someone have a look?
From my reply on 4/13:
Do you have a specific test case in mind that fails without this
patch but passes with?
> OG.
>
> On Wed, Apr 11, 2012 at 10:56:51AM +0200, Olivier Galibert wrote:
>> Type selection must be extended w.r.t version and extension lines as
>> soon as it is possible, and in any case before the lookahead is done
>> to check the nature of the next line. Otherwise code such as:
>>
>> #version 400
>>
>> dmat2 function inverse(dmat2 m) { ... }
>>
>> fails because "dmat2" has already been lexed as a NEW_IDENTIFIER
>> before _mesa_glsl_initialize_types is called.
>>
>> Signed-off-by: Olivier Galibert<galibert at pobox.com>
>> ---
>> src/glsl/glsl_parser.yy | 5 ++---
>> 1 files changed, 2 insertions(+), 3 deletions(-)
>>
>> [Sorry, resent with the correct subject...]
>>
>> diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy
>> index 64506b6..9a0af95 100644
>> --- a/src/glsl/glsl_parser.yy
>> +++ b/src/glsl/glsl_parser.yy
>> @@ -233,9 +233,6 @@ static void yyerror(YYLTYPE *loc, _mesa_glsl_parse_state *st, const char *msg)
>>
>> translation_unit:
>> version_statement extension_statement_list
>> - {
>> - _mesa_glsl_initialize_types(state);
>> - }
>> external_declaration_list
>> {
>> delete state->symbols;
>> @@ -285,6 +282,7 @@ version_statement:
>> state->version_string,
>> state->supported_version_string);
>> }
>> + _mesa_glsl_initialize_types(state);
>> }
>> ;
>>
>> @@ -322,6 +320,7 @@ extension_statement:
>> if (!_mesa_glsl_process_extension($2,& @2, $4,& @4, state)) {
>> YYERROR;
>> }
>> + _mesa_glsl_initialize_types(state);
>> }
>> ;
>>
>> --
>> 1.7.4
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list