C99 testsuite readiness: Compile more tests with -std=gnu89
[official-gcc.git] / gcc / testsuite / g++.dg / gomp / loop-4.C
blobc45d43efe8af8329c29fb5d4872281d2c218f837
1 typedef __PTRDIFF_TYPE__ ptrdiff_t;
3 template <typename T>
4 class I
6 public:
7   typedef ptrdiff_t difference_type;
8   I ();
9   ~I ();
10   I (T *);
11   I (const I &);
12   T &operator * ();
13   T *operator -> ();
14   T &operator [] (const difference_type &) const;
15   I &operator = (const I &);
16   I &operator ++ ();
17   I operator ++ (int);
18   I &operator -- ();
19   I operator -- (int);
20   I &operator += (const difference_type &);
21   I &operator -= (const difference_type &);
22   I operator + (const difference_type &) const;
23   I operator - (const difference_type &) const;
24   template <typename S> friend bool operator == (I<S> &, I<S> &);
25   template <typename S> friend bool operator == (const I<S> &, const I<S> &);
26   template <typename S> friend bool operator < (I<S> &, I<S> &);
27   template <typename S> friend bool operator < (const I<S> &, const I<S> &);
28   template <typename S> friend bool operator <= (I<S> &, I<S> &);
29   template <typename S> friend bool operator <= (const I<S> &, const I<S> &);
30   template <typename S> friend bool operator > (I<S> &, I<S> &);
31   template <typename S> friend bool operator > (const I<S> &, const I<S> &);
32   template <typename S> friend bool operator >= (I<S> &, I<S> &);
33   template <typename S> friend bool operator >= (const I<S> &, const I<S> &);
34   template <typename S> friend typename I<S>::difference_type operator - (I<S> &, I<S> &);
35   template <typename S> friend typename I<S>::difference_type operator - (const I<S> &, const I<S> &);
36   template <typename S> friend I<S> operator + (typename I<S>::difference_type , const I<S> &);
37 private:
38   T *p;
41 template <typename T> bool operator == (I<T> &, I<T> &);
42 template <typename T> bool operator == (const I<T> &, const I<T> &);
43 template <typename T> bool operator != (I<T> &, I<T> &);
44 template <typename T> bool operator != (const I<T> &, const I<T> &);
45 template <typename T> bool operator < (I<T> &, I<T> &);
46 template <typename T> bool operator < (const I<T> &, const I<T> &);
47 template <typename T> bool operator <= (I<T> &, I<T> &);
48 template <typename T> bool operator <= (const I<T> &, const I<T> &);
49 template <typename T> bool operator > (I<T> &, I<T> &);
50 template <typename T> bool operator > (const I<T> &, const I<T> &);
51 template <typename T> bool operator >= (I<T> &, I<T> &);
52 template <typename T> bool operator >= (const I<T> &, const I<T> &);
53 template <typename T> typename I<T>::difference_type operator - (I<T> &, I<T> &);
54 template <typename T> typename I<T>::difference_type operator - (const I<T> &, const I<T> &);
55 template <typename T> I<T> operator + (typename I<T>::difference_type, const I<T> &);
57 ptrdiff_t foo (I<int> &);
58 I<int> &bar (I<int> &);
59 I<int> &baz (I<int> *);
61 void
62 f0 ()
64   int i;
65   const int j = 1;
66   const int k = -1;
67   const int m = 2;
68   const int n = -7;
69   int o = 1;
70   int p = -1;
71   #pragma omp for
72   for (i = 0; i != 64; i += j)
73     ;
74   #pragma omp for
75   for (i = 64; i != 0; i -= j)
76     ;
77   #pragma omp for
78   for (i = 0; i != 64; i -= k)
79     ;
80   #pragma omp for
81   for (i = 64; i != 0; i += k)
82     ;
83   #pragma omp for
84   for (i = 0; i != 64; i += m)  // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
85     ;
86   #pragma omp for
87   for (i = 64; i != 0; i -= m)  // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
88     ;
89   #pragma omp for
90   for (i = 0; i != 64; i -= n)  // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
91     ;
92   #pragma omp for
93   for (i = 64; i != 0; i += n)  // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
94     ;
95   #pragma omp for
96   for (i = 0; i != 64; i += o)  // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
97     ;
98   #pragma omp for
99   for (i = 64; i != 0; i -= o)  // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
100     ;
101   #pragma omp for
102   for (i = 0; i != 64; i -= p)  // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
103     ;
104   #pragma omp for
105   for (i = 64; i != 0; i += p)  // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
106     ;
109 void
110 f1 (I<int> &x, I<int> &y, I<int> &u, I<int> &v)
112   I<int> i, j;
113   const int k = 1;
114   const int l = -1;
115   const int m = 2;
116   const int n = -7;
117   int o = 1;
118   int p = -1;
119   #pragma omp for
120   for (i = x; i != y; i++)
121     ;
122   #pragma omp for
123   for (i = x; y != i; ++i)
124     ;
125   #pragma omp for
126   for (i = x; i != y; i = i + 1)
127     ;
128   #pragma omp for
129   for (i = x; i != y; i = 1 + i)
130     ;
131   #pragma omp for
132   for (i = y; i != x; i--)
133     ;
134   #pragma omp for
135   for (i = y; x != i; --i)
136     ;
137   #pragma omp for
138   for (i = y; i != x; i = i - 1)
139     ;
140   #pragma omp for
141   for (i = y; i != x; i = -1 + i)
142     ;
143   #pragma omp for
144   for (i = x; i != y; i = i + k)
145     ;
146   #pragma omp for
147   for (i = x; i != y; i = k + i)
148     ;
149   #pragma omp for
150   for (i = y; i != x; i = i - k)
151     ;
152   #pragma omp for
153   for (i = y; i != x; i = -k + i)
154     ;
155   #pragma omp for
156   for (i = x; i != y; i = i - l)
157     ;
158   #pragma omp for
159   for (i = x; i != y; i = -l + i)
160     ;
161   #pragma omp for
162   for (i = y; i != x; i = i + l)
163     ;
164   #pragma omp for
165   for (i = y; i != x; i = l + i)
166     ;
167   #pragma omp for
168   for (i = x; i != y; i = i + 2)        // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
169     ;
170   #pragma omp for
171   for (i = x; i != y; i = 7 + i)        // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
172     ;
173   #pragma omp for
174   for (i = y; i != x; i = i - 2)        // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
175     ;
176   #pragma omp for
177   for (i = y; i != x; i = -7 + i)       // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
178     ;
179   #pragma omp for
180   for (i = x; i != y; i = i + m)        // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
181     ;
182   #pragma omp for
183   for (i = x; i != y; i = m + i)        // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
184     ;
185   #pragma omp for
186   for (i = y; i != x; i = i - m)        // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
187     ;
188   #pragma omp for
189   for (i = y; i != x; i = -m + i)       // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
190     ;
191   #pragma omp for
192   for (i = x; i != y; i = i - n)        // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
193     ;
194   #pragma omp for
195   for (i = x; i != y; i = -n + i)       // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
196     ;
197   #pragma omp for
198   for (i = y; i != x; i = i + n)        // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
199     ;
200   #pragma omp for
201   for (i = y; i != x; i = n + i)        // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
202     ;
203   #pragma omp for
204   for (i = x; i != y; i = i + o)        // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
205     ;
206   #pragma omp for
207   for (i = x; i != y; i = o + i)        // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
208     ;
209   #pragma omp for
210   for (i = y; i != x; i = i - o)        // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
211     ;
212   #pragma omp for
213   for (i = y; i != x; i = -o + i)       // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
214     ;
215   #pragma omp for
216   for (i = x; i != y; i = i - p)        // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
217     ;
218   #pragma omp for
219   for (i = x; i != y; i = -p + i)       // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
220     ;
221   #pragma omp for
222   for (i = y; i != x; i = i + p)        // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
223     ;
224   #pragma omp for
225   for (i = y; i != x; i = p + i)        // { dg-error "increment is not constant 1 or -1 for '!=' condition" }
226     ;