brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.0 KiB · 8707b5d Raw
203 lines · cpp
1// RUN: %clang_cc1 -verify -fopenmp -std=c++11 -o - -DWITHDEF %s2// RUN: %clang_cc1 -verify -fopenmp -std=c++11 -o - -DWITHOUTDEF %s3// RUN: %clang_cc1 -verify -fopenmp -std=c99 -x c -o - -DCTEST %s4 5#ifdef WITHDEF6typedef void *omp_interop_t;7 8void foo(int *Ap) {9  omp_interop_t InteropVar;10  omp_interop_t Another;11 12  //expected-error@+1 {{expected interop type: 'target' and/or 'targetsync'}}13  #pragma omp interop init(target,foo:InteropVar) init(target:Another)14 15  //expected-error@+1 {{use of undeclared identifier 'NoDeclVar'}}16  #pragma omp interop init(target:NoDeclVar) init(target:Another)17 18  //expected-error@+1 {{use of undeclared identifier 'NoDeclVar'}}19  #pragma omp interop use(NoDeclVar) use(Another)20 21  //expected-error@+1 {{use of undeclared identifier 'NoDeclVar'}}22  #pragma omp interop destroy(NoDeclVar) destroy(Another)23 24  //expected-error@+2 {{expected interop type: 'target' and/or 'targetsync'}}25  //expected-error@+1 {{expected expression}}26  #pragma omp interop init(InteropVar) init(target:Another)27 28  //expected-warning@+1 {{missing ':' after interop types}}29  #pragma omp interop init(target InteropVar)30 31  //expected-error@+1 {{expected expression}}32  #pragma omp interop init(prefer_type(1,+,3),target:InteropVar) \33                      init(target:Another)34 35  int IntVar;36  struct S { int I; } SVar;37 38  //expected-error@+1 {{interop variable must be of type 'omp_interop_t'}}39  #pragma omp interop init(prefer_type(1,"sycl",3),target:IntVar) \40                      init(target:Another)41 42  //expected-error@+1 {{interop variable must be of type 'omp_interop_t'}}43  #pragma omp interop use(IntVar) use(Another)44 45  //expected-error@+1 {{interop variable must be of type 'omp_interop_t'}}46  #pragma omp interop destroy(IntVar) destroy(Another)47 48  //expected-error@+1 {{interop variable must be of type 'omp_interop_t'}}49  #pragma omp interop init(prefer_type(1,"sycl",3),target:SVar) \50                      init(target:Another)51 52  //expected-error@+1 {{interop variable must be of type 'omp_interop_t'}}53  #pragma omp interop use(SVar) use(Another)54 55  //expected-error@+1 {{interop variable must be of type 'omp_interop_t'}}56  #pragma omp interop destroy(SVar) destroy(Another)57 58  int a, b;59  //expected-error@+1 {{expected variable or static data member of type 'omp_interop_t'}}60  #pragma omp interop init(target:a+b) init(target:Another)61 62  //expected-error@+1 {{expected variable or static data member of type 'omp_interop_t'}}63  #pragma omp interop use(a+b) use(Another)64 65  //expected-error@+1 {{expected variable or static data member of type 'omp_interop_t'}}66  #pragma omp interop destroy(a+b) destroy(Another)67 68  const omp_interop_t C = (omp_interop_t)5;69  //expected-error@+1 {{expected non-const variable of type 'omp_interop_t'}}70  #pragma omp interop init(target:C) init(target:Another)71 72  //expected-error@+1 {{expected non-const variable of type 'omp_interop_t'}}73  #pragma omp interop destroy(C) destroy(Another)74 75  //expected-error@+1 {{prefer_list item must be a string literal or constant integral expression}}76  #pragma omp interop init(prefer_type(1.0),target:InteropVar) \77                      init(target:Another)78 79  //expected-error@+1 {{prefer_list item must be a string literal or constant integral expression}}80  #pragma omp interop init(prefer_type(a),target:InteropVar) \81                      init(target:Another)82 83  //expected-error@+1 {{expected at least one 'init', 'use', 'destroy', or 'nowait' clause for '#pragma omp interop'}}84  #pragma omp interop device(0)85 86  //expected-warning@+1 {{interop type 'target' cannot be specified more than once}}87  #pragma omp interop init(target,targetsync,target:InteropVar)88 89  //expected-error@+1 {{'depend' clause requires the 'targetsync' interop type}}90  #pragma omp interop init(target:InteropVar) depend(inout:Ap)91 92  //expected-error@+1 {{interop variable 'InteropVar' used in multiple action clauses}}93  #pragma omp interop init(target:InteropVar) init(target:InteropVar)94 95  //expected-error@+1 {{interop variable 'InteropVar' used in multiple action clauses}}96  #pragma omp interop use(InteropVar) use(InteropVar)97 98  //expected-error@+1 {{interop variable 'InteropVar' used in multiple action clauses}}99  #pragma omp interop destroy(InteropVar) destroy(InteropVar)100 101  //expected-error@+1 {{interop variable 'InteropVar' used in multiple action clauses}}102  #pragma omp interop init(target:InteropVar) use(InteropVar)103 104  //expected-error@+1 {{interop variable 'InteropVar' used in multiple action clauses}}105  #pragma omp interop init(target:InteropVar) destroy(InteropVar)106 107  //expected-error@+1 {{interop variable 'InteropVar' used in multiple action clauses}}108  #pragma omp interop use(InteropVar) destroy(InteropVar)109 110  //expected-error@+1 {{directive '#pragma omp interop' cannot contain more than one 'device' clause}}111  #pragma omp interop init(target:InteropVar) device(0) device(1)112 113  //expected-error@+1 {{argument to 'device' clause must be a non-negative integer value}}114  #pragma omp interop init(target:InteropVar) device(-4)115 116  //expected-error@+1 {{directive '#pragma omp interop' cannot contain more than one 'nowait' clause}}117  #pragma omp interop nowait init(target:InteropVar) nowait118}119 120struct S {121  void foo();122  omp_interop_t InteropVar;123  omp_interop_t func();124  static omp_interop_t sfunc();125};126 127struct T {128  static void static_member_func();129};130 131void T::static_member_func() {132  S s;133  omp_interop_t o;134 135  //expected-error@+1 {{expected variable or static data member of type 'omp_interop_t'}}136  #pragma omp interop init(target:s.InteropVar) init(target:o)137}138 139void S::foo() {140  //expected-error@+1 {{interop variable 'InteropVar' used in multiple action clauses}}141  #pragma omp interop init(target:InteropVar) init(target:InteropVar)142 143  //expected-error@+1 {{interop variable 'InteropVar' used in multiple action clauses}}144  #pragma omp interop use(InteropVar) use(InteropVar)145 146  //expected-error@+1 {{interop variable 'InteropVar' used in multiple action clauses}}147  #pragma omp interop destroy(InteropVar) destroy(InteropVar)148 149  //expected-error@+1 {{interop variable 'InteropVar' used in multiple action clauses}}150  #pragma omp interop init(target:InteropVar) use(InteropVar)151 152  //expected-error@+1 {{interop variable 'InteropVar' used in multiple action clauses}}153  #pragma omp interop init(target:InteropVar) destroy(InteropVar)154 155  //expected-error@+1 {{interop variable 'InteropVar' used in multiple action clauses}}156  #pragma omp interop use(InteropVar) destroy(InteropVar)157 158  //expected-error@+1 {{expected variable, static data member, or non-static data member of current class of type 'omp_interop_t'}}159  #pragma omp interop init(target:InteropVar) init(target:func())160 161  //expected-error@+1 {{expected variable, static data member, or non-static data member of current class of type 'omp_interop_t'}}162  #pragma omp interop init(target:InteropVar) init(target:sfunc())163}164 165void foo2() {166  S s;167  omp_interop_t another;168  //expected-error@+1 {{expected variable or static data member of type 'omp_interop_t'}}169  #pragma omp interop init(target:s.InteropVar) init(target:another)170 171  //expected-error@+1 {{expected variable or static data member of type 'omp_interop_t'}}172  #pragma omp interop init(target: S::sfunc()) init(target:another)173}174#endif175#ifdef WITHOUTDEF176void foo() {177  int InteropVar;178  //expected-error@+1 {{'omp_interop_t' type not found; include <omp.h>}}179  #pragma omp interop init(prefer_type(1,"sycl",3),target:InteropVar) nowait180  //expected-error@+1 {{'omp_interop_t' type not found; include <omp.h>}}181  #pragma omp interop use(InteropVar) nowait182  //expected-error@+1 {{'omp_interop_t' type not found; include <omp.h>}}183  #pragma omp interop destroy(InteropVar) nowait184}185#endif186#ifdef CTEST187typedef void *omp_interop_t;188omp_interop_t bar();189struct S {190  omp_interop_t o;191};192void foo() {193  omp_interop_t o;194  struct S s;195 196  //expected-error@+1 {{expected variable of type 'omp_interop_t'}}197  #pragma omp interop init(target:o) init(target:bar())198 199  //expected-error@+1 {{expected variable of type 'omp_interop_t'}}200  #pragma omp interop init(target:o) init(target:s.o)201}202#endif203