https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96854
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords|needs-bisection |
CC| |jakub at gcc dot gnu.org
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
double _Complex __attribute__((noipa))
foo (double _Complex acc, const double _Complex *x, const double _Complex* y,
int N)
{
for (int c = 0; c < N; ++c)
acc -= x[c] * y[c];
return acc;
}
int
main()
{
static const double _Complex y[] = { 1, 2, };
static const double _Complex x[] = { 1, 3, };
double _Complex ref = foo (0, x, y, 2);
if (__builtin_creal (ref) != -7.)
__builtin_abort ();
return 0;
}
Started with r10-3252-g901083b9bdf69a7b1382f9682c6fd1d5759667dd
stopped with r11-1501-gda2b7c7f0a136b4d00520a08d4c443fc2e3a467d
The result it compiles when miscompiled is 7., so it is not just some ulp
difference in the computation.