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)12 static 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()24 int main()
25 {
26   unsigned char dummy = test;
27   if (! foo(&dummy))
28     abort ();
29   return 0;
30 }
31