1 // Verify that we don't confuse precision and mode for enums. 2 // { dg-do run } 3 // { dg-options "-O" } 4 5 extern "C" void abort(); 6 7 enum E { 8 zero = 0, 9 test = 0xbb 10 }; 11 foo(unsigned char * x)12static bool foo(unsigned char *x) 13 { 14 E e = static_cast<E>(*x); 15 switch (e) 16 { 17 case test: 18 return true; 19 default: 20 return false; 21 } 22 } 23 main()24int main() 25 { 26 unsigned char dummy = test; 27 if (! foo(&dummy)) 28 abort (); 29 return 0; 30 } 31