https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99656
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Priority|P3 |P1 Summary|ICE in linear_loads_p |[11 Regression] ICE in | |linear_loads_p Ever confirmed|0 |1 CC| |rguenth at gcc dot gnu.org, | |tnfchris at gcc dot gnu.org Target Milestone|--- |11.0 Last reconfirmed| |2021-03-19 Status|UNCONFIRMED |NEW --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Confirmed. -fwrapv is not needed #2 0x000000000183e03e in linear_loads_p (perm_cache=0x7fffffffd080, root=0x355a838) at ../../src/trunk/gcc/tree-vect-slp-patterns.c:258 258 nloads[i] = all_loads[perm[i].first][perm[i].second]; (gdb) p debug(root) t.f90:1:24: note: node 0x355a838 (max_nunits=1, refcnt=1) t.f90:1:24: note: op: VEC_PERM_EXPR t.f90:1:24: note: { } t.f90:1:24: note: lane permutation { 0[0] 1[1] } t.f90:1:24: note: children 0x3559f30 0x355a0c8 $1 = void (gdb) p debug ((slp_tree)0x3559f30) t.f90:1:24: note: node 0x3559f30 (max_nunits=2, refcnt=4) t.f90:1:24: note: op template: _16 = REALPART_EXPR <*t1_9(D)>; t.f90:1:24: note: stmt 0 _16 = REALPART_EXPR <*t1_9(D)>; t.f90:1:24: note: stmt 1 _16 = REALPART_EXPR <*t1_9(D)>; t.f90:1:24: note: load permutation { 0 0 } $8 = void (gdb) p debug ((slp_tree)0x355a0c8) t.f90:1:24: note: node (external) 0x355a0c8 (max_nunits=1, refcnt=2) t.f90:1:24: note: { _18, _18 } $9 = void so one child doesn't have a load permutation. Looks like we merge PERM_TOP and PERM_EVENEVEN as PERM_EVENEVEN but for the PERM_TOP child we then record NULL into all_loads. Tamar?