"Fossies" - the Fresh Open Source Software Archive

Member "cfe-9.0.0.src/test/OpenMP/distribute_firstprivate_messages.cpp" (8 Jul 2019, 6683 Bytes) of package /linux/misc/cfe-9.0.0.src.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "distribute_firstprivate_messages.cpp": 8.0.1_vs_9.0.0.

    1 // RUN: %clang_cc1 -verify -fopenmp %s -Wuninitialized
    2 
    3 // RUN: %clang_cc1 -verify -fopenmp-simd %s -Wuninitialized
    4 
    5 void foo() {
    6 }
    7 
    8 bool foobool(int argc) {
    9   return argc;
   10 }
   11 
   12 struct S1; // expected-note {{declared here}} expected-note{{forward declaration of 'S1'}}
   13 extern S1 a;
   14 class S2 {
   15   mutable int a;
   16 
   17 public:
   18   S2() : a(0) {}
   19   S2(const S2 &s2) : a(s2.a) {}
   20   static float S2s;
   21   static const float S2sc;
   22 };
   23 const float S2::S2sc = 0;
   24 const S2 b;
   25 const S2 ba[5];
   26 class S3 {
   27   int a;
   28   S3 &operator=(const S3 &s3);
   29 
   30 public:
   31   S3() : a(0) {} // expected-note {{candidate constructor not viable: requires 0 arguments, but 1 was provided}}
   32   S3(S3 &s3) : a(s3.a) {} // expected-note {{candidate constructor not viable: 1st argument ('const S3') would lose const qualifier}}
   33 };
   34 const S3 c;
   35 const S3 ca[5];
   36 extern const int f;
   37 class S4 {
   38   int a;
   39   S4();
   40   S4(const S4 &s4);
   41 public:
   42   S4(int v):a(v) { }
   43 };
   44 class S5 {
   45   int a;
   46   S5():a(0) {}
   47   S5(const S5 &s5):a(s5.a) { }
   48 public:
   49   S5(int v):a(v) { }
   50 };
   51 class S6 {
   52   int a;
   53 public:
   54   S6() : a(0) { }
   55 };
   56 
   57 extern int omp_default_mem_alloc;
   58 
   59 S3 h;
   60 #pragma omp threadprivate(h) // expected-note {{defined as threadprivate or thread local}}
   61 
   62 int main(int argc, char **argv) {
   63   const int d = 5;
   64   const int da[5] = { 0 };
   65   S4 e(4);
   66   S5 g(5);
   67   S6 p;
   68   int i, z;
   69   int &j = i;
   70   #pragma omp distribute firstprivate // expected-error {{expected '(' after 'firstprivate'}}
   71   for (i = 0; i < argc; ++i) foo();
   72   #pragma omp distribute firstprivate ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
   73   for (i = 0; i < argc; ++i) foo();
   74   #pragma omp distribute firstprivate () // expected-error {{expected expression}}
   75   for (i = 0; i < argc; ++i) foo();
   76   #pragma omp target
   77   #pragma omp teams
   78   #pragma omp distribute firstprivate (argc // expected-error {{expected ')'}} expected-note {{to match this '('}}
   79   for (i = 0; i < argc; ++i) foo();
   80   #pragma omp target
   81   #pragma omp teams
   82   #pragma omp distribute firstprivate (argc, // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
   83   for (i = 0; i < argc; ++i) foo();
   84   #pragma omp target
   85   #pragma omp teams
   86   #pragma omp distribute firstprivate (argc > 0 ? argv[1] : argv[2]) // expected-error {{expected variable name}}
   87   for (i = 0; i < argc; ++i) foo();
   88   #pragma omp target
   89   #pragma omp teams
   90   #pragma omp distribute firstprivate (argc) allocate , allocate(, allocate(omp_default , allocate(omp_default_mem_alloc, allocate(omp_default_mem_alloc:, allocate(omp_default_mem_alloc: argc, allocate(omp_default_mem_alloc: argv), allocate(argv) // expected-error {{expected '(' after 'allocate'}} expected-error 2 {{expected expression}} expected-error 2 {{expected ')'}} expected-error {{use of undeclared identifier 'omp_default'}} expected-note 2 {{to match this '('}}
   91   for (i = 0; i < argc; ++i) foo();
   92   #pragma omp target
   93   #pragma omp teams
   94   #pragma omp distribute firstprivate (S1) // expected-error {{'S1' does not refer to a value}}
   95   for (i = 0; i < argc; ++i) foo();
   96   #pragma omp target
   97   #pragma omp teams
   98   #pragma omp distribute firstprivate (a, b, c, d, f) // expected-error {{firstprivate variable with incomplete type 'S1'}} expected-warning {{Non-trivial type 'const S2' is mapped, only trivial types are guaranteed to be mapped correctly}} expected-warning {{Non-trivial type 'const S3' is mapped, only trivial types are guaranteed to be mapped correctly}} expected-error {{incomplete type 'S1' where a complete type is required}}
   99   for (i = 0; i < argc; ++i) foo();
  100   #pragma omp target
  101   #pragma omp teams
  102   #pragma omp distribute firstprivate (argv[1]) // expected-error {{expected variable name}}
  103   for (i = 0; i < argc; ++i) foo();
  104   #pragma omp target
  105   #pragma omp teams
  106   #pragma omp distribute firstprivate(ba) // expected-warning {{Non-trivial type 'const S2 [5]' is mapped, only trivial types are guaranteed to be mapped correctly}}
  107   for (i = 0; i < argc; ++i) foo();
  108   #pragma omp target
  109   #pragma omp teams
  110   #pragma omp distribute firstprivate(ca) // expected-error {{no matching constructor for initialization of 'S3'}} expected-warning {{Non-trivial type 'const S3 [5]' is mapped, only trivial types are guaranteed to be mapped correctly}}
  111   for (i = 0; i < argc; ++i) foo();
  112   #pragma omp target
  113   #pragma omp teams
  114   #pragma omp distribute firstprivate(da, z)
  115   for (i = 0; i < argc; ++i) foo();
  116   #pragma omp target
  117   #pragma omp teams
  118   #pragma omp distribute firstprivate(S2::S2s)
  119   for (i = 0; i < argc; ++i) foo();
  120   #pragma omp target
  121   #pragma omp teams
  122   #pragma omp distribute firstprivate(S2::S2sc)
  123   for (i = 0; i < argc; ++i) foo();
  124   #pragma omp target
  125   #pragma omp teams
  126   #pragma omp distribute firstprivate(h) // expected-error {{threadprivate or thread local variable cannot be firstprivate}}
  127   for (i = 0; i < argc; ++i) foo();
  128   #pragma omp target
  129   #pragma omp teams
  130   #pragma omp distribute private(i), firstprivate(i) // expected-error {{private variable cannot be firstprivate}} expected-note{{defined as private}}
  131   for (i = 0; i < argc; ++i) foo();
  132   #pragma omp target
  133   #pragma omp teams shared(i)
  134   #pragma omp distribute firstprivate(i)
  135   for (j = 0; j < argc; ++j) foo();
  136   #pragma omp target
  137   #pragma omp teams shared(i)
  138   #pragma omp distribute firstprivate(i) // expected-note {{defined as firstprivate}}
  139   for (i = 0; i < argc; ++i) foo(); // expected-error {{loop iteration variable in the associated loop of 'omp distribute' directive may not be firstprivate, predetermined as private}}
  140   #pragma omp target
  141   #pragma omp teams private(argc) // expected-note {{defined as private}}
  142   #pragma omp distribute firstprivate(argc) // expected-error {{firstprivate variable must be shared}}
  143   for (i = 0; i < argc; ++i) foo();
  144   #pragma omp target
  145   #pragma omp teams reduction(+:argc) // expected-note {{defined as reduction}}
  146   #pragma omp distribute firstprivate(argc) // expected-error {{firstprivate variable must be shared}}
  147   for (i = 0; i < argc; ++i) foo();
  148   #pragma omp target
  149   #pragma omp teams
  150   #pragma omp distribute firstprivate(j)
  151   for (i = 0; i < argc; ++i) foo();
  152   #pragma omp target
  153   #pragma omp teams
  154   #pragma omp distribute lastprivate(argc), firstprivate(argc) // expected-error {{lastprivate variable cannot be firstprivate}} expected-note{{defined as lastprivate}}
  155   for (i = 0; i < argc; ++i) foo();
  156   #pragma omp target
  157   #pragma omp teams
  158 #pragma omp distribute firstprivate(argc), lastprivate(argc)  // expected-error {{firstprivate variable cannot be lastprivate}} expected-note{{defined as firstprivate}}
  159   for (i = 0; i < argc; ++i) foo();
  160   return 0;
  161 }