mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-29 18:50:10 +01:00
glsl: When unable to assign the initializer for a const variable, set it to 0.
This prevents assertion failures or cascading errors after we've logged the fact that we were unable to handle the initializer. Fixes unsized-array-non-const-index-2.vert
This commit is contained in:
parent
d1e6b31cb8
commit
e11757bb89
1 changed files with 21 additions and 13 deletions
|
|
@ -1827,24 +1827,32 @@ ast_declarator_list::hir(exec_list *instructions,
|
|||
ir_rvalue *new_rhs = validate_assignment(state, var->type, rhs);
|
||||
if (new_rhs != NULL) {
|
||||
rhs = new_rhs;
|
||||
|
||||
ir_constant *constant_value = rhs->constant_expression_value();
|
||||
if (!constant_value) {
|
||||
_mesa_glsl_error(& initializer_loc, state,
|
||||
"initializer of %s variable `%s' must be a "
|
||||
"constant expression",
|
||||
(this->type->qualifier.constant)
|
||||
? "const" : "uniform",
|
||||
decl->identifier);
|
||||
if (var->type->is_numeric()) {
|
||||
/* Reduce cascading errors. */
|
||||
var->constant_value = ir_constant::zero(ctx, var->type);
|
||||
}
|
||||
} else {
|
||||
rhs = constant_value;
|
||||
var->constant_value = constant_value;
|
||||
}
|
||||
} else {
|
||||
_mesa_glsl_error(&initializer_loc, state,
|
||||
"initializer of type %s cannot be assigned to "
|
||||
"variable of type %s",
|
||||
rhs->type->name, var->type->name);
|
||||
}
|
||||
|
||||
ir_constant *constant_value = rhs->constant_expression_value();
|
||||
if (!constant_value) {
|
||||
_mesa_glsl_error(& initializer_loc, state,
|
||||
"initializer of %s variable `%s' must be a "
|
||||
"constant expression",
|
||||
(this->type->qualifier.constant)
|
||||
? "const" : "uniform",
|
||||
decl->identifier);
|
||||
} else {
|
||||
rhs = constant_value;
|
||||
var->constant_value = constant_value;
|
||||
if (var->type->is_numeric()) {
|
||||
/* Reduce cascading errors. */
|
||||
var->constant_value = ir_constant::zero(ctx, var->type);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue