blob: 709bc0c8f4def4c30565c3b04962ce1b1256e12c [file] [log] [blame]
/* { 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 '<default>' '#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 '<default>' '#pragma omp declare mapper' for type 'struct R'" "" { target c } .-1 } */
/* { dg-error "redeclaration of '#pragma omp declare mapper \\(R\\)'" "" { target c++ } .-2 } */
}