https://gcc.gnu.org/bugzilla/show_bug.cgi?id=128433
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target| |x86_64-*-*
Keywords| |wrong-code
Last reconfirmed| |2026-11-04
Priority|P3 |P2
Status|UNCONFIRMED |ASSIGNED
Ever confirmed|0 |1
Known to work| |14.4.0
Target Milestone|--- |15.4
Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot
gnu.org
Summary|[16 Regression] overread |[15/16/17 Regression]
|causes segfault in masked |overread causes segfault in
|vect epilogue |masked vect epilogue
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Also fails on the 15 branch if you use --param vect-partial-vector-usage=1.
Also fails with a fully masked loop (--param vect-partial-vector-usage=2).
_61 = {_60, _60, _60, _60, _60, _60, _60, _60, _60, _60, _60, _60, _60, _60,
_60, _60};
_62 = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 } < _61;
...
vect__6.19_48 = .MASK_LOAD (vectp_s.17_45, 32B, loop_mask_47, { 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 });
vectp_s.17_49 = vectp_s.17_45 + 18446744073709551584;
vect__6.20_50 = VEC_PERM_EXPR <vect__6.19_48, vect__6.19_48, { 0, 0, 1, 1, 2,
2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 }>;
possibly the issue is the load permutation that makes us register the wrong
mask? I will have a closer look.