brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.4 KiB · 1d8c906 Raw
291 lines · cpp
1// RUN: %clang_cc1 -std=c++11 -verify -fopenmp %s -Wuninitialized2 3// RUN: %clang_cc1 -std=c++11 -verify -fopenmp-simd %s -Wuninitialized4 5struct ST {6  int *a;7};8typedef int arr[10];9typedef ST STarr[10];10struct SA {11  const int d = 5;12  const int da[5] = { 0 };13  ST e;14  ST g[10];15  STarr &rg = g;16  int i;17  int &j = i;18  int *k = &j;19  int *&z = k;20  int aa[10];21  arr &raa = aa;22  void func(int arg) {23#pragma omp target simd is_device_ptr // expected-error {{expected '(' after 'is_device_ptr'}}24    for (int ii=0; ii<10; ii++)25      ;26#pragma omp target simd is_device_ptr( // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error {{expected expression}}27    for (int ii=0; ii<10; ii++)28      ;29#pragma omp target simd is_device_ptr() // expected-error {{expected expression}}30    for (int ii=0; ii<10; ii++)31      ;32#pragma omp target simd is_device_ptr(alloc) // expected-error {{use of undeclared identifier 'alloc'}}33    for (int ii=0; ii<10; ii++)34      ;35#pragma omp target simd is_device_ptr(arg // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}36    for (int ii=0; ii<10; ii++)37      ;38#pragma omp target simd is_device_ptr(i) // expected-error {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}39    for (int ii=0; ii<10; ii++)40      ;41#pragma omp target simd is_device_ptr(j) // expected-error {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}42    for (int ii=0; ii<10; ii++)43      ;44#pragma omp target simd is_device_ptr(k) // OK45    for (int ii=0; ii<10; ii++)46      ;47#pragma omp target simd is_device_ptr(z) // OK48    for (int ii=0; ii<10; ii++)49      ;50#pragma omp target simd is_device_ptr(aa) // OK51    for (int ii=0; ii<10; ii++)52      ;53#pragma omp target simd is_device_ptr(raa) // OK54    for (int ii=0; ii<10; ii++)55      ;   56#pragma omp target simd is_device_ptr(e) // expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}57    for (int ii=0; ii<10; ii++)58      ;59#pragma omp target simd is_device_ptr(g) // OK60    for (int ii=0; ii<10; ii++)61      ;62#pragma omp target simd is_device_ptr(rg) // OK63    for (int ii=0; ii<10; ii++)64      ;65#pragma omp target simd is_device_ptr(k,i,j) // expected-error2 {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}66    for (int ii=0; ii<10; ii++)67      ;68#pragma omp target simd is_device_ptr(d) // expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}69    for (int ii=0; ii<10; ii++)70      ;71#pragma omp target simd is_device_ptr(da) // OK72    for (int ii=0; ii<10; ii++)73      ;74  return;75 }76};77struct SB {78  unsigned A;79  unsigned B;80  float Arr[100];81  float *Ptr;82  float *foo() {83    return &Arr[0];84  }85};86 87struct SC {88  unsigned A : 2;89  unsigned B : 3;90  unsigned C;91  unsigned D;92  float Arr[100];93  SB S;94  SB ArrS[100];95  SB *PtrS;96  SB *&RPtrS;97  float *Ptr;98 99  SC(SB *&_RPtrS) : RPtrS(_RPtrS) {}100};101 102union SD {103  unsigned A;104  float B;105};106 107struct S1;108extern S1 a;109class S2 {110  mutable int a;111public:112  S2():a(0) { }113  S2(S2 &s2):a(s2.a) { }114  static float S2s;115  static const float S2sc;116};117const float S2::S2sc = 0;118const S2 b;119const S2 ba[5];120class S3 {121  int a;122public:123  S3():a(0) { }124  S3(S3 &s3):a(s3.a) { }125};126const S3 c;127const S3 ca[5];128extern const int f;129class S4 {130  int a;131  S4();132  S4(const S4 &s4);133public:134  S4(int v):a(v) { }135};136class S5 {137  int a;138  S5():a(0) {}139  S5(const S5 &s5):a(s5.a) { }140public:141  S5(int v):a(v) { }142};143 144S3 h;145#pragma omp threadprivate(h)146 147typedef struct {148  int a;149} S6;150 151template <typename T, int I>152T tmain(T argc) {153  const T d = 5;154  const T da[5] = { 0 };155  S4 e(4);156  S5 g(5);157  S6 h[10];158  auto &rh = h;159  T i;160  T &j = i;161  T *k = &j;162  T *&z = k;163  T aa[10];164  auto &raa = aa;165#pragma omp target simd is_device_ptr // expected-error {{expected '(' after 'is_device_ptr'}}166  for (int kk=0; kk<20; kk++)167    ;168#pragma omp target simd is_device_ptr( // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error {{expected expression}}169  for (int kk=0; kk<20; kk++)170    ;171#pragma omp target simd is_device_ptr() // expected-error {{expected expression}}172  for (int kk=0; kk<20; kk++)173    ;174#pragma omp target simd is_device_ptr(alloc) // expected-error {{use of undeclared identifier 'alloc'}}175  for (int kk=0; kk<20; kk++)176    ;177#pragma omp target simd is_device_ptr(argc // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}178  for (int kk=0; kk<20; kk++)179    ;180#pragma omp target simd is_device_ptr(i) // expected-error {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}181  for (int kk=0; kk<20; kk++)182    ;183#pragma omp target simd is_device_ptr(j) // expected-error {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}184  for (int kk=0; kk<20; kk++)185    ;186#pragma omp target simd is_device_ptr(k) // OK187  for (int kk=0; kk<20; kk++)188    ;189#pragma omp target simd is_device_ptr(z) // OK190  for (int kk=0; kk<20; kk++)191    ;192#pragma omp target simd is_device_ptr(aa) // OK193  for (int kk=0; kk<20; kk++)194    ;195#pragma omp target simd is_device_ptr(raa) // OK196  for (int kk=0; kk<20; kk++)197    ;198#pragma omp target simd is_device_ptr(e) // expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}199  for (int kk=0; kk<20; kk++)200    ;201#pragma omp target simd is_device_ptr(g) // expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}202  for (int kk=0; kk<20; kk++)203    ;204#pragma omp target simd is_device_ptr(h) // OK205  for (int kk=0; kk<20; kk++)206    ;207#pragma omp target simd is_device_ptr(rh) // OK208  for (int kk=0; kk<20; kk++)209    ;210#pragma omp target simd is_device_ptr(k,i,j) // expected-error2 {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}211  for (int kk=0; kk<20; kk++)212    ;213#pragma omp target simd is_device_ptr(d) // expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}214  for (int kk=0; kk<20; kk++)215    ;216#pragma omp target simd is_device_ptr(da) // OK217  for (int kk=0; kk<20; kk++)218    ;219  return 0;220}221 222int main(int argc, char **argv) {223  const int d = 5;224  const int da[5] = { 0 };225  S4 e(4);226  S5 g(5);227  S6 h[10];228  auto &rh = h;229  int i;230  int &j = i;231  int *k = &j;232  int *&z = k;233  int aa[10];234  auto &raa = aa;235#pragma omp target simd is_device_ptr // expected-error {{expected '(' after 'is_device_ptr'}}236  for (int kk=0; kk<20; kk++)237    ;238#pragma omp target simd is_device_ptr( // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error {{expected expression}}239  for (int kk=0; kk<20; kk++)240    ;241#pragma omp target simd is_device_ptr() // expected-error {{expected expression}}242  for (int kk=0; kk<20; kk++)243    ;244#pragma omp target simd is_device_ptr(alloc) // expected-error {{use of undeclared identifier 'alloc'}}245  for (int kk=0; kk<20; kk++)246    ;247#pragma omp target simd is_device_ptr(argc // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}248  for (int kk=0; kk<20; kk++)249    ;250#pragma omp target simd is_device_ptr(i) // expected-error {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}251  for (int kk=0; kk<20; kk++)252    ;253#pragma omp target simd is_device_ptr(j) // expected-error {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}254  for (int kk=0; kk<20; kk++)255    ;256#pragma omp target simd is_device_ptr(k) // OK257  for (int kk=0; kk<20; kk++)258    ;259#pragma omp target simd is_device_ptr(z) // OK260  for (int kk=0; kk<20; kk++)261    ;262#pragma omp target simd is_device_ptr(aa) // OK263  for (int kk=0; kk<20; kk++)264    ;265#pragma omp target simd is_device_ptr(raa) // OK266  for (int kk=0; kk<20; kk++)267    ;268#pragma omp target simd is_device_ptr(e) // expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}269  for (int kk=0; kk<20; kk++)270    ;271#pragma omp target simd is_device_ptr(g) // expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}272  for (int kk=0; kk<20; kk++)273    ;274#pragma omp target simd is_device_ptr(h) // OK275  for (int kk=0; kk<20; kk++)276    ;277#pragma omp target simd is_device_ptr(rh) // OK278  for (int kk=0; kk<20; kk++)279    ;280#pragma omp target simd is_device_ptr(k,i,j) // expected-error2 {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}281  for (int kk=0; kk<20; kk++)282    ;283#pragma omp target simd is_device_ptr(d) // expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}284  for (int kk=0; kk<20; kk++)285    ;286#pragma omp target simd is_device_ptr(da) // OK287  for (int kk=0; kk<20; kk++)288    ;289  return tmain<int, 3>(argc); // expected-note {{in instantiation of function template specialization 'tmain<int, 3>' requested here}}290}291