diff options
author | Ian Romanick <[email protected]> | 2018-10-09 13:37:44 -0700 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2018-11-15 14:27:32 -0800 |
commit | 425c133ab9bfdc937a12352b09c957c75d2cf92a (patch) | |
tree | 4a2bfff8bfa35b51050919b9705fc48767b054e9 /src/compiler/glsl/ast_to_hir.cpp | |
parent | 61e003ce7ec40a1a41802f8fea97c7c33b46a8ba (diff) |
glsl: Refactor type checking for redeclarations
Signed-off-by: Ian Romanick <[email protected]>
Reviewed-by: Timothy Arceri <[email protected]>
Diffstat (limited to 'src/compiler/glsl/ast_to_hir.cpp')
-rw-r--r-- | src/compiler/glsl/ast_to_hir.cpp | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp index f1fdd0c4a54..9199230a7af 100644 --- a/src/compiler/glsl/ast_to_hir.cpp +++ b/src/compiler/glsl/ast_to_hir.cpp @@ -4281,10 +4281,13 @@ get_variable_being_redeclared(ir_variable **var_ptr, YYLTYPE loc, delete var; var = NULL; *var_ptr = NULL; + } else if (earlier->type != var->type) { + _mesa_glsl_error(&loc, state, + "redeclaration of `%s' has incorrect type", + var->name); } else if ((state->ARB_fragment_coord_conventions_enable || state->is_version(150, 0)) - && strcmp(var->name, "gl_FragCoord") == 0 - && earlier->type == var->type) { + && strcmp(var->name, "gl_FragCoord") == 0) { /* Allow redeclaration of gl_FragCoord for ARB_fcc layout * qualifiers. */ @@ -4307,16 +4310,14 @@ get_variable_being_redeclared(ir_variable **var_ptr, YYLTYPE loc, || strcmp(var->name, "gl_FrontSecondaryColor") == 0 || strcmp(var->name, "gl_BackSecondaryColor") == 0 || strcmp(var->name, "gl_Color") == 0 - || strcmp(var->name, "gl_SecondaryColor") == 0) - && earlier->type == var->type) { + || strcmp(var->name, "gl_SecondaryColor") == 0)) { earlier->data.interpolation = var->data.interpolation; /* Layout qualifiers for gl_FragDepth. */ } else if ((state->is_version(420, 0) || state->AMD_conservative_depth_enable || state->ARB_conservative_depth_enable) - && strcmp(var->name, "gl_FragDepth") == 0 - && earlier->type == var->type) { + && strcmp(var->name, "gl_FragDepth") == 0) { /** From the AMD_conservative_depth spec: * Within any shader, the first redeclarations of gl_FragDepth @@ -4343,7 +4344,6 @@ get_variable_being_redeclared(ir_variable **var_ptr, YYLTYPE loc, } else if (state->has_framebuffer_fetch() && strcmp(var->name, "gl_LastFragData") == 0 && - var->type == earlier->type && var->data.mode == ir_var_auto) { /* According to the EXT_shader_framebuffer_fetch spec: * @@ -4363,11 +4363,6 @@ get_variable_being_redeclared(ir_variable **var_ptr, YYLTYPE loc, /* Allow verbatim redeclarations of built-in variables. Not explicitly * valid, but some applications do it. */ - if (earlier->type != var->type) { - _mesa_glsl_error(&loc, state, - "redeclaration of `%s' has incorrect type", - var->name); - } } else { _mesa_glsl_error(&loc, state, "`%s' redeclared", var->name); } |