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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2021-09-28
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW
      Known to fail|                            |12.0
           Keywords|                            |missed-optimization
            Summary|Function call has           |Function call has
                   |unnecessary aliasing check  |unnecessary stride check

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
It's not an alias but we seem to not know that the array stride of the result
is one and thus we version on that.  I'm not sure whether fortran allows

  res(/1, 16, 2/) = add2vecs2(a, b)

or so or why  we know the inputs are not strided.  The result comes in as
array descriptor while the other arguments are pointers to a flat [8] array.
Adding 'contiguous' yields

Error: 'add2vecs2' at (1) has the CONTIGUOUS attribute but is not an array
pointer or an assumed-shape or assumed-rank array

so maybe it's really just a missed optimization in the Frontend?

Reply via email to