(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
torture/
fp-double-convert-float-1.c
       1  /* PR57245 */
       2  /* { dg-do run } */
       3  /* { dg-require-effective-target fenv } */
       4  /* { dg-require-effective-target hard_float } */
       5  /* { dg-additional-options "-frounding-math" } */
       6  
       7  #include <fenv.h>
       8  #include <stdlib.h>
       9  
      10  int
      11  main ()
      12  {
      13  #if __DBL_MANT_DIG__ == 53 && __FLT_MANT_DIG__ == 24
      14  #ifdef FE_UPWARD
      15    fesetround (FE_UPWARD);
      16    float f = 1.3;
      17    if (f != 0x1.4ccccep+0f)
      18      __builtin_abort ();
      19  #endif
      20  #ifdef FE_TONEAREST
      21    fesetround (FE_TONEAREST);
      22    /* Use different actual values so the bogus CSE we perform does not
      23       break things.  */
      24    f = 1.33;
      25    if (f != 0x1.547ae2p+0f)
      26      abort ();
      27  #endif
      28  #ifdef FE_DOWNWARD
      29    fesetround (FE_DOWNWARD);
      30    f = 1.333;
      31    if (f != 0x1.553f7cp+0f)
      32      abort ();
      33  #endif
      34  #ifdef FE_TOWARDZERO
      35    fesetround (FE_TOWARDZERO);
      36    f = 1.3333;
      37    if (f != 0x1.555326p+0f)
      38      abort ();
      39  #endif
      40  #endif
      41    return 0;
      42  }