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]:

Reply via email to