(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
extract_recip_4.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-Ofast -fdump-tree-optimized-raw" } */
       3  
       4  /* Don't expect any of these divisions to be extracted.  */
       5  double f (double x, int p)
       6  {
       7    if (p > 0)
       8      {
       9        return 1.0/(x * x);
      10      }
      11  
      12    if (p > -1)
      13      {
      14        return x * x * x;
      15      }
      16    return  1.0 /(x);
      17  }
      18  
      19  /* Expect a reciprocal to be extracted here.  */
      20  double g (double *a, double x, double y)
      21  {
      22    *a = 3 / y;
      23    double k = x / (y * y);
      24  
      25    if (y * y == 2.0)
      26      return k + 1 / y;
      27    else
      28      return k - 1 / y;
      29  }
      30  
      31  /* Expect 2 divisions in 'f' and 1 in 'g'.  */
      32  /* { dg-final { scan-tree-dump-times "rdiv_expr" 3 "optimized" } } */
      33  /* Expect 3 multiplications in 'f' and 4 in 'g'.  */
      34  /* { dg-final { scan-tree-dump-times "mult_expr" 7 "optimized" } } */