testsuite/libgomp.c++/pr48869.C

Go to the documentation of this file.
00001 // PR c++/48869
00002 // { dg-do run }
00003 // { dg-options "-std=gnu++0x" }
00004 
00005 template <const int N>
00006 struct A
00007 {
00008   A () {}
00009   A (const A&) = delete;
00010   void foo () {}
00011   ~A () {}
00012 };
00013 
00014 template <const int N>
00015 struct B
00016 {
00017   B () {}
00018   B (const B&) {}
00019   void foo () {}
00020   ~B () {}
00021 };
00022 
00023 void __attribute__((used))
00024 foo (B<6> b6)
00025 {
00026   #pragma omp task
00027     b6.foo ();
00028 }
00029 
00030 int
00031 main ()
00032 {
00033   A<0> a0;
00034   #pragma omp task shared(a0)
00035     a0.foo ();
00036   #pragma omp task default(shared)
00037     a0.foo ();
00038   #pragma omp parallel shared(a0)
00039     #pragma omp task
00040       a0.foo ();
00041   #pragma omp task
00042   {
00043     A<1> a1;
00044     a1.foo ();
00045   }
00046   B<0> b0;
00047   #pragma omp task shared(b0)
00048     b0.foo ();
00049   B<1> b1;
00050   #pragma omp task default(shared)
00051     b1.foo ();
00052   B<2> b2;
00053   #pragma omp parallel shared(b2)
00054     #pragma omp task
00055       b2.foo ();
00056   B<3> b3;
00057   #pragma omp task
00058     b3.foo ();
00059   B<4> b4;
00060   #pragma omp parallel private (b4)
00061     #pragma omp task
00062       b4.foo ();
00063   B<5> b5;
00064   #pragma omp parallel firstprivate (b5)
00065     #pragma omp task
00066       b5.foo ();
00067   return 0;
00068 }

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