testsuite/libgomp.c/pr35130.c

Go to the documentation of this file.
00001 /* PR middle-end/35130 */
00002 
00003 extern void abort (void);
00004 
00005 void
00006 f1 (void)
00007 {
00008   int a[4], k;
00009   void nested (int x)
00010   {
00011     a[x] = 42;
00012   }
00013 
00014   for (k = 0; k < 4; k++)
00015     a[k] = 0;
00016 #pragma omp parallel for
00017   for (k = 0; k < 4; k++)
00018     nested (k);
00019 
00020   if (a[0] != 42 || a[1] != 42 || a[2] != 42 || a[3] != 42)
00021     abort ();
00022 }
00023 
00024 void
00025 f2 (void)
00026 {
00027   int a[4], k;
00028   void nested (void)
00029   {
00030     int l;
00031     void nested2 (int x)
00032     {
00033       a[x] = 42;
00034     }
00035 #pragma omp parallel for
00036     for (l = 0; l < 4; l++)
00037       nested2 (l);
00038   }
00039 
00040   for (k = 0; k < 4; k++)
00041     a[k] = 0;
00042 
00043   nested ();
00044 
00045   if (a[0] != 42 || a[1] != 42 || a[2] != 42 || a[3] != 42)
00046     abort ();
00047 }
00048 
00049 void
00050 f3 (void)
00051 {
00052   int a[4], b[4], c[4], k;
00053   void nested (int x)
00054   {
00055     a[x] = b[x] = c[x] = 42;
00056   }
00057 
00058   for (k = 0; k < 4; k++)
00059     a[k] = b[k] = c[k] = 0;
00060   nested (0);
00061 
00062 #pragma omp parallel
00063   {
00064   #pragma omp single
00065     {
00066       a[1] = 43;
00067       b[1] = 43;
00068     }
00069   #pragma omp parallel
00070     {
00071     #pragma omp single
00072       {
00073     b[2] = 44;
00074     c[2] = 44;
00075       }
00076     }
00077   }
00078 
00079   if (a[0] != 42 || a[1] != 43 || a[2] != 0 || a[3] != 0)
00080     abort ();
00081   if (b[0] != 42 || b[1] != 43 || b[2] != 44 || b[3] != 0)
00082     abort ();
00083   if (c[0] != 42 || c[1] != 0 || c[2] != 44 || c[3] != 0)
00084     abort ();
00085 }
00086 
00087 void
00088 f4 (void)
00089 {
00090   int a[4], b[4], c[4], k;
00091   void nested ()
00092   {
00093   #pragma omp parallel
00094     {
00095     #pragma omp single
00096       {
00097     a[1] = 43;
00098     b[1] = 43;
00099       }
00100     #pragma omp parallel
00101       {
00102       #pragma omp single
00103     {
00104       b[2] = 44;
00105       c[2] = 44;
00106     }
00107       }
00108     }
00109   }
00110 
00111   for (k = 0; k < 4; k++)
00112     a[k] = b[k] = c[k] = k == 0 ? 42 : 0;
00113   nested ();
00114 
00115   if (a[0] != 42 || a[1] != 43 || a[2] != 0 || a[3] != 0)
00116     abort ();
00117   if (b[0] != 42 || b[1] != 43 || b[2] != 44 || b[3] != 0)
00118     abort ();
00119   if (c[0] != 42 || c[1] != 0 || c[2] != 44 || c[3] != 0)
00120     abort ();
00121 }
00122 
00123 int
00124 main (void)
00125 {
00126   f1 ();
00127   f2 ();
00128   f3 ();
00129   f4 ();
00130   return 0;
00131 }

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