1 /* { dg-options "-O2 -ftree-vectorize -fno-vect-cost-model -fno-tree-scev-cprop -fgraphite-identity" } */ 2 /* { dg-require-effective-target vect_int } */ 3 4 /* gcc.dg/vect/no-scevccp-outer-4.c was miscompiled by Graphite. 5 Adding it here to always test it with Graphite. */ 6 7 #include <stdarg.h> 8 9 extern void abort (); 10 #define N 40 11 12 int a[N]; 13 14 /* induction variable k advances through inner and outer loops. */ 15 16 __attribute__ ((noinline)) int foo(int n)17foo (int n){ 18 int i,j,k=0; 19 int sum; 20 21 if (n<=0) 22 return 0; 23 24 for (i = 0; i < N; i++) { 25 sum = 0; 26 for (j = 0; j < n; j+=2) { 27 sum += k++; 28 } 29 a[i] = sum + j; 30 } 31 } 32 main(void)33int main (void) 34 { 35 int i,j,k=0; 36 int sum; 37 38 for (i=0; i<N; i++) 39 a[i] = i; 40 41 foo (N); 42 43 /* check results: */ 44 for (i=0; i<N; i++) 45 { 46 sum = 0; 47 for (j = 0; j < N; j+=2) 48 sum += k++; 49 if (a[i] != sum + j) 50 abort(); 51 } 52 53 return 0; 54 } 55 56