1 // { dg-require-effective-target size32plus }
3 extern "C" void abort ();
4 int r, a[1024], b[1024], q;
6 template <typename T, typename U>
7 __attribute__((noipa)) void
10 #pragma omp for reduction (inscan, +:r)
11 for (int i = 0; i < 1024; i++)
14 #pragma omp scan exclusive(r)
20 __attribute__((noipa)) T
26 #pragma omp for reduction (inscan, +:s)
27 for (int i = 0; i < 1024; i++)
30 #pragma omp scan exclusive(s)
37 __attribute__((noipa)) void
38 baz (T *a, T *b, T &r)
40 #pragma omp parallel for reduction (inscan, +:r)
41 for (T i = 0; i < 1024; i++)
44 #pragma omp scan exclusive(r)
50 __attribute__((noipa)) int
55 #pragma omp parallel for reduction (inscan, +:s)
56 for (int i = 0; i < 1024; i++)
59 #pragma omp scan exclusive(s)
69 for (int i = 0; i < 1024; ++i)
76 foo<int *, int &> (a, b, r);
77 if (r != 1024 * 1023 / 2)
79 for (int i = 0; i < 1024; ++i)
87 if (bar<int> () != 1024 * 1023)
90 for (int i = 0; i < 1024; ++i)
100 if (r != 1024 * 1023 / 2)
103 for (int i = 0; i < 1024; ++i)
111 if (qux<int &> () != 1024 * 1023)
114 for (int i = 0; i < 1024; ++i)