/* PR tree-optimization/107967 */ /* { dg-do compile { target float64 } } */ /* { dg-options "-O2 -fno-rounding-math -fno-trapping-math -fdump-tree-optimized" } */ /* { dg-add-options float64 } */ /* { dg-final { scan-tree-dump-times "return\[ \t]\*-?Inf;" 3 "optimized" } } */ _Float64 foo (_Float64 x) { if (x >= 1.0e+300f64) ; else __builtin_unreachable (); return x * x; } _Float64 bar (_Float64 x) { if (x >= 1.0e+300f64) ; else __builtin_unreachable (); return x * -x; } _Float64 baz (_Float64 a, _Float64 b) { if (a >= 0x1.fffffffffffffp+1023f64) ; else __builtin_unreachable (); if (b >= 0x1.p+972f64) ; else __builtin_unreachable (); return a + b; } _Float64 qux (_Float64 a, _Float64 b) { if (a >= 0x1.fffffffffffffp+1023f64) ; else __builtin_unreachable (); if (b >= 0x1.fffffffffffffp+969f64) ; else __builtin_unreachable (); return a + b; }