/* { dg-do compile } */ int x = 5; struct Q { int *arr1; int *arr2; int *arr3; }; int y = 5; #pragma omp declare mapper (struct Q myq) map(myq.arr2[0:x]) /* { dg-note "'#pragma omp declare mapper' previously declared here" "" { target c } .-1 } */ /* { dg-note "'#pragma omp declare mapper \\(Q\\)' previously defined here" "" { target c++ } .-2 } */ #pragma omp declare mapper (struct Q myq) map(myq.arr2[0:y]) /* { dg-error "redeclaration of '' '#pragma omp declare mapper' for type 'struct Q'" "" { target c } .-1 } */ /* { dg-error "redefinition of '#pragma omp declare mapper \\(Q\\)'" "" { target c++ } .-2 } */ struct R { int *arr1; }; void foo (void) { #pragma omp declare mapper (struct R myr) map(myr.arr1[0:x]) /* { dg-note "'#pragma omp declare mapper' previously declared here" "" { target c } .-1 } */ /* { dg-note "'#pragma omp declare mapper \\(R\\)' previously declared here" "" { target c++ } .-2 } */ #pragma omp declare mapper (struct R myr) map(myr.arr1[0:y]) /* { dg-error "redeclaration of '' '#pragma omp declare mapper' for type 'struct R'" "" { target c } .-1 } */ /* { dg-error "redeclaration of '#pragma omp declare mapper \\(R\\)'" "" { target c++ } .-2 } */ }