60 lines
979 B
C
60 lines
979 B
C
/* 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;
|
|
}
|