diff options
Diffstat (limited to 'src/compiler/glsl/glsl_parser.yy')
-rw-r--r-- | src/compiler/glsl/glsl_parser.yy | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/compiler/glsl/glsl_parser.yy b/src/compiler/glsl/glsl_parser.yy index 9136fddbd14..0c3781c3361 100644 --- a/src/compiler/glsl/glsl_parser.yy +++ b/src/compiler/glsl/glsl_parser.yy @@ -845,7 +845,9 @@ declaration: } } block->layout = block->default_layout; - + if (!block->layout.push_to_global(& @1, state)) { + YYERROR; + } $$ = $1; } ; @@ -921,6 +923,9 @@ parameter_declaration: { $$ = $2; $$->type->qualifier = $1; + if (!$$->type->qualifier.push_to_global(& @1, state)) { + YYERROR; + } } | parameter_qualifier parameter_type_specifier { @@ -930,6 +935,9 @@ parameter_declaration: $$->type = new(ctx) ast_fully_specified_type(); $$->type->set_location_range(@1, @2); $$->type->qualifier = $1; + if (!$$->type->qualifier.push_to_global(& @1, state)) { + YYERROR; + } $$->type->specifier = $2; } ; @@ -1145,6 +1153,9 @@ fully_specified_type: $$ = new(ctx) ast_fully_specified_type(); $$->set_location_range(@1, @2); $$->qualifier = $1; + if (!$$->qualifier.push_to_global(& @1, state)) { + YYERROR; + } $$->specifier = $2; if ($$->specifier->structure != NULL && $$->specifier->structure->is_declaration) { @@ -2911,6 +2922,10 @@ layout_defaults: merge_qualifier(& @1, state, $1, false)) { YYERROR; } + if (!state->default_uniform_qualifier-> + push_to_global(& @1, state)) { + YYERROR; + } } | layout_buffer_defaults { @@ -2919,6 +2934,10 @@ layout_defaults: merge_qualifier(& @1, state, $1, false)) { YYERROR; } + if (!state->default_shader_storage_qualifier-> + push_to_global(& @1, state)) { + YYERROR; + } /* From the GLSL 4.50 spec, section 4.4.5: * @@ -2936,6 +2955,9 @@ layout_defaults: if (!$1.merge_into_in_qualifier(& @1, state, $$)) { YYERROR; } + if (!state->in_qualifier->push_to_global(& @1, state)) { + YYERROR; + } } | layout_out_defaults { @@ -2943,5 +2965,8 @@ layout_defaults: if (!$1.merge_into_out_qualifier(& @1, state, $$)) { YYERROR; } + if (!state->out_qualifier->push_to_global(& @1, state)) { + YYERROR; + } } ; |