145
|
1 typedef __PTRDIFF_TYPE__ ptrdiff_t;
|
|
2
|
|
3 template <typename T>
|
|
4 class I
|
|
5 {
|
|
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;
|
|
39 };
|
|
40
|
|
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> &);
|
|
56
|
|
57 ptrdiff_t foo (I<int> &);
|
|
58 I<int> &bar (I<int> &);
|
|
59 I<int> &baz (I<int> *);
|
|
60
|
|
61 void
|
|
62 f0 ()
|
|
63 {
|
|
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 ;
|
|
107 }
|
|
108
|
|
109 void
|
|
110 f1 (I<int> &x, I<int> &y, I<int> &u, I<int> &v)
|
|
111 {
|
|
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 ;
|
|
227 }
|