/* PR rtl-optimization/36017 */ | |
/* { dg-do run } */ | |
/* { dg-options "-O2" } */ | |
extern double sqrt (double); | |
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; | |
} |