C99 testsuite readiness: Compile more tests with -std=gnu89
[official-gcc.git] / gcc / testsuite / g++.dg / gomp / for-21.C
blobf5a7bf7df4d8dddca013f9fbe792fd60d748dccc
1 // { dg-do compile { target c++17 } }
3 void
4 f1 (int a[10][10])
6   #pragma omp for collapse (2)
7   for (int i = 0; i < 10; ++i)
8     for (auto j : a[i])         // { dg-error "initializer expression refers to iteration variable 'i'" }
9       ;
12 void
13 f2 (int (&a)[10])
15   #pragma omp for collapse (2)
16   for (auto i : a)
17     for (int j = i * 2; j < i * 4; j++)         // { dg-error "initializer expression refers to iteration variable 'i'" }
18       ;
21 struct S { int a, b, c; };
23 void
24 f3 (S (&a)[10])
26   #pragma omp for collapse (2)
27   for (auto [i, j, k] : a)                      // { dg-error "initializer expression refers to iteration variable 'i'" }
28     for (int l = i; l < j; l += k)              // { dg-error "condition expression refers to iteration variable 'j'" }
29       ;                                         // { dg-error "increment expression refers to iteration variable 'k'" "" { target *-*-* } .-2 }
32 template <int N>
33 void
34 f4 (int a[10][10])
36   #pragma omp for collapse (2)
37   for (int i = 0; i < 10; ++i)
38     for (auto j : a[i])         // { dg-error "initializer expression refers to iteration variable 'i'" }
39       ;
42 template <int N>
43 void
44 f5 (int (&a)[10])
46   #pragma omp for collapse (2)
47   for (auto i : a)
48     for (int j = i * 2; j < i * 4; j++)         // { dg-error "initializer expression refers to iteration variable 'i'" }
49       ;
52 template <int N>
53 void
54 f6 (S (&a)[10])
56   #pragma omp for collapse (2)
57   for (auto [i, j, k] : a)                      // { dg-error "initializer expression refers to iteration variable 'i'" "" { target *-*-* } .-1 }
58     for (int l = i; l < j; l += k)              // { dg-error "condition expression refers to iteration variable 'j'" }
59       ;                                         // { dg-error "increment expression refers to iteration variable 'k'" "" { target *-*-* } .-3 }
62 template <typename T>
63 void
64 f7 (T a[10][10])
66   #pragma omp for collapse (2)
67   for (T i = 0; i < 10; ++i)
68     for (auto j : a[i])         // { dg-error "initializer expression refers to iteration variable 'i'" }
69       ;
72 template <typename T>
73 void
74 f8 (T (&a)[10])
76   #pragma omp for collapse (2)
77   for (auto i : a)
78     for (T j = i * 2; j < i * 4; j++)           // { dg-error "initializer expression refers to iteration variable 'i'" }
79       ;
82 template <typename T, typename U>
83 void
84 f9 (U (&a)[10])
86   #pragma omp for collapse (2)
87   for (auto [i, j, k] : a)                      // { dg-error "initializer expression refers to iteration variable 'i'" "" { target *-*-* } .-1 }
88     for (T l = i; l < j; l += k)                // { dg-error "condition expression refers to iteration variable 'j'" }
89       ;                                         // { dg-error "increment expression refers to iteration variable 'k'" "" { target *-*-* } .-3 }
92 void
93 test ()
95   int a[10][10] {};
96   int b[10] {};
97   S c[10] {};
98   f4 <0> (a);
99   f5 <0> (b);
100   f6 <0> (c);
101   f7 (a);
102   f8 (b);
103   f9 <int, S> (c);