[Bug middle-end/126403] float[4] argument passing and return messes up a lot

"pinskia at gcc dot gnu.org via Gcc-bugs" <[email protected]>
Newsgroups gmane.comp.gcc.bugs
Message-ID <[email protected]/bugzilla/>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.