C99 testsuite readiness: Compile more tests with -std=gnu89
[official-gcc.git] / gcc / testsuite / g++.dg / gomp / sink-2.C
blobd1681a77aadcf3495651b32b45fd273d7fba41de
1 /* { dg-do compile } */
3 /* Tests iterators are allowed in ordered loops and that we keep track
4    of the original iterator DECL for diagnostic purposes.  */
6 #include <iostream>
7 #include <vector>
9 /* Test plain iterator.  */
10 void foo1 ()
12   std::vector<int> v;
13   for (int i=1; i<=5; i++) v.push_back(i);
15   std::vector<int>::const_iterator it;
17 #pragma omp parallel for ordered(1)
18   for (it = v.begin(); it < v.end(); ++it)
19     {
20 #pragma omp ordered depend(sink:it-1)
21     std::cout << *it << '\n';
22 #pragma omp ordered depend(source)
23     }
26 /* Test non-dependent iterator in a template.  */
27 template <int N>
28 void foo2 ()
30   std::vector<int> v;
31   for (int i=1; i<=5; i++) v.push_back(i);
33   std::vector<int>::const_iterator it;
34 #pragma omp parallel for ordered(1)
35   for (it = v.begin(); it < v.end(); ++it)
36     {
37 #pragma omp ordered depend(sink:it-1)
38     std::cout << *it << '\n';
39 #pragma omp ordered depend(source)
40     }
43 /* Test dependent iterator in a template.  */
44 template <typename T>
45 void foo3 ()
47   std::vector<T> v;
48   for (int i=1; i<=5; i++) v.push_back(i);
50   typename std::vector<T>::const_iterator it;
51 #pragma omp parallel for ordered(1)
52   for (it = v.begin(); it < v.end(); ++it)
53     {
54 #pragma omp ordered depend(sink:it-1)
55     std::cout << *it << '\n';
56 #pragma omp ordered depend(source)
57     }
58 }  
60 int main ()
62   foo2 <0> ();
63   foo3 <int> ();