https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110888
--- Comment #5 from Rimvydas (RJ) ---
It is more like this problem:
$ cat foo.c
void foo_(double *x, double *y, double *z)
{
int i;
__builtin_memset(z, 0, 8); /* z[0] = 0.0; */
for (i=0; i<1 ; i++)
z[0] += x[0] * y[0];
}
$ gcc -O2
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110888
Thomas Koenig changed:
What|Removed |Added
Component|middle-end |fortran
--- Comment #4 from Thomas
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110888
Jerry DeLisle changed:
What|Removed |Added
CC||jvdelisle at gcc dot gnu.org,
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110888
--- Comment #1 from Rimvydas (RJ) ---
Created attachment 55680
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=55680=edit
possible fix
With this patch an extra register is freed and compiler produces expected code
on x86_64:
movsd