/* PR target/63661 */ /* { dg-do run } */ /* { dg-require-effective-target fpic } */ /* { dg-options "-mtune=nehalem -fPIC -O2" } */ static void __attribute__((noinline,noclone,hot)) foo (double a, double q, double *ff, double *gx, int e, int ni) { union { double n; unsigned long long o; } punner; double d; punner.n = q; __builtin_printf("B: 0x%016llx ---- %g\n", punner.o, q); d = q - 5; if(d < 0) d = -d; if (d > 0.1) __builtin_abort(); } static int __attribute__((noinline,noclone,hot)) bar (int order, double q, double c[]) { int ni, nn, i, e; double g2, x2, de, s, ratio, ff; nn = 0; e = order & 1; s = 0; ratio = 0; x2 = 0; g2 = 0; if(q == 0.0) return 0; if (order < 5) { ratio = 1.0 / q; nn = order; } ni = -nn; while(1) { de = ratio - g2 - x2; foo (0, q, &ff, &g2, e, ni); if((int)de == 0) break; } s += 2 * nn * c[nn]; for (i = 0; i < 1; i++) { c[0] = nn; for (; i < 10; i++) c[i] = 0.0; c[0] /= s; } return 0; } int main () { double c[1000]; bar (1, 5.0, c); return 0; }