/* { dg-do run } { dg-options "-O2" } */ extern void abort (void); enum Status { P_ON_LOWER = -4, P_ON_UPPER = -2, P_FREE = -1 }; void foo (enum Status *stat, double newUpper, double lower, double max) { if (newUpper >= max) *stat = P_FREE; else if (newUpper == lower) *stat = P_ON_LOWER; } int main () { enum Status stat = P_ON_UPPER; foo (&stat, 5.0, -10.0, 10.0); if (stat != P_ON_UPPER) abort (); return 0; }