1 /* PR rtl-optimization/36017 */ 2 /* { dg-do run } */ 3 /* { dg-options "-O2" } */ 4 5 extern double sqrt (double); 6 extern void abort (void); 7 8 __attribute__((noinline)) double foo(double a)9foo (double a) 10 { 11 double b, c, d = 0.7; 12 if (a <= d) 13 b = sqrt (d * a); 14 else 15 { 16 c = (1.0 - d) * (1.0 - a); 17 b = c > 0 ? 1.0 - sqrt (c) : 1.0; 18 } 19 return b; 20 } 21 22 int main(void)23main (void) 24 { 25 double c = foo (0.5); 26 if (c > 0.5917) 27 abort (); 28 return 0; 29 } 30