(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
tree-prof/
cmpsf-1.c
       1  /* Testcase derived from gcc.c-torture/execute cmpsf-1.c
       2     which showed jump threading profile insanities.  */
       3  /* { dg-options "-Ofast -fdump-tree-dom2-all" } */
       4  
       5  #include <limits.h>
       6  
       7  void abort();
       8  extern void exit (int);
       9  
      10  #define F 140
      11  #define T 13
      12  
      13  int
      14  feq (float x, float y)
      15  {
      16    if (x == y)
      17      return T;
      18    else
      19      return F;
      20  }
      21  
      22  int
      23  fne (float x, float y)
      24  {
      25    if (x != y)
      26      return T;
      27    else
      28      return F;
      29  }
      30  
      31  int
      32  flt (float x, float y)
      33  {
      34    if (x < y)
      35      return T;
      36    else
      37      return F;
      38  }
      39  
      40  int
      41  fge (float x, float y)
      42  {
      43    if (x >= y)
      44      return T;
      45    else
      46      return F;
      47  }
      48  
      49  int
      50  fgt (float x, float y)
      51  {
      52    if (x > y)
      53      return T;
      54    else
      55      return F;
      56  }
      57  
      58  int
      59  fle (float x, float y)
      60  {
      61    if (x <= y)
      62      return T;
      63    else
      64      return F;
      65  }
      66  
      67  float args[] =
      68  {
      69    0.0F,
      70    1.0F,
      71    -1.0F, 
      72    __FLT_MAX__,
      73    __FLT_MIN__,
      74    0.0000000000001F,
      75    123456789.0F,
      76    -987654321.0F
      77  };
      78  
      79  int correct_results[] =
      80  {
      81   T, F, F, T, F, T,                                             
      82   F, T, T, F, F, T,                                             
      83   F, T, F, T, T, F,                                             
      84   F, T, T, F, F, T,                                             
      85   F, T, T, F, F, T,                                             
      86   F, T, T, F, F, T,                                             
      87   F, T, T, F, F, T,                                             
      88   F, T, F, T, T, F,                                             
      89   F, T, F, T, T, F,                                             
      90   T, F, F, T, F, T,                                             
      91   F, T, F, T, T, F,                                             
      92   F, T, T, F, F, T,                                             
      93   F, T, F, T, T, F,                                             
      94   F, T, F, T, T, F,                                             
      95   F, T, T, F, F, T,                                             
      96   F, T, F, T, T, F,                                             
      97   F, T, T, F, F, T,                                             
      98   F, T, T, F, F, T,                                             
      99   T, F, F, T, F, T,                                             
     100   F, T, T, F, F, T,                                             
     101   F, T, T, F, F, T,                                             
     102   F, T, T, F, F, T,                                             
     103   F, T, T, F, F, T,                                             
     104   F, T, F, T, T, F,                                             
     105   F, T, F, T, T, F,                                             
     106   F, T, F, T, T, F,
     107   F, T, F, T, T, F,
     108   T, F, F, T, F, T,
     109   F, T, F, T, T, F,
     110   F, T, F, T, T, F,
     111   F, T, F, T, T, F,
     112   F, T, F, T, T, F,
     113   F, T, F, T, T, F,
     114   F, T, T, F, F, T,
     115   F, T, F, T, T, F,
     116   F, T, T, F, F, T,
     117   T, F, F, T, F, T,
     118   F, T, T, F, F, T,
     119   F, T, T, F, F, T,
     120   F, T, F, T, T, F,
     121   F, T, F, T, T, F,
     122   F, T, T, F, F, T,
     123   F, T, F, T, T, F,
     124   F, T, T, F, F, T,
     125   F, T, F, T, T, F,
     126   T, F, F, T, F, T,
     127   F, T, T, F, F, T,
     128   F, T, F, T, T, F,
     129   F, T, F, T, T, F,
     130   F, T, F, T, T, F,
     131   F, T, F, T, T, F,
     132   F, T, T, F, F, T,
     133   F, T, F, T, T, F,
     134   F, T, F, T, T, F,
     135   T, F, F, T, F, T,
     136   F, T, F, T, T, F,
     137   F, T, T, F, F, T,
     138   F, T, T, F, F, T,
     139   F, T, T, F, F, T,
     140   F, T, T, F, F, T,
     141   F, T, T, F, F, T,
     142   F, T, T, F, F, T,
     143   F, T, T, F, F, T,
     144   T, F, F, T, F, T,
     145  };
     146  
     147  void
     148  test (void)
     149  {
     150    int i, j, *res = correct_results;
     151  
     152    for (i = 0; i < 8; i++)
     153      {
     154        float arg0 = args[i];
     155        for (j = 0; j < 8; j++)
     156  	{
     157  	  float arg1 = args[j];
     158  
     159  	  if (feq (arg0, arg1) != *res++)
     160  	    abort ();
     161  	  if (fne (arg0, arg1) != *res++)
     162  	    abort ();
     163  	  if (flt (arg0, arg1) != *res++)
     164  	    abort ();
     165  	  if (fge (arg0, arg1) != *res++)
     166  	    abort ();
     167  	  if (fgt (arg0, arg1) != *res++)
     168  	    abort ();
     169  	  if (fle (arg0, arg1) != *res++)
     170  	    abort ();
     171  	}
     172      }
     173  }
     174  
     175  int
     176  main (void)
     177  {
     178    int i;
     179    for (i=0; i<100; i++)
     180      test ();
     181    exit (0);
     182  }
     183  
     184  /* { dg-final-use-not-autofdo { scan-tree-dump-not "Invalid sum" "dom2" { xfail *-*-* } } } */