File: interop_messages.cpp

package info (click to toggle)
llvm-toolchain-15 1%3A15.0.6-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,554,644 kB
  • sloc: cpp: 5,922,452; ansic: 1,012,136; asm: 674,362; python: 191,568; objc: 73,855; f90: 42,327; lisp: 31,913; pascal: 11,973; javascript: 10,144; sh: 9,421; perl: 7,447; ml: 5,527; awk: 3,523; makefile: 2,520; xml: 885; cs: 573; fortran: 567
file content (129 lines) | stat: -rw-r--r-- 5,545 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
// RUN: %clang_cc1 -verify -fopenmp -std=c++11 -o - -DWITHDEF %s
// RUN: %clang_cc1 -verify -fopenmp -std=c++11 -o - -DWITHOUTDEF %s

#ifdef WITHDEF
typedef void *omp_interop_t;

void foo(int *Ap) {
  omp_interop_t InteropVar;
  omp_interop_t Another;

  //expected-error@+1 {{expected interop type: 'target' and/or 'targetsync'}}
  #pragma omp interop init(target,foo:InteropVar) init(target:Another)

  //expected-error@+1 {{use of undeclared identifier 'NoDeclVar'}}
  #pragma omp interop init(target:NoDeclVar) init(target:Another)

  //expected-error@+1 {{use of undeclared identifier 'NoDeclVar'}}
  #pragma omp interop use(NoDeclVar) use(Another)

  //expected-error@+1 {{use of undeclared identifier 'NoDeclVar'}}
  #pragma omp interop destroy(NoDeclVar) destroy(Another)

  //expected-error@+2 {{expected interop type: 'target' and/or 'targetsync'}}
  //expected-error@+1 {{expected expression}}
  #pragma omp interop init(InteropVar) init(target:Another)

  //expected-warning@+1 {{missing ':' after interop types}}
  #pragma omp interop init(target InteropVar)

  //expected-error@+1 {{expected expression}}
  #pragma omp interop init(prefer_type(1,+,3),target:InteropVar) \
                      init(target:Another)

  int IntVar;
  struct S { int I; } SVar;

  //expected-error@+1 {{interop variable must be of type 'omp_interop_t'}}
  #pragma omp interop init(prefer_type(1,"sycl",3),target:IntVar) \
                      init(target:Another)

  //expected-error@+1 {{interop variable must be of type 'omp_interop_t'}}
  #pragma omp interop use(IntVar) use(Another)

  //expected-error@+1 {{interop variable must be of type 'omp_interop_t'}}
  #pragma omp interop destroy(IntVar) destroy(Another)

  //expected-error@+1 {{interop variable must be of type 'omp_interop_t'}}
  #pragma omp interop init(prefer_type(1,"sycl",3),target:SVar) \
                      init(target:Another)

  //expected-error@+1 {{interop variable must be of type 'omp_interop_t'}}
  #pragma omp interop use(SVar) use(Another)

  //expected-error@+1 {{interop variable must be of type 'omp_interop_t'}}
  #pragma omp interop destroy(SVar) destroy(Another)

  int a, b;
  //expected-error@+1 {{expected variable of type 'omp_interop_t'}}
  #pragma omp interop init(target:a+b) init(target:Another)

  //expected-error@+1 {{expected variable of type 'omp_interop_t'}}
  #pragma omp interop use(a+b) use(Another)

  //expected-error@+1 {{expected variable of type 'omp_interop_t'}}
  #pragma omp interop destroy(a+b) destroy(Another)

  const omp_interop_t C = (omp_interop_t)5;
  //expected-error@+1 {{expected non-const variable of type 'omp_interop_t'}}
  #pragma omp interop init(target:C) init(target:Another)

  //expected-error@+1 {{expected non-const variable of type 'omp_interop_t'}}
  #pragma omp interop destroy(C) destroy(Another)

  //expected-error@+1 {{prefer_list item must be a string literal or constant integral expression}}
  #pragma omp interop init(prefer_type(1.0),target:InteropVar) \
                      init(target:Another)

  //expected-error@+1 {{prefer_list item must be a string literal or constant integral expression}}
  #pragma omp interop init(prefer_type(a),target:InteropVar) \
                      init(target:Another)

  //expected-error@+1 {{expected at least one 'init', 'use', 'destroy', or 'nowait' clause for '#pragma omp interop'}}
  #pragma omp interop device(0)

  //expected-warning@+1 {{interop type 'target' cannot be specified more than once}}
  #pragma omp interop init(target,targetsync,target:InteropVar)

  //expected-error@+1 {{'depend' clause requires the 'targetsync' interop type}}
  #pragma omp interop init(target:InteropVar) depend(inout:Ap)

  //expected-error@+1 {{interop variable 'InteropVar' used in multiple action clauses}}
  #pragma omp interop init(target:InteropVar) init(target:InteropVar)

  //expected-error@+1 {{interop variable 'InteropVar' used in multiple action clauses}}
  #pragma omp interop use(InteropVar) use(InteropVar)

  //expected-error@+1 {{interop variable 'InteropVar' used in multiple action clauses}}
  #pragma omp interop destroy(InteropVar) destroy(InteropVar)

  //expected-error@+1 {{interop variable 'InteropVar' used in multiple action clauses}}
  #pragma omp interop init(target:InteropVar) use(InteropVar)

  //expected-error@+1 {{interop variable 'InteropVar' used in multiple action clauses}}
  #pragma omp interop init(target:InteropVar) destroy(InteropVar)

  //expected-error@+1 {{interop variable 'InteropVar' used in multiple action clauses}}
  #pragma omp interop use(InteropVar) destroy(InteropVar)

  //expected-error@+1 {{directive '#pragma omp interop' cannot contain more than one 'device' clause}}
  #pragma omp interop init(target:InteropVar) device(0) device(1)

  //expected-error@+1 {{argument to 'device' clause must be a non-negative integer value}}
  #pragma omp interop init(target:InteropVar) device(-4)

  //expected-error@+1 {{directive '#pragma omp interop' cannot contain more than one 'nowait' clause}}
  #pragma omp interop nowait init(target:InteropVar) nowait
}
#endif
#ifdef WITHOUTDEF
void foo() {
  int InteropVar;
  //expected-error@+1 {{'omp_interop_t' type not found; include <omp.h>}}
  #pragma omp interop init(prefer_type(1,"sycl",3),target:InteropVar) nowait
  //expected-error@+1 {{'omp_interop_t' type not found; include <omp.h>}}
  #pragma omp interop use(InteropVar) nowait
  //expected-error@+1 {{'omp_interop_t' type not found; include <omp.h>}}
  #pragma omp interop destroy(InteropVar) nowait
}
#endif