Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/gcc.dg/vect/vect-100.c @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
/* { dg-require-effective-target vect_int } */ #include <stdlib.h> #include <stdarg.h> #include "tree-vect.h" #define N 9 struct extraction { int a[N]; int b[N]; }; static int a[N] = {1,2,3,4,5,6,7,8,9}; static int b[N] = {2,3,4,5,6,7,8,9,0}; __attribute__ ((noinline)) int main1 () { int i; struct extraction *p; p = (struct extraction *) malloc (sizeof (struct extraction)); /* Vectorizable: alias analysis determines that p can't point to a and/or b. */ for (i = 0; i < N; i++) { p->a[i] = a[i]; p->b[i] = b[i]; } /* check results: */ for (i = 0; i < N; i++) { if (p->a[i] != a[i] || p->b[i] != b[i]) abort(); } return 0; } __attribute__ ((noinline)) int main2 () { int i; int c[N] = {1,2,3,4,5,6,7,8,9}; int d[N] = {2,3,4,5,6,7,8,9,0}; struct extraction *p; p = (struct extraction *) malloc (sizeof (struct extraction)); /* Vectorizable: c and d are local arrays. */ for (i = 0; i < N; i++) { p->a[i] = c[i]; p->b[i] = d[i]; } /* check results: */ for (i = 0; i < N; i++) { if (p->a[i] != c[i] || p->b[i] != d[i]) abort(); } return 0; } int main (void) { check_vect (); main1 (); main2 (); return 0; } /* Requires versioning. */ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 0 "vect" } } */