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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|tree-optimization           |middle-end
             Blocks|                            |101926
             Status|UNCONFIRMED                 |NEW
            Summary|missed optimization:        |float[4] argument passing
                   |vectorization of simple     |and return messes up a lot
                   |loop                        |
   Last reconfirmed|                            |2026-07-25
           Keywords|                            |missed-optimization
     Ever confirmed|0                           |1
           Severity|normal                      |enhancement

--- Comment #1 from Drea Pinski <pinskia at gcc dot gnu.org> ---
It is not a missed vectorization as you can see it via:
  vect__1.6_5 = MEM <vector(4) float> [(float *)&a];
  vect__2.9_19 = MEM <vector(4) float> [(float *)&b];
  vect__3.10_20 = vect__1.6_5 * vect__2.9_19;
  MEM <vector(4) float> [(float *)&r] = vect__3.10_20;
  D.2979 = r;
  r ={v} {CLOBBER(eos)};
  return D.2979;

The problem is argument passing and return causes the extra code.

And yes there a few other issues related to argument passing and return values
messing up.


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101926
[Bug 101926] [meta-bug] struct/complex/other argument passing and return should
be improved

Reply via email to