From: Ian Romanick Date: Tue, 18 Feb 2020 23:31:37 +0000 (-0800) Subject: nir/search: Use larger type to hold linearized index X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=58bdc1c748f2922b3970c3b3a41d1b0977f07886;p=mesa.git nir/search: Use larger type to hold linearized index "index" is an offset into a linearized 3-dimensional array. Starting with fbd5359a0a6, the 3-dimensional array can have 43 elements in each dimension. 43**3 = 79507, and that will overflow the uint16_t. See also the discussion in MR !3765. Fixes: fbd5359a0a6 ("nir/algebraic: Rearrange bcsel sequences generated by nir_opt_peephole_select") Suggested-by: Connor Abbott Reviewed-by: Connor Abbott Tested-by: Marge Bot Part-of: --- diff --git a/src/compiler/nir/nir_search.c b/src/compiler/nir/nir_search.c index 458a4eeb1ce..7abb023faf5 100644 --- a/src/compiler/nir/nir_search.c +++ b/src/compiler/nir/nir_search.c @@ -789,7 +789,7 @@ nir_algebraic_automaton(nir_instr *instr, struct util_dynarray *states, * itertools.product(), which was used to emit the transition * table. */ - uint16_t index = 0; + unsigned index = 0; for (unsigned i = 0; i < nir_op_infos[op].num_inputs; i++) { index *= tbl->num_filtered_states; index += tbl->filter[*util_dynarray_element(states, uint16_t,