X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fglsl%2Fir_reader.cpp;h=40901dc6c92ea0cd16350dbd789aaf63f41d7644;hb=bbafd2b849629d3155fe0eef655bbc166a901925;hp=11a8cb7ac2414ab0c996054a4e26f8a7dd55e9a6;hpb=b74ff382a42bcb81bbf0dc6a85bb38404c46260d;p=mesa.git diff --git a/src/glsl/ir_reader.cpp b/src/glsl/ir_reader.cpp index 11a8cb7ac24..40901dc6c92 100644 --- a/src/glsl/ir_reader.cpp +++ b/src/glsl/ir_reader.cpp @@ -538,20 +538,25 @@ ir_reader::read_rvalue(s_expression *expr) ir_assignment * ir_reader::read_assignment(s_expression *expr) { - s_expression *cond_expr, *lhs_expr, *rhs_expr; + s_expression *cond_expr = NULL; + s_expression *lhs_expr, *rhs_expr; s_list *mask_list; - s_pattern pat[] = { "assign", cond_expr, mask_list, lhs_expr, rhs_expr }; - if (!MATCH(expr, pat)) { - ir_read_error(expr, "expected (assign () " + s_pattern pat4[] = { "assign", mask_list, lhs_expr, rhs_expr }; + s_pattern pat5[] = { "assign", cond_expr, mask_list, lhs_expr, rhs_expr }; + if (!MATCH(expr, pat4) && !MATCH(expr, pat5)) { + ir_read_error(expr, "expected (assign [] () " " )"); return NULL; } - ir_rvalue *condition = read_rvalue(cond_expr); - if (condition == NULL) { - ir_read_error(NULL, "when reading condition of assignment"); - return NULL; + ir_rvalue *condition = NULL; + if (cond_expr != NULL) { + condition = read_rvalue(cond_expr); + if (condition == NULL) { + ir_read_error(NULL, "when reading condition of assignment"); + return NULL; + } } unsigned mask = 0;