/* PR target/43139 */ /* { dg-do compile { target fpic } } */ /* { dg-options "-g -O2 -fpic" } */ typedef double T1[10]; typedef double T2[10][10]; typedef int T3[10]; void __attribute__((noinline)) fn1 (void) { asm volatile ("" : : : "memory"); } void __attribute__((noinline)) fn2 (int x, ...) { asm volatile ("" : : "r" (x) : "memory"); } static void bar (double v, double w, double x, double y, double z) { double a; if (v / w < 200.0) { a = x + (y - x) * __builtin_exp (-v / w); fn2 (0); fn2 (1, a * 20.2 / z, z); fn1 (); } } static void baz (T2 u, T2 v, T2 t, T2 x, T1 y, T3 z, double q, int j, int k) { int i = z[k]; if (u[i][j] > 0.0) bar (q, x[i][j], v[i][j], t[i][j], y[i]); } static T2 a, b, c, d; static T1 e; static T3 f; void __attribute__((noinline)) test (int j, int k, double q) { baz (a, b, c, d, e, f, q, j, k); } int main (void) { d[0][6] = 1.0; a[0][6] = 2.0; test (6, 7, 400.0); return 0; }