1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fno-trapping-math -fdump-tree-ifcombine" } */
3 
4 void f ();
5 enum Sign { NEG=-1, ZERO, POS };
6 
sign(double x)7 static inline enum Sign sign (double x)
8 {
9   if (x > 0) return POS;
10   if (x < 0) return NEG;
11   return ZERO;
12 }
g(double x)13 void g (double x)
14 {
15   if (sign (x) == NEG) f();
16 }
17 
18 /* The above should be optimized to x < 0 by ifcombine.
19    The transformation would also be legal with -ftrapping-math.  */
20 
21 /* { dg-final { scan-tree-dump "optimizing.* < " "ifcombine" } } */
22 /* { dg-final { cleanup-tree-dump "ifcombine" } } */
23