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.
This commit is contained in:
Ian Romanick
2010-12-07 19:00:44 -08:00
parent 6f53921c4b
commit 002cd2c8d4
+16 -12
View File
@@ -871,24 +871,28 @@ 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;
}