Value Range: Add range op for builtin isnormal
[official-gcc.git] / gcc / testsuite / c-c++-common / gomp / allocate-2.c
blob6bb4a8af2e7c8d35654e69f05dcf0e97e03806cf
1 typedef enum omp_allocator_handle_t
2 #if __cplusplus >= 201103L
3 : __UINTPTR_TYPE__
4 #endif
6 omp_null_allocator = 0,
7 omp_default_mem_alloc = 1,
8 omp_large_cap_mem_alloc = 2,
9 omp_const_mem_alloc = 3,
10 omp_high_bw_mem_alloc = 4,
11 omp_low_lat_mem_alloc = 5,
12 omp_cgroup_mem_alloc = 6,
13 omp_pteam_mem_alloc = 7,
14 omp_thread_mem_alloc = 8,
15 __omp_allocator_handle_t_max__ = __UINTPTR_MAX__
16 } omp_allocator_handle_t;
18 int bar (int, int *, int);
19 omp_allocator_handle_t baz (void);
21 void
22 foo (int x, int z)
24 int i;
25 #pragma omp task allocate (x) /* { dg-error "'x' specified in 'allocate' clause but not in an explicit privatization clause" } */
26 bar (x, &x, 0);
27 #pragma omp taskwait
28 #pragma omp parallel allocate (x) /* { dg-error "'x' specified in 'allocate' clause but not in an explicit privatization clause" } */
29 bar (x, &x, 0);
30 #pragma omp parallel for simd private (x) allocate (x) /* { dg-error "'x' specified in 'allocate' clause but not in an explicit privatization clause" } */
31 for (i = 0; i < 16; i++)
32 x = i;
33 #pragma omp parallel allocate (foo) /* { dg-error "'\[^\n\r]*foo\[^\n\r]*' is not a variable in 'allocate' clause" } */
35 #pragma omp parallel allocate (x) shared (x) /* { dg-error "'x' specified in 'allocate' clause but not in an explicit privatization clause" } */
36 bar (x, &x, 0);
37 #pragma omp parallel private (x) allocate (x) allocate (x) /* { dg-warning "'x' appears more than once in 'allocate' clauses" } */
38 bar (x, &x, 0);
39 #pragma omp parallel private (x) allocate (x, x) /* { dg-warning "'x' appears more than once in 'allocate' clauses" } */
40 bar (x, &x, 0);
41 #pragma omp parallel private (x) allocate (0.0 : x) /* { dg-error "'allocate' clause allocator expression has type 'double' rather than 'omp_allocator_handle_t'" } */
42 bar (x, &x, 0);
43 #pragma omp parallel private (x) allocate (0 : x) /* { dg-error "'allocate' clause allocator expression has type 'int' rather than 'omp_allocator_handle_t'" } */
44 bar (x, &x, 0);
47 void
48 foo1 ()
50 int a = 10;
51 #pragma omp target
53 #pragma omp parallel private (a) allocate(a) // { dg-error "'allocate' clause must specify an allocator here" }
54 a = 20;
56 #pragma omp target private(a) allocate(a) // { dg-error "'allocate' clause must specify an allocator here" }
58 a = 30;