(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
goacc-gomp/
nesting-fail-1.c
       1  extern int i;
       2  #pragma acc declare create(i)
       3  
       4  void
       5  f_omp (void)
       6  {
       7  #pragma omp parallel
       8    {
       9  #pragma acc parallel /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      10      ;
      11  #pragma acc kernels /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      12      ;
      13  #pragma acc data /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      14      ;
      15  #pragma acc update host(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      16  #pragma acc enter data copyin(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      17  #pragma acc exit data delete(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      18  #pragma acc loop /* { dg-error "loop directive must be associated with an OpenACC compute region" } */
      19      for (i = 0; i < 2; ++i)
      20        ;
      21    }
      22  
      23  #pragma omp for
      24    for (i = 0; i < 3; i++)
      25      {
      26  #pragma acc parallel /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      27        ;
      28  #pragma acc kernels /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      29        ;
      30  #pragma acc data /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      31        ;
      32  #pragma acc update host(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      33  #pragma acc enter data copyin(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      34  #pragma acc exit data delete(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      35  #pragma acc loop /* { dg-error "loop directive must be associated with an OpenACC compute region" } */
      36        for (i = 0; i < 2; ++i)
      37  	;
      38      }
      39  
      40  #pragma omp sections
      41    {
      42      {
      43  #pragma acc parallel /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      44        ;
      45      }
      46  #pragma omp section
      47      {
      48  #pragma acc kernels /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      49        ;
      50      }
      51  #pragma omp section
      52      {
      53  #pragma acc data /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      54        ;
      55      }
      56  #pragma omp section
      57      {
      58  #pragma acc update host(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      59      }
      60  #pragma omp section
      61      {
      62  #pragma acc enter data copyin(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      63      }
      64  #pragma omp section
      65      {
      66  #pragma acc exit data delete(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      67      }
      68  #pragma omp section
      69      {
      70  #pragma acc loop /* { dg-error "loop directive must be associated with an OpenACC compute region" } */
      71        for (i = 0; i < 2; ++i)
      72  	;
      73      }
      74    }
      75  
      76  #pragma omp single
      77    {
      78  #pragma acc parallel /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      79      ;
      80  #pragma acc kernels /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      81      ;
      82  #pragma acc data /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      83      ;
      84  #pragma acc update host(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      85  #pragma acc enter data copyin(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      86  #pragma acc exit data delete(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      87  #pragma acc loop /* { dg-error "loop directive must be associated with an OpenACC compute region" } */
      88      for (i = 0; i < 2; ++i)
      89        ;
      90    }
      91  
      92  #pragma omp task
      93    {
      94  #pragma acc parallel /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      95      ;
      96  #pragma acc kernels /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      97      ;
      98  #pragma acc data /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
      99      ;
     100  #pragma acc update host(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
     101  #pragma acc enter data copyin(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
     102  #pragma acc exit data delete(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
     103  #pragma acc loop /* { dg-error "loop directive must be associated with an OpenACC compute region" } */
     104      for (i = 0; i < 2; ++i)
     105        ;
     106    }
     107  
     108  #pragma omp master
     109    {
     110  #pragma acc parallel /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
     111      ;
     112  #pragma acc kernels /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
     113      ;
     114  #pragma acc data /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
     115      ;
     116  #pragma acc update host(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
     117  #pragma acc enter data copyin(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
     118  #pragma acc exit data delete(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
     119  #pragma acc loop /* { dg-error "loop directive must be associated with an OpenACC compute region" } */
     120      for (i = 0; i < 2; ++i)
     121        ;
     122    }
     123  
     124  #pragma omp critical
     125    {
     126  #pragma acc parallel /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
     127      ;
     128  #pragma acc kernels /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
     129      ;
     130  #pragma acc data /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
     131      ;
     132  #pragma acc update host(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
     133  #pragma acc enter data copyin(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
     134  #pragma acc exit data delete(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
     135  #pragma acc loop /* { dg-error "loop directive must be associated with an OpenACC compute region" } */
     136      for (i = 0; i < 2; ++i)
     137        ;
     138    }
     139  
     140  #pragma omp ordered
     141    {
     142  #pragma acc parallel /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
     143      ;
     144  #pragma acc kernels /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
     145      ;
     146  #pragma acc data /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
     147      ;
     148  #pragma acc update host(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
     149  #pragma acc enter data copyin(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
     150  #pragma acc exit data delete(i) /* { dg-error "OpenACC construct inside of non-OpenACC region" } */
     151  #pragma acc loop /* { dg-error "loop directive must be associated with an OpenACC compute region" } */
     152      for (i = 0; i < 2; ++i)
     153        ;
     154    }
     155  
     156  #pragma omp target
     157    {
     158  #pragma acc parallel /* { dg-error "OpenACC .parallel. construct inside of OpenMP .target. region" } */
     159      ;
     160  #pragma acc kernels /* { dg-error "OpenACC .kernels. construct inside of OpenMP .target. region" } */
     161      ;
     162  #pragma acc data /* { dg-error "OpenACC .data. construct inside of OpenMP .target. region" } */
     163      ;
     164  #pragma acc update host(i) /* { dg-error "OpenACC .update. construct inside of OpenMP .target. region" } */
     165  #pragma acc enter data copyin(i) /* { dg-error "OpenACC .enter data. construct inside of OpenMP .target. region" } */
     166  #pragma acc exit data delete(i) /* { dg-error "OpenACC .exit data. construct inside of OpenMP .target. region" } */
     167  #pragma acc loop /* { dg-error "loop directive must be associated with an OpenACC compute region" } */
     168      for (i = 0; i < 2; ++i)
     169        ;
     170    }
     171  }
     172  
     173  void
     174  f_acc_parallel (void)
     175  {
     176  #pragma acc parallel
     177    {
     178  #pragma omp parallel /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     179      ;
     180    }
     181  
     182  #pragma acc parallel
     183    {
     184  #pragma omp for /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     185      for (i = 0; i < 3; i++)
     186        ;
     187    }
     188  
     189  #pragma acc parallel
     190    {
     191  #pragma omp sections /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     192      {
     193        ;
     194      }
     195    }
     196  
     197  #pragma acc parallel
     198    {
     199  #pragma omp single /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     200      ;
     201    }
     202  
     203  #pragma acc parallel
     204    {
     205  #pragma omp task /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     206      ;
     207    }
     208  
     209  #pragma acc parallel
     210    {
     211  #pragma omp master /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     212      ;
     213    }
     214  
     215  #pragma acc parallel
     216    {
     217  #pragma omp critical /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     218      ;
     219    }
     220  
     221  #pragma acc parallel
     222    {
     223  #pragma omp ordered /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     224      ;
     225    }
     226  
     227  #pragma acc parallel
     228    {
     229  #pragma omp target /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     230      ;
     231  #pragma omp target data map(i) /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     232      ;
     233  #pragma omp target update to(i) /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     234    }
     235  }
     236  
     237  void
     238  f_acc_kernels (void)
     239  {
     240  #pragma acc kernels
     241    {
     242  #pragma omp parallel /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     243      ;
     244    }
     245  
     246  #pragma acc kernels
     247    {
     248  #pragma omp for /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     249      for (i = 0; i < 3; i++)
     250        ;
     251    }
     252  
     253  #pragma acc kernels
     254    {
     255  #pragma omp sections /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     256      {
     257        ;
     258      }
     259    }
     260  
     261  #pragma acc kernels
     262    {
     263  #pragma omp single /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     264      ;
     265    }
     266  
     267  #pragma acc kernels
     268    {
     269  #pragma omp task /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     270      ;
     271    }
     272  
     273  #pragma acc kernels
     274    {
     275  #pragma omp master /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     276      ;
     277    }
     278  
     279  #pragma acc kernels
     280    {
     281  #pragma omp critical /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     282      ;
     283    }
     284  
     285  #pragma acc kernels
     286    {
     287  #pragma omp ordered /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     288      ;
     289    }
     290  
     291  #pragma acc kernels
     292    {
     293  #pragma omp target /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     294      ;
     295  #pragma omp target data map(i) /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     296      ;
     297  #pragma omp target update to(i) /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     298    }
     299  }
     300  
     301  void
     302  f_acc_data (void)
     303  {
     304  #pragma acc data
     305    {
     306  #pragma omp parallel /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     307      ;
     308    }
     309  
     310  #pragma acc data
     311    {
     312  #pragma omp for /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     313      for (i = 0; i < 3; i++)
     314        ;
     315    }
     316  
     317  #pragma acc data
     318    {
     319  #pragma omp sections /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     320      {
     321        ;
     322      }
     323    }
     324  
     325  #pragma acc data
     326    {
     327  #pragma omp single /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     328      ;
     329    }
     330  
     331  #pragma acc data
     332    {
     333  #pragma omp task /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     334      ;
     335    }
     336  
     337  #pragma acc data
     338    {
     339  #pragma omp master /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     340      ;
     341    }
     342  
     343  #pragma acc data
     344    {
     345  #pragma omp critical /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     346      ;
     347    }
     348  
     349  #pragma acc data
     350    {
     351  #pragma omp ordered /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     352      ;
     353    }
     354  
     355  #pragma acc data
     356    {
     357  #pragma omp target /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     358      ;
     359  #pragma omp target data map(i) /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     360      ;
     361  #pragma omp target update to(i) /* { dg-error "non-OpenACC construct inside of OpenACC region" } */
     362    }
     363  }
     364  
     365  #pragma acc routine
     366  void
     367  f_acc_loop (void)
     368  {
     369  #pragma acc loop
     370    for (i = 0; i < 2; ++i)
     371      {
     372  #pragma omp parallel /* { dg-error "non-OpenACC construct inside of OpenACC routine" } */
     373        ;
     374      }
     375  
     376  #pragma acc loop
     377    for (i = 0; i < 2; ++i)
     378      {
     379  #pragma omp for /* { dg-error "non-OpenACC construct inside of OpenACC routine" } */
     380        for (i = 0; i < 3; i++)
     381  	;
     382      }
     383  
     384  #pragma acc loop
     385    for (i = 0; i < 2; ++i)
     386      {
     387  #pragma omp sections /* { dg-error "non-OpenACC construct inside of OpenACC routine" } */
     388        {
     389  	;
     390        }
     391      }
     392  
     393  #pragma acc loop
     394    for (i = 0; i < 2; ++i)
     395      {
     396  #pragma omp single /* { dg-error "non-OpenACC construct inside of OpenACC routine" } */
     397        ;
     398      }
     399  
     400  #pragma acc loop
     401    for (i = 0; i < 2; ++i)
     402      {
     403  #pragma omp task /* { dg-error "non-OpenACC construct inside of OpenACC routine" } */
     404        ;
     405      }
     406  
     407  #pragma acc loop
     408    for (i = 0; i < 2; ++i)
     409      {
     410  #pragma omp master /* { dg-error "non-OpenACC construct inside of OpenACC routine" } */
     411        ;
     412      }
     413  
     414  #pragma acc loop
     415    for (i = 0; i < 2; ++i)
     416      {
     417  #pragma omp critical /* { dg-error "non-OpenACC construct inside of OpenACC routine" } */
     418        ;
     419      }
     420  
     421  #pragma acc loop
     422    for (i = 0; i < 2; ++i)
     423      {
     424  #pragma omp ordered /* { dg-error "non-OpenACC construct inside of OpenACC routine" } */
     425        ;
     426      }
     427  
     428  #pragma acc loop
     429    for (i = 0; i < 2; ++i)
     430      {
     431  #pragma omp target /* { dg-error "non-OpenACC construct inside of OpenACC routine" } */
     432        ;
     433  #pragma omp target data map(i) /* { dg-error "non-OpenACC construct inside of OpenACC routine" } */
     434        ;
     435  #pragma omp target update to(i) /* { dg-error "non-OpenACC construct inside of OpenACC routine" } */
     436      }
     437  }
     438  
     439  #pragma acc routine
     440  void
     441  f_acc_routine (void)
     442  {
     443  #pragma omp target /* { dg-error "non-OpenACC construct inside of OpenACC routine" } */
     444    ;
     445  }