summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Romanick <ian.d.romanick@intel.com>2018-10-09 13:37:44 -0700
committerIan Romanick <ian.d.romanick@intel.com>2018-10-09 14:30:29 -0700
commita8eb3d1071cc7c1704c0b638e379d40e0bdb04de (patch)
tree780858691da19ad92fc5179e0d1fb3d2644cc1d3
parent0948bfb148e97508074e5d8609463720f3fe8ca8 (diff)
glsl: Refactor type checking for redeclarationsast_to_hir-work
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
-rw-r--r--src/compiler/glsl/ast_to_hir.cpp19
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 6f6e7efe9aa..6b0d4d874c9 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);
}