/* { dg-do compile } */ /* { dg-options "-fopenmp -std=c23" } */ #pragma omp begin declare target #pragma omp begin declare target device_type (any) [[omp::directive (begin declare target, device_type (host))]]; int a; [[omp::directive (end declare target)]]; #pragma omp end declare target #pragma omp end declare target [[omp::directive (begin declare target device_type (nohost))]]; int b; #pragma omp end declare target /* { dg-error "'begin declare target' in attribute syntax terminated with 'end declare target' in pragma syntax" } */ #pragma omp begin declare target int c; [[omp::directive (end declare target)]];/* { dg-error "'begin declare target' in pragma syntax terminated with 'end declare target' in attribute syntax" } */ #pragma omp begin declare target device_type (host) [[omp::directive (begin declare target)]]; int d; #pragma omp end declare target /* { dg-error "'begin declare target' in attribute syntax terminated with 'end declare target' in pragma syntax" } */ #pragma omp begin declare target int e; [[omp::directive (end declare target)]];/* { dg-error "'begin declare target' in pragma syntax terminated with 'end declare target' in attribute syntax" } */ #pragma omp end declare target [[omp::directive (begin declare target device_type (any))]]; [[omp::directive (begin declare target)]]; int f; #pragma omp end declare target /* { dg-error "'begin declare target' in attribute syntax terminated with 'end declare target' in pragma syntax" } */ #pragma omp begin declare target int g; [[omp::directive (end declare target)]];/* { dg-error "'begin declare target' in pragma syntax terminated with 'end declare target' in attribute syntax" } */ [[omp::directive (end declare target)]]; [[omp::directive (begin declare target)]]; #pragma omp begin declare target int h; #pragma omp end declare target #pragma omp end declare target /* { dg-error "'begin declare target' in attribute syntax terminated with 'end declare target' in pragma syntax" } */ #pragma omp begin declare target [[omp::directive (begin declare target)]]; int i; [[omp::directive (end declare target)]]; [[omp::directive (end declare target)]];/* { dg-error "'begin declare target' in pragma syntax terminated with 'end declare target' in attribute syntax" } */