glsl: simplified ast_type_qualifier::merge_into_[in|out]_qualifier API

Since we modified the way in which multiple repetitions of the same
layout-qualifier-name in a single declaration collapse into the
ast_type_qualifier class, we can simplify the
merge_into_[in|out]_qualifier APIs through removing the create_node
parameter.

Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Signed-off-by: Andres Gomez <agomez@igalia.com>
This commit is contained in:
Andres Gomez
2016-10-07 01:52:08 +03:00
parent be54a58da3
commit 93f90d7795
3 changed files with 10 additions and 12 deletions

View File

@@ -767,7 +767,7 @@ struct ast_type_qualifier {
*/ */
bool merge_into_out_qualifier(YYLTYPE *loc, bool merge_into_out_qualifier(YYLTYPE *loc,
_mesa_glsl_parse_state *state, _mesa_glsl_parse_state *state,
ast_node* &node, bool create_node); ast_node* &node);
/** /**
* Validate current qualifier against the global in one. * Validate current qualifier against the global in one.
@@ -780,7 +780,7 @@ struct ast_type_qualifier {
*/ */
bool merge_into_in_qualifier(YYLTYPE *loc, bool merge_into_in_qualifier(YYLTYPE *loc,
_mesa_glsl_parse_state *state, _mesa_glsl_parse_state *state,
ast_node* &node, bool create_node); ast_node* &node);
bool validate_flags(YYLTYPE *loc, bool validate_flags(YYLTYPE *loc,
_mesa_glsl_parse_state *state, _mesa_glsl_parse_state *state,

View File

@@ -514,7 +514,7 @@ ast_type_qualifier::validate_out_qualifier(YYLTYPE *loc,
bool bool
ast_type_qualifier::merge_into_out_qualifier(YYLTYPE *loc, ast_type_qualifier::merge_into_out_qualifier(YYLTYPE *loc,
_mesa_glsl_parse_state *state, _mesa_glsl_parse_state *state,
ast_node* &node, bool create_node) ast_node* &node)
{ {
const bool r = state->out_qualifier->merge_qualifier(loc, state, const bool r = state->out_qualifier->merge_qualifier(loc, state,
*this, false); *this, false);
@@ -525,7 +525,6 @@ ast_type_qualifier::merge_into_out_qualifier(YYLTYPE *loc,
state->out_qualifier->flags.q.explicit_stream = 0; state->out_qualifier->flags.q.explicit_stream = 0;
break; break;
case MESA_SHADER_TESS_CTRL: case MESA_SHADER_TESS_CTRL:
if (create_node)
node = new(state->linalloc) ast_tcs_output_layout(*loc); node = new(state->linalloc) ast_tcs_output_layout(*loc);
break; break;
default: default:
@@ -627,7 +626,7 @@ ast_type_qualifier::validate_in_qualifier(YYLTYPE *loc,
bool bool
ast_type_qualifier::merge_into_in_qualifier(YYLTYPE *loc, ast_type_qualifier::merge_into_in_qualifier(YYLTYPE *loc,
_mesa_glsl_parse_state *state, _mesa_glsl_parse_state *state,
ast_node* &node, bool create_node) ast_node* &node)
{ {
bool r = true; bool r = true;
void *lin_ctx = state->linalloc; void *lin_ctx = state->linalloc;
@@ -636,8 +635,7 @@ ast_type_qualifier::merge_into_in_qualifier(YYLTYPE *loc,
* more repeated nodes will be created as we will have the flag set. * more repeated nodes will be created as we will have the flag set.
*/ */
if (state->stage == MESA_SHADER_GEOMETRY if (state->stage == MESA_SHADER_GEOMETRY
&& this->flags.q.prim_type && !state->in_qualifier->flags.q.prim_type && this->flags.q.prim_type && !state->in_qualifier->flags.q.prim_type) {
&& create_node) {
node = new(lin_ctx) ast_gs_input_layout(*loc, this->prim_type); node = new(lin_ctx) ast_gs_input_layout(*loc, this->prim_type);
} }
@@ -653,8 +651,8 @@ ast_type_qualifier::merge_into_in_qualifier(YYLTYPE *loc,
* into HIR. * into HIR.
*/ */
if (state->in_qualifier->flags.q.local_size) { if (state->in_qualifier->flags.q.local_size) {
if (create_node) node = new(lin_ctx) ast_cs_input_layout(*loc,
node = new(lin_ctx) ast_cs_input_layout(*loc, state->in_qualifier->local_size); state->in_qualifier->local_size);
state->in_qualifier->flags.q.local_size = 0; state->in_qualifier->flags.q.local_size = 0;
for (int i = 0; i < 3; i++) for (int i = 0; i < 3; i++)
state->in_qualifier->local_size[i] = NULL; state->in_qualifier->local_size[i] = NULL;

View File

@@ -2957,14 +2957,14 @@ layout_defaults:
| layout_in_defaults | layout_in_defaults
{ {
$$ = NULL; $$ = NULL;
if (!$1.merge_into_in_qualifier(& @1, state, $$, true)) { if (!$1.merge_into_in_qualifier(& @1, state, $$)) {
YYERROR; YYERROR;
} }
} }
| layout_out_defaults | layout_out_defaults
{ {
$$ = NULL; $$ = NULL;
if (!$1.merge_into_out_qualifier(& @1, state, $$, true)) { if (!$1.merge_into_out_qualifier(& @1, state, $$)) {
YYERROR; YYERROR;
} }
} }