(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
goacc/
Wparentheses-1.c
       1  /* PR c/70436 */
       2  /* { dg-additional-options "-Wparentheses" } */
       3  
       4  int a, b, c;
       5  void bar (void);
       6  void baz (void);
       7  #pragma acc routine
       8  void bar2 (void);
       9  #pragma acc routine
      10  void baz2 (void);
      11  
      12  void
      13  f1 (void)
      14  {
      15    int i, d[10] = { 0 };
      16  
      17    if (a) /* { dg-warning "ambiguous" } */
      18      #pragma acc data copyin (d[0:10])
      19        if (b)
      20  	bar ();
      21        else
      22  	baz ();
      23  
      24    #pragma acc data copyin (d[0:10])
      25    if (a) /* { dg-warning "ambiguous" } */
      26      #pragma acc host_data use_device (d)
      27        if (b)
      28  	bar ();
      29        else
      30  	baz ();
      31  
      32    if (a) /* { dg-warning "ambiguous" } */
      33      #pragma acc kernels
      34        if (b)
      35  	bar2 ();
      36        else
      37  	baz2 ();
      38  
      39    if (a) /* { dg-warning "ambiguous" } */
      40      #pragma acc kernels
      41      for (i = 0; i < 10; i++)
      42        if (b)
      43  	bar2 ();
      44        else
      45  	baz2 ();
      46  
      47    if (a) /* { dg-warning "ambiguous" } */
      48      #pragma acc parallel
      49        if (b)
      50  	bar2 ();
      51        else
      52  	baz2 ();
      53  
      54    if (a) /* { dg-warning "ambiguous" } */
      55      #pragma acc parallel loop
      56      for (i = 0; i < 10; i++)
      57        if (b)
      58  	bar2 ();
      59        else
      60  	baz2 ();
      61  
      62    (void) d[0];
      63  
      64    if (a)
      65      #pragma acc data copyin (d[0:10])
      66        {
      67  	if (b)
      68  	  bar ();
      69  	else
      70  	  baz ();
      71        }
      72  
      73    if (a)
      74      #pragma acc data copyin (d[0:10])
      75        {
      76  	if (b)
      77  	  bar ();
      78        }
      79    else
      80      baz ();
      81  
      82    #pragma acc data copyin (d[0:10])
      83    if (a)
      84      #pragma acc host_data use_device (d)
      85      {
      86        if (b)
      87  	bar ();
      88        else
      89  	baz ();
      90      }
      91  
      92    #pragma acc data copyin (d[0:10])
      93    if (a)
      94      #pragma acc host_data use_device (d)
      95      {
      96        if (b)
      97  	bar ();
      98      }
      99    else
     100      baz ();
     101  
     102    if (a)
     103      #pragma acc kernels
     104      {
     105        if (b)
     106  	bar2 ();
     107        else
     108  	baz2 ();
     109      }
     110  
     111    if (a)
     112      #pragma acc kernels
     113      for (i = 0; i < 10; i++)
     114        {
     115  	if (b)
     116  	  bar2 ();
     117  	else
     118  	  baz2 ();
     119        }
     120  
     121    if (a)
     122      #pragma acc parallel
     123        {
     124  	if (b)
     125  	  bar2 ();
     126  	else
     127  	  baz2 ();
     128        }
     129  
     130    if (a)
     131      #pragma acc parallel loop
     132      for (i = 0; i < 10; i++)
     133        {
     134  	if (b)
     135  	  bar2 ();
     136  	else
     137  	  baz2 ();
     138        }
     139  
     140    if (a)
     141      {
     142        #pragma acc parallel loop
     143        for (i = 0; i < 10; i++)
     144  	if (b)
     145  	  bar2 ();
     146  	else
     147  	  baz2 ();
     148      }
     149  }
     150  
     151  #pragma acc routine vector
     152  void
     153  f2 (int *a, int b, int c)
     154  {
     155    int i;
     156  
     157    if (b) /* { dg-warning "ambiguous" } */
     158      #pragma acc loop vector
     159        for (i = 0; i < 10; i++)
     160  	if (c)
     161  	  a[i] = a[i] + 1;
     162  	else
     163  	  a[i] = a[i] + 2;
     164  
     165    if (b)
     166      #pragma acc loop vector
     167        for (i = 0; i < 10; i++)
     168  	{
     169  	  if (c)
     170  	    a[i] = a[i] + 1;
     171  	  else
     172  	    a[i] = a[i] + 2;
     173  	}
     174  }