https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121509
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|UNCONFIRMED |ASSIGNED Last reconfirmed| |2025-08-12 Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org --- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> --- Broken: > ./xgcc -B. t.c -O2 -march=znver3 -w -fno-tree-slp-vectorize -fopt-info-vec runData/keep/in.23654.c:402:26: optimized: loop vectorized using 16 byte vectors and unroll factor 2 runData/keep/in.23654.c:661:40: optimized: loop vectorized using 32 byte vectors and unroll factor 32 > ./a.out checksum = C6D41636 OK (revision reverted): > ./xgcc -B. t.c -O2 -march=znver3 -w -fno-tree-slp-vectorize -fopt-info-vec runData/keep/in.23654.c:661:40: optimized: loop vectorized using 32 byte vectors and unroll factor 32 > ./a.out checksum = DFCC84BC The revision can cause a loop to be vectorized when it was previously detected to miss some required scalar stmts covered by SLP. runData/keep/in.23654.c:402:26: note: Analyze phi: l_2131_631 = PHI <1(229), -511973466(61)> runData/keep/in.23654.c:402:26: missed: intermediate value used outside loop. runData/keep/in.23654.c:402:26: missed: Unknown def-use cycle pattern. ... runData/keep/in.23654.c:402:26: note: === vect_detect_hybrid_slp === runData/keep/in.23654.c:402:26: note: Processing hybrid candidate : l_2131_631 = PHI <1(229), -511973466(61)> runData/keep/in.23654.c:402:26: note: Found loop_vect sink: l_2131_631 = PHI <1(229), -511973466(61)> runData/keep/in.23654.c:402:26: note: Loop contains SLP and non-SLP stmts runData/keep/in.23654.c:402:26: missed: needs non-SLP handling <bb 61> [local count: 1204977]: # prephitmp_1189 = PHI <_440(47), prephitmp_1187(60)> <bb 62> [local count: 10644573]: # g_87.167_632 = PHI <_544(229), 0(61)> # l_2131_631 = PHI <1(229), -511973466(61)> # ivtmp_717 = PHI <ivtmp_716(229), 2(61)> _536 = (int) g_87.167_632; g_73[_536] = 0; g_87.166_542 = (unsigned char) g_87.167_632; _543 = g_87.166_542 + 1; _544 = (signed char) _543; ivtmp_716 = ivtmp_717 - 1; if (ivtmp_716 != 0) goto <bb 229>; [94.50%] else goto <bb 63>; [5.50%] <bb 229> [local count: 10059121]: goto <bb 62>; [100.00%] <bb 63> [local count: 1204977]: