/* { dg-do compile } */ typedef struct S_ { int *myarr; int size; } S; #pragma omp declare mapper (named: struct S_ v) map(to:v.size, v.myarr) \ map(tofrom: v.myarr[0:v.size]) /* { dg-note "'#pragma omp declare mapper' previously declared here" "" { target c } .-2 } */ /* { dg-note "'#pragma omp declare mapper \\(named: S_\\)' previously defined here" "" { target c++ } .-3 } */ #pragma omp declare mapper (named: S v) map(to:v.size, v.myarr) \ map(tofrom: v.myarr[0:v.size]) /* { dg-error "redeclaration of 'named' '#pragma omp declare mapper' for type 'S' \\\{aka 'struct S_'\\\}" "" { target c } .-2 } */ /* { dg-error "redefinition of '#pragma omp declare mapper \\(named: S\\)'" "" { target c++ } .-3 } */ #pragma omp declare mapper (struct S_ v) map(to:v.size, v.myarr) \ map(tofrom: v.myarr[0:v.size]) /* { dg-note "'#pragma omp declare mapper' previously declared here" "" { target c } .-2 } */ /* { dg-note "'#pragma omp declare mapper \\(S_\\)' previously defined here" "" { target c++ } .-3 } */ #pragma omp declare mapper (S v) map(to:v.size, v.myarr) \ map(tofrom: v.myarr[0:v.size]) /* { dg-error "redeclaration of '' '#pragma omp declare mapper' for type 'S' \\\{aka 'struct S_'\\\}" "" { target c } .-2 } */ /* { dg-error "redefinition of '#pragma omp declare mapper \\(S\\)'" "" { target c++ } .-3 } */