(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
Wparentheses-12.c
       1  /* PR c/70436  */
       2  /* { dg-options "-Wparentheses" }  */
       3  
       4  int a, b, c;
       5  void bar (void);
       6  void baz (void);
       7  
       8  void
       9  foo (void)
      10  {
      11    int i, j;
      12  
      13    if (a) /* { dg-warning "ambiguous" }  */
      14      for (;;)
      15        if (b)
      16          bar ();
      17        else
      18          baz ();
      19  
      20    if (a) /* { dg-warning "ambiguous" }  */
      21      while (1)
      22        if (b)
      23          bar ();
      24        else
      25          baz ();
      26  
      27    if (a) /* { dg-warning "ambiguous" }  */
      28      while (1)
      29        for (;;)
      30          if (b)
      31            bar ();
      32          else
      33            baz ();
      34  
      35    if (a) /* { dg-warning "ambiguous" }  */
      36      while (1)
      37        while (1)
      38          if (b)
      39            bar ();
      40    else
      41      baz ();
      42  
      43    if (a) /* { dg-warning "ambiguous" }  */
      44      for (i = 0; i < 10; i++)
      45        for (j = 0; j < 10; j++)
      46          if (b)
      47            bar ();
      48    else
      49      baz ();
      50  
      51    if (a)
      52      for (i = 0; i < 10; i++)
      53        if (b) /* { dg-warning "ambiguous" }  */
      54          for (j = 0; j < 10; j++)
      55            if (c)
      56              bar ();
      57        else
      58          baz ();
      59  
      60    if (a) /* { dg-warning "ambiguous" }  */
      61      for (i = 0; i < 10; i++)
      62        if (b)
      63          for (j = 0; j < 10; j++)
      64            if (c)
      65              bar ();
      66            else
      67              baz ();
      68    else
      69      bar ();
      70  
      71    if (a) /* { dg-warning "ambiguous" }  */
      72      for (;;)
      73        if (b)
      74          while (1)
      75            if (a)
      76              bar ();
      77            else
      78              baz ();
      79        else
      80          bar ();
      81  
      82    if (a) /* { dg-warning "ambiguous" }  */
      83      for (;;)
      84        if (b)
      85          while (1)
      86            {
      87              if (a) { bar (); } else { baz (); }
      88            }
      89        else
      90          bar ();
      91  
      92    if (a)
      93      for (;;)
      94        if (b)
      95          bar ();
      96        else
      97          baz ();
      98    else bar ();
      99  
     100    if (a)
     101      while (1)
     102        if (b)
     103          bar ();
     104        else
     105          baz ();
     106    else bar ();
     107  
     108    if (a)
     109      for (;;)
     110        {
     111          if (b)
     112            bar ();
     113          else
     114            baz ();
     115        }
     116  
     117    if (a)
     118      {
     119        for (;;)
     120          if (b)
     121            bar ();
     122      }
     123    else baz ();
     124  
     125    if (a)
     126      do
     127        if (b) bar (); else baz ();
     128      while (b);
     129  
     130    if (a)
     131      do
     132        if (b) bar ();
     133      while (b);
     134    else baz ();
     135  }