blob: d18c97ddfadb16c055074ad19ac8f214f4b342da [file] [log] [blame]
/* PR rtl-optimization/36017 */
/* { dg-do run } */
/* { dg-options "-O2" } */
#if defined (__AVR__) && (__SIZEOF_DOUBLE__ == __SIZEOF_FLOAT__)
extern double sqrt (double) __asm ("sqrtf");
#else
extern double sqrt (double);
#endif
extern void abort (void);
__attribute__((noinline)) double
foo (double a)
{
double b, c, d = 0.7;
if (a <= d)
b = sqrt (d * a);
else
{
c = (1.0 - d) * (1.0 - a);
b = c > 0 ? 1.0 - sqrt (c) : 1.0;
}
return b;
}
int
main (void)
{
double c = foo (0.5);
if (c > 0.5917)
abort ();
return 0;
}