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.