(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
gomp/
lastprivate-conditional-1.c
       1  void
       2  foo (int *p)
       3  {
       4    int a = -1, b = -1, c = -1, d = -1, e = -1, f = -1, g = -1, h = -1;
       5    int i;
       6    #pragma omp teams
       7    {
       8      #pragma omp distribute lastprivate (conditional: a) /* { dg-error "conditional 'lastprivate' clause on 'distribute' construct" } */
       9      for (i = 0; i < 32; i++)
      10        if (p[i])
      11  	a = i;
      12      #pragma omp distribute simd lastprivate (conditional: b) /* { dg-error "conditional 'lastprivate' clause on 'distribute' construct" } */
      13      for (i = 0; i < 32; i++)
      14        if (p[i])
      15  	b = i;
      16      #pragma omp distribute parallel for lastprivate (conditional: c) /* { dg-error "conditional 'lastprivate' clause on 'distribute' construct" } */
      17      for (i = 0; i < 32; i++)
      18        if (p[i])
      19  	c = i;
      20      #pragma omp distribute parallel for simd lastprivate (conditional: d) /* { dg-error "conditional 'lastprivate' clause on 'distribute' construct" } */
      21      for (i = 0; i < 32; i++)
      22        if (p[i])
      23  	d = i;
      24    }
      25    #pragma omp teams distribute parallel for lastprivate (conditional: e) /* { dg-error "conditional 'lastprivate' clause on 'distribute' construct" } */
      26    for (i = 0; i < 32; i++)
      27      if (p[i])
      28        e = i;
      29    #pragma omp parallel
      30    {
      31      #pragma omp master
      32      #pragma omp taskloop lastprivate (conditional: f) /* { dg-error "conditional 'lastprivate' clause on 'taskloop' construct" } */
      33      for (i = 0; i < 32; i++)
      34        if (p[i])
      35  	f = i;
      36      #pragma omp master taskloop simd lastprivate (conditional: g) /* { dg-error "conditional 'lastprivate' clause on 'taskloop' construct" } */
      37      for (i = 0; i < 32; i++)
      38        if (p[i])
      39  	g = i;
      40    }
      41    #pragma omp parallel master taskloop simd lastprivate (conditional: h) /* { dg-error "conditional 'lastprivate' clause on 'taskloop' construct" } */
      42    for (i = 0; i < 32; i++)
      43      if (p[i])
      44        h = i;
      45  }
      46  
      47  struct S { int a, b; };
      48  
      49  void
      50  bar (int *p)
      51  {
      52    struct S s = { -1, -1 }, t = { 1, 2 };
      53    int i;
      54    #pragma omp parallel for lastprivate (conditional: s) /* { dg-error "non-scalar variable 's' in conditional 'lastprivate' clause" } */
      55    for (i = 0; i < 32; i++)
      56      if (p[i])
      57        {
      58  	struct S u = t;
      59  	u.b = i;
      60  	s = u;
      61        }
      62  }
      63  
      64  /* { dg-prune-output "not supported yet" } */