(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
tree-ssa/
evrp-trans.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -fdump-tree-evrp" } */
       3  
       4  /* Simple tests to make sure transitives are working. */
       5  void keep();
       6  void kill();
       7  
       8  void
       9  f1 (int x, int y, int z)
      10  {
      11    if (x > y)
      12      if (y > z)
      13        {
      14  	if (x > z)
      15  	  keep ();
      16  	else
      17  	  kill ();
      18        }
      19  }
      20  
      21  void
      22  f2 (int w, int x, int y, int z)
      23  {  
      24    // Test one equivalence.
      25    if (w == z)
      26      if (x > y)
      27        if (y > z)
      28  	{
      29  	  if (x > w)
      30  	    keep ();
      31  	  else
      32  	    kill ();
      33  	}
      34  }
      35  
      36  void
      37  f3 (int a, int w, int x, int y, int z)
      38  {  
      39    // Test two equivlaences.
      40    if (a == x)
      41      if (w == z)
      42        if (x > y)
      43  	if (y > z)
      44  	  {
      45  	    if (a > w)
      46  	      keep ();
      47  	    else
      48  	      kill ();
      49  	  }
      50  }
      51  
      52  void
      53  f4 (int x, int y, int z)
      54  {
      55    // test X > Y >= Z
      56    if (x > y)
      57      if (y >= z)
      58        {
      59          if (x > z)
      60            keep ();
      61          else
      62            kill ();
      63        }
      64  }
      65  void
      66  f5 (int x, int y, int z)
      67  {
      68    // test X >= Y > Z
      69    if (x >= y)
      70      if (y > z)
      71        {
      72          if (x > z)
      73            keep ();
      74          else
      75            kill ();
      76        }
      77  }
      78  
      79  void
      80  f6 (int x, int y, int z)
      81  {
      82    // test X >= Y >= Z
      83    if (x >= y)
      84      if (y >= z)
      85        {
      86          if (x > z)
      87            keep ();
      88          else if (x == z)
      89  	  keep ();
      90           else
      91            kill ();
      92        }
      93  }
      94  
      95  void
      96  f7 (int x, int y, int z)
      97  {
      98    // test Y <= X , Z <= Y
      99    if (y <= x)
     100      if (z <= y)
     101        {
     102          if (x > z)
     103            keep ();
     104          else if (x == z)
     105  	  keep ();
     106  	else
     107            kill ();
     108        }
     109  }
     110  
     111  void
     112  f8 (int x, int y, int z)
     113  {
     114    // test X >= Y, Z <= Y
     115    if (x >= y)
     116      if (z <= y)
     117        {
     118          if (x > z)
     119            keep ();
     120          else if (x == z)
     121  	  keep ();
     122  	else
     123            kill ();
     124        }
     125  }
     126  
     127  void
     128  f9 (int x, int y, int z)
     129  {
     130    // test Y <= X   Y >= Z
     131    if (y <= x)
     132      if (y >= z)
     133        {
     134          if (x > z)
     135            keep ();
     136          else if (x == z)
     137  	  keep ();
     138          else
     139            kill ();
     140        }
     141  }
     142  
     143  /* { dg-final { scan-tree-dump-not "kill" "evrp" } }  */
     144  /* { dg-final { scan-tree-dump-times "keep" 13 "evrp"} } */