From 58bdc1c748f2922b3970c3b3a41d1b0977f07886 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Tue, 18 Feb 2020 15:31:37 -0800 Subject: [PATCH] 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: --- src/compiler/nir/nir_search.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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, -- 2.30.2