Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/c-c++-common/goacc/deep-copy-arrayofstruct.c @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | |
children |
line wrap: on
line source
/* { dg-do compile } */ #include <stdlib.h> #include <stdio.h> typedef struct { int *a; int *b; int *c; } mystruct; int main(int argc, char* argv[]) { const int N = 1024; const int S = 32; mystruct *m = (mystruct *) calloc (S, sizeof (*m)); int i, j; for (i = 0; i < S; i++) { m[i].a = (int *) malloc (N * sizeof (int)); m[i].b = (int *) malloc (N * sizeof (int)); m[i].c = (int *) malloc (N * sizeof (int)); } for (j = 0; j < S; j++) for (i = 0; i < N; i++) { m[j].a[i] = 0; m[j].b[i] = 0; m[j].c[i] = 0; } #pragma acc enter data copyin(m[0:1]) for (int i = 0; i < 99; i++) { int j, k; for (k = 0; k < S; k++) #pragma acc parallel loop copy(m[k].a[0:N]) /* { dg-error "expected .\\\). before .\\\.. token" } */ for (j = 0; j < N; j++) m[k].a[j]++; for (k = 0; k < S; k++) #pragma acc parallel loop copy(m[k].b[0:N], m[k].c[5:N-10]) /* { dg-error "expected .\\\). before .\\\.. token" } */ /* { dg-error ".m. appears more than once in data clauses" "" { target c++ } .-1 } */ for (j = 0; j < N; j++) { m[k].b[j]++; if (j > 5 && j < N - 5) m[k].c[j]++; } } #pragma acc exit data copyout(m[0:1]) for (j = 0; j < S; j++) { for (i = 0; i < N; i++) { if (m[j].a[i] != 99) abort (); if (m[j].b[i] != 99) abort (); if (i > 5 && i < N-5) { if (m[j].c[i] != 99) abort (); } else { if (m[j].c[i] != 0) abort (); } } free (m[j].a); free (m[j].b); free (m[j].c); } free (m); return 0; }