c18c98c0ad
PR middle-end/36106 * omp-low.c (expand_omp_atomic_pipeline): Load value using the integral type rather than floating point, then VIEW_CONVERT_EXPR to the floating point type. * testsuite/libgomp.c/atomic-5.c: New test. * testsuite/libgomp.c/atomic-6.c: New test. * testsuite/libgomp.c/autopar-1.c: New test. From-SVN: r135027
45 lines
674 B
C
45 lines
674 B
C
/* { dg-do run } */
|
|
/* { dg-options "-ftree-parallelize-loops=4 -O2 -ffast-math" } */
|
|
|
|
extern void abort (void);
|
|
|
|
double d[1024], e[1024];
|
|
int f[1024], g[1024];
|
|
|
|
double __attribute__((noinline))
|
|
foo (void)
|
|
{
|
|
double s = 0.0;
|
|
int i;
|
|
for (i = 0; i < 1024; i++)
|
|
s += d[i] - e[i];
|
|
return s;
|
|
}
|
|
|
|
int __attribute__((noinline))
|
|
bar (void)
|
|
{
|
|
int s = 0, i;
|
|
for (i = 0; i < 1024; i++)
|
|
s += f[i] - g[i];
|
|
return s;
|
|
}
|
|
|
|
int
|
|
main (void)
|
|
{
|
|
int i;
|
|
for (i = 0; i < 1024; i++)
|
|
{
|
|
d[i] = i * 2;
|
|
e[i] = i;
|
|
f[i] = i * 2;
|
|
g[i] = i;
|
|
}
|
|
if (foo () != 1023 * 1024 / 2)
|
|
abort ();
|
|
if (bar () != 1023 * 1024 / 2)
|
|
abort ();
|
|
return 0;
|
|
}
|