/* PR tree-optimization/109008 */ | |
/* { dg-do run } */ | |
/* { dg-options "-O2 -ffinite-math-only -fexcess-precision=standard" } */ | |
__attribute__((noipa)) double | |
foo (double eps) | |
{ | |
double d = __DBL_MAX__ + eps; | |
if (d == __DBL_MAX__) | |
if (eps > 16.0) | |
return eps; | |
return 0.0; | |
} | |
int | |
main () | |
{ | |
#if __DBL_MANT_DIG__ == 53 && __DBL_MAX_EXP__ == 1024 && __DBL_MIN_EXP__ == -1021 \ | |
&& __FLT_EVAL_METHOD__ == 0 | |
if (foo (0x0.8p+970) == 0.0) | |
__builtin_abort (); | |
if (foo (32.0) == 0.0) | |
__builtin_abort (); | |
#endif | |
return 0; | |
} |