https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118557

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |missed-optimization
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2025-01-19

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Couple of missed optimizations which is causing the vectorizer to decide to
over vectorize:
```
  _15 = SR.26_4 + _21;
  if (SR.26_4 != _15)
    goto <bb 10>; [89.00%]
  else
    goto <bb 14>; [11.00%]
;;    succ:       10 [89.0% ...
```
Should just be if (_21 != 0)



Note I change copy to be:
```static inline
void copy(span in, span out) {
        auto f = in.begin();
        auto o = out.begin();
        auto s = in.size();
        for(size_t t = 0; t < s; t++)
        {
          *o++ = *f++;
        }
}
```

It works.

Reply via email to