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

anlauf at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |anlauf at gcc dot gnu.org

--- Comment #3 from anlauf at gcc dot gnu.org ---
The assignment generates very interesting code:

  {
    logical(kind=4) D.4914;
    struct y D.4915;
    integer(kind=8) D.4916;
    integer(kind=8) D.4917;
    void * restrict D.4918;

    D.4914 = f () == x;
    D.4915 = *x;
    *x = *f ();
    if (D.4914)
      {
        (void) 0;
      }
    else
      {
        if ((void *) f ()->x1.data != 0B)
          {
            D.4916 = (f ()->x1.dim[0].ubound - f ()->x1.dim[0].lbound) + 1;
...

We likely need to either generate a temporary or save the function result
otherwise.

Reply via email to