testsuite/libgomp.c++/for-6.C

Go to the documentation of this file.
00001 // PR c++/38348
00002 // { dg-do run }
00003 
00004 extern "C" void abort ();
00005 int cnt;
00006 
00007 template <typename T>
00008 void
00009 f0 (T, int)
00010 {
00011   abort ();
00012 }
00013 
00014 template <>
00015 void
00016 f0<int> (int, int type)
00017 {
00018   if (type != 0)
00019     abort ();
00020 #pragma omp atomic
00021   cnt++;
00022 }
00023 
00024 template <>
00025 void
00026 f0<const char *> (const char *, int type)
00027 {
00028   if (type != 1)
00029     abort ();
00030 #pragma omp atomic
00031   cnt++;
00032 }
00033 
00034 template <typename T>
00035 void
00036 f1 ()
00037 {
00038 #pragma omp parallel for
00039   for (int i = 0; i < 10; i++)
00040     f0 (i, 0);
00041 }
00042 
00043 template <typename T>
00044 void
00045 f2 ()
00046 {
00047 #pragma omp parallel for
00048   for (T i = T (0); i < T (10); i += T (1))
00049     f0 (i, 0);
00050 }
00051 
00052 void
00053 f3 ()
00054 {
00055 #pragma omp parallel for
00056   for (int i = 0; i < 10; i++)
00057     f0 (i, 0);
00058 }
00059 
00060 const char *p = "abcdefghij";
00061 
00062 template <typename T>
00063 void
00064 f4 ()
00065 {
00066 #pragma omp parallel for
00067   for (const char *i = p; i < p + 10; i += 1)
00068     f0 (i, 1);
00069 }
00070 
00071 template <typename T>
00072 void
00073 f5 ()
00074 {
00075 #pragma omp parallel for
00076   for (T i = T (p); i < T (p + 10); i += 1)
00077     f0 (i, 1);
00078 }
00079 
00080 void
00081 f6 ()
00082 {
00083 #pragma omp parallel for
00084   for (const char *i = p; i < p + 10; i++)
00085     f0 (i, 1);
00086 }
00087 
00088 int
00089 main ()
00090 {
00091   f1<int> ();
00092   if (cnt != 10)
00093     abort ();
00094   f2<int> ();
00095   if (cnt != 20)
00096     abort ();
00097   f3 ();
00098   if (cnt != 30)
00099     abort ();
00100   f4<int> ();
00101   if (cnt != 40)
00102     abort ();
00103   f5<const char *> ();
00104   if (cnt != 50)
00105     abort ();
00106   f6 ();
00107   if (cnt != 60)
00108     abort ();
00109 }

Generated on Fri Apr 5 05:38:10 2013 for Libgomp by  doxygen 1.4.7