/* PR tree-optimization/107967 */ /* { dg-do compile { target float64 } } */ /* { dg-options "-O2 -frounding-math -fno-trapping-math -fdump-tree-optimized" } */ /* { dg-add-options float64 } */ /* { dg-final { scan-tree-dump-not "return\[ \t]\*-?Inf;" "optimized" } } */ _Float64 foo (void) { const _Float64 huge = 1.0e+300f64; return huge * huge; } _Float64 bar (void) { const _Float64 huge = 1.0e+300f64; return huge * -huge; } _Float64 baz (void) { const _Float64 a = 0x1.fffffffffffffp+1023f64; const _Float64 b = 0x1.fffffffffffffp+970f64; return a + b; } _Float64 qux (void) { const _Float64 a = 0x1.fffffffffffffp+1023f64; const _Float64 b = 0x1.fffffffffffffp+969f64; return a + b; }