diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg/torture/pr85989.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr85989.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/torture/pr85989.c b/gcc/testsuite/gcc.dg/torture/pr85989.c new file mode 100644 index 00000000000..5cfd7016fb5 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr85989.c @@ -0,0 +1,31 @@ +/* { dg-do run } */ + +#define N 9 + +void __attribute__((noinline, noclone)) +f (double x, double y, double *res) +{ + y = -y; + for (int i = 0; i < N; ++i) + { + double tmp = y; + y = x; + x = tmp; + res[i] = i; + } + res[N] = y * y; + res[N + 1] = x; +} + +int +main (void) +{ + double res[N + 2]; + f (10, 20, res); + for (int i = 0; i < N; ++i) + if (res[i] != i) + __builtin_abort (); + if (res[N] != 100 || res[N + 1] != -20) + __builtin_abort (); + return 0; +} |