blob: 0c73111c1ee026b39252c967ab784b30a5d1c10c [file] [log] [blame]
/* This tests strength reduction and choice of induction variables. The targets
for this testcase are quite limited, as with different set of available
addressing modes, the results may be quite different.
The testcase comes from PR 29256 (and originally, the stream benchmark). */
/* { dg-do compile { target { i?86-*-* || { x86_64-*-* || { powerpc_hard_double && { ! powerpc_fprs } } } } } } */
/* { dg-require-effective-target nonpic } */
/* { dg-options "-O3 -fno-tree-loop-distribute-patterns -fno-prefetch-loop-arrays -fdump-tree-optimized -fno-common" } */
# define N 2000000
double a[N],c[N];
void tuned_STREAM_Copy()
{
int j;
for (j=0; j<N; j++)
c[j] = a[j];
}
/* Check that the memory references are based on &a and &c, with appropriate
offsets. Ideally, we would want each of them to appear once in the output.
However, due to a bug in jump threading, we end up peeling one iteration from
the loop, which creates an additional occurrence. */
/* { dg-final { scan-tree-dump-times "MEM\[^;\]*&a" 1 "optimized" } } */
/* { dg-final { scan-tree-dump-times "MEM\[^;\]*&c" 1 "optimized" } } */