From 002cd2c8d439729227c79093bdbf8a269e72c19f Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Tue, 7 Dec 2010 19:00:44 -0800 Subject: linker: Fix regressions caused by previous commit That's what I get for not running piglit before pushing. Don't try to patch types of unsized arrays when linking fails. Don't try to patch types of unsized arrays that are shared between shader stages. --- src/glsl/linker.cpp | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) (limited to 'src/glsl/linker.cpp') diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp index d7638facce..e62fe6d7e9 100644 --- a/src/glsl/linker.cpp +++ b/src/glsl/linker.cpp @@ -871,23 +871,27 @@ link_intrastage_shaders(void *mem_ctx, * unspecified sizes have a size specified. The size is inferred from the * max_array_access field. */ - foreach_list(node, linked->ir) { - ir_variable *const var = ((ir_instruction *) node)->as_variable(); + if (linked != NULL) { + foreach_list(node, linked->ir) { + ir_variable *const var = ((ir_instruction *) node)->as_variable(); - if (var == NULL) - continue; + if (var == NULL) + continue; - if (!var->type->is_array() || (var->type->length != 0)) - continue; + if ((var->mode != ir_var_auto) && (var->mode != ir_var_temporary)) + continue; - const glsl_type *type = - glsl_type::get_array_instance(var->type->fields.array, - var->max_array_access); + if (!var->type->is_array() || (var->type->length != 0)) + continue; - assert(type != NULL); - var->type = type; - } + const glsl_type *type = + glsl_type::get_array_instance(var->type->fields.array, + var->max_array_access); + assert(type != NULL); + var->type = type; + } + } return linked; } -- cgit v1.2.3