https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111691
Bug ID: 111691 Summary: [OpenMP][5.2] C/C++ handle 'omp declare variant([base–name:]variant-name)' - i.e. with 'base-name' Product: gcc Version: 14.0 Status: UNCONFIRMED Keywords: openmp, rejects-valid Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: burnus at gcc dot gnu.org Target Milestone: --- OpenMP 5.2 has: omp declare variant([base–name:]variant-name) for C/C++/Fortran; in OpenMP 5.1, the 'base-name:' was Fortran, only. (Example loosely based on https://github.com/SOLLVE/sollve_vv/blob/master/tests/5.1/declare_variant/test_begin_end_declare_variant.c ) It seems as if the following should be valid: void add(int *arr){ for (int i = 0; i < N; i++){ // Base function adds 1 to array values arr[i] = i+1; } } #pragma omp begin declare variant match(construct={parallel}) void add(int *arr){ #pragma omp for for (int i = 0; i < N; i++){ arr[i] = i + 2; } } void add_my(int *arr){ #pragma omp for for (int i = 0; i < N; i++){ arr[i] = i + 3; } } #pragma omp declare variant(add : add_my) match(construct={target}) #pragma omp end declare variant // Note: delimited declare variant ending here!