(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
gomp/
nesting-1.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-fopenmp" } */
       3  
       4  void
       5  f1 (void)
       6  {
       7    int i, j;
       8    #pragma omp for
       9    for (i = 0; i < 3; i++)
      10      {
      11        #pragma omp for		/* { dg-error "may not be closely nested" } */
      12        for (j = 0; j < 3; j++)
      13  	;
      14        #pragma omp sections	/* { dg-error "may not be closely nested" } */
      15        {
      16  	;
      17        #pragma omp section
      18  	;
      19        }
      20        #pragma omp single	/* { dg-error "may not be closely nested" } */
      21  	;
      22        #pragma omp master	/* { dg-error "may not be closely nested" } */
      23  	;
      24        #pragma omp masked	/* { dg-error "may not be closely nested" } */
      25  	;
      26        #pragma omp barrier	/* { dg-error "may not be closely nested" } */
      27        #pragma omp scope		/* { dg-error "may not be closely nested" } */
      28  	;
      29      }
      30    #pragma omp sections
      31    {
      32      #pragma omp for		/* { dg-error "may not be closely nested" } */
      33      for (j = 0; j < 3; j++)
      34        ;
      35    }
      36    #pragma omp sections
      37    {
      38      #pragma omp sections	/* { dg-error "may not be closely nested" } */
      39      {
      40        ;
      41      #pragma omp section
      42        ;
      43      }
      44    }
      45    #pragma omp sections
      46    {
      47      #pragma omp single		/* { dg-error "may not be closely nested" } */
      48        ;
      49    }
      50    #pragma omp sections
      51    {
      52      #pragma omp master		/* { dg-error "may not be closely nested" } */
      53        ;
      54    }
      55    #pragma omp sections
      56    {
      57      #pragma omp masked		/* { dg-error "may not be closely nested" } */
      58        ;
      59    }
      60    #pragma omp sections
      61    {
      62      #pragma omp scope		/* { dg-error "may not be closely nested" } */
      63        ;
      64    }
      65    #pragma omp sections
      66    {
      67      #pragma omp section
      68        ;
      69    }
      70    #pragma omp sections
      71    {
      72      #pragma omp section
      73      #pragma omp for		/* { dg-error "may not be closely nested" } */
      74      for (j = 0; j < 3; j++)
      75        ;
      76    }
      77    #pragma omp sections
      78    {
      79      #pragma omp section
      80      #pragma omp sections	/* { dg-error "may not be closely nested" } */
      81      {
      82        ;
      83      #pragma omp section
      84        ;
      85      }
      86    }
      87    #pragma omp sections
      88    {
      89      #pragma omp section
      90      #pragma omp single		/* { dg-error "may not be closely nested" } */
      91        ;
      92    }
      93    #pragma omp sections
      94    {
      95      #pragma omp section
      96      #pragma omp master		/* { dg-error "may not be closely nested" } */
      97        ;
      98      #pragma omp section
      99      #pragma omp masked		/* { dg-error "may not be closely nested" } */
     100        ;
     101    }
     102    #pragma omp sections
     103    {
     104      #pragma omp section
     105      #pragma omp scope		/* { dg-error "may not be closely nested" } */
     106        ;
     107    }
     108    #pragma omp single
     109    {
     110      #pragma omp for		/* { dg-error "may not be closely nested" } */
     111      for (j = 0; j < 3; j++)
     112        ;
     113      #pragma omp sections	/* { dg-error "may not be closely nested" } */
     114      {
     115        ;
     116      #pragma omp section
     117        ;
     118      }
     119      #pragma omp single		/* { dg-error "may not be closely nested" } */
     120        ;
     121      #pragma omp master		/* { dg-error "may not be closely nested" } */
     122        ;
     123      #pragma omp masked		/* { dg-error "may not be closely nested" } */
     124        ;
     125      #pragma omp barrier		/* { dg-error "may not be closely nested" } */
     126      #pragma omp scope		/* { dg-error "may not be closely nested" } */
     127        ;
     128    }
     129    #pragma omp master
     130    {
     131      #pragma omp for		/* { dg-error "may not be closely nested" } */
     132      for (j = 0; j < 3; j++)
     133        ;
     134      #pragma omp sections	/* { dg-error "may not be closely nested" } */
     135      {
     136        ;
     137      #pragma omp section
     138        ;
     139      }
     140      #pragma omp single		/* { dg-error "may not be closely nested" } */
     141        ;
     142      #pragma omp master
     143        ;
     144      #pragma omp barrier		/* { dg-error "may not be closely nested" } */
     145      #pragma omp scope		/* { dg-error "may not be closely nested" } */
     146        ;
     147    }
     148    #pragma omp masked filter (1)
     149    {
     150      #pragma omp for		/* { dg-error "may not be closely nested" } */
     151      for (j = 0; j < 3; j++)
     152        ;
     153      #pragma omp sections	/* { dg-error "may not be closely nested" } */
     154      {
     155        ;
     156      #pragma omp section
     157        ;
     158      }
     159      #pragma omp single		/* { dg-error "may not be closely nested" } */
     160        ;
     161      #pragma omp master
     162        ;
     163      #pragma omp barrier		/* { dg-error "may not be closely nested" } */
     164      #pragma omp scope		/* { dg-error "may not be closely nested" } */
     165        ;
     166    }
     167    #pragma omp task
     168    {
     169      #pragma omp for		/* { dg-error "may not be closely nested" } */
     170      for (j = 0; j < 3; j++)
     171        ;
     172      #pragma omp sections	/* { dg-error "may not be closely nested" } */
     173      {
     174        ;
     175      #pragma omp section
     176        ;
     177      }
     178      #pragma omp single		/* { dg-error "may not be closely nested" } */
     179        ;
     180      #pragma omp master		/* { dg-error "may not be closely nested" } */
     181        ;
     182      #pragma omp masked		/* { dg-error "may not be closely nested" } */
     183        ;
     184      #pragma omp barrier		/* { dg-error "may not be closely nested" } */
     185      #pragma omp scope		/* { dg-error "may not be closely nested" } */
     186        ;
     187    }
     188    #pragma omp parallel
     189    {
     190      #pragma omp for
     191      for (j = 0; j < 3; j++)
     192        ;
     193      #pragma omp sections
     194      {
     195        ;
     196      #pragma omp section
     197        ;
     198      }
     199      #pragma omp single
     200        ;
     201      #pragma omp master
     202        ;
     203      #pragma omp masked
     204        ;
     205      #pragma omp barrier
     206      #pragma omp scope
     207        ;
     208      #pragma omp scope
     209      {
     210        #pragma omp scope
     211        ;
     212      }
     213    }
     214    #pragma omp scope
     215    {
     216      #pragma omp for
     217      for (j = 0; j < 3; j++)
     218        ;
     219      #pragma omp sections
     220      {
     221        ;
     222      #pragma omp section
     223        ;
     224      }
     225      #pragma omp single
     226        ;
     227      #pragma omp master
     228        ;
     229      #pragma omp masked
     230        ;
     231      #pragma omp barrier
     232      #pragma omp scope
     233        ;
     234      #pragma omp scope
     235      {
     236        #pragma omp scope
     237        ;
     238      }
     239    }
     240  }
     241  
     242  void
     243  f2 (void)
     244  {
     245    int i, j;
     246    #pragma omp ordered
     247    {
     248      #pragma omp for		/* { dg-error "may not be closely nested" } */
     249      for (j = 0; j < 3; j++)
     250        ;
     251      #pragma omp sections	/* { dg-error "may not be closely nested" } */
     252      {
     253        ;
     254      #pragma omp section
     255        ;
     256      }
     257      #pragma omp single		/* { dg-error "may not be closely nested" } */
     258        ;
     259      #pragma omp master
     260        ;
     261      #pragma omp masked
     262        ;
     263      #pragma omp barrier		/* { dg-error "may not be closely nested" } */
     264      #pragma omp scope		/* { dg-error "may not be closely nested" } */
     265        ;
     266    }
     267  }
     268  
     269  void
     270  f3 (void)
     271  {
     272    #pragma omp critical
     273    {
     274      #pragma omp ordered		/* { dg-error "may not be closely nested" } */
     275        ;
     276      #pragma omp scope		/* { dg-error "may not be closely nested" } */
     277        ;
     278    }
     279  }
     280  
     281  void
     282  f4 (void)
     283  {
     284    #pragma omp task
     285    {
     286      #pragma omp ordered		/* { dg-error "may not be closely nested" } */
     287        ;
     288      #pragma omp scope		/* { dg-error "may not be closely nested" } */
     289        ;
     290    }
     291  }
     292  
     293  void
     294  f5 (void)
     295  {
     296    int i;
     297    #pragma omp for
     298    for (i = 0; i < 10; i++)
     299      {
     300        #pragma omp ordered		/* { dg-error "must be closely nested" } */
     301  	;
     302      }
     303    #pragma omp for ordered
     304    for (i = 0; i < 10; i++)
     305      {
     306        #pragma omp ordered
     307  	;
     308      }
     309  }
     310  
     311  void
     312  f6 (void)
     313  {
     314    #pragma omp critical (foo)
     315      #pragma omp critical (bar)
     316        ;
     317    #pragma omp critical
     318      #pragma omp critical (baz)
     319        ;
     320  }
     321  
     322  void
     323  f7 (void)
     324  {
     325    #pragma omp critical (foo2)
     326      #pragma omp critical
     327        ;
     328    #pragma omp critical (bar)
     329      #pragma omp critical (bar)		/* { dg-error "may not be nested" } */
     330        ;
     331    #pragma omp critical
     332      #pragma omp critical		/* { dg-error "may not be nested" } */
     333        ;
     334  }