// Verify that we don't confuse precision and mode for enums. // { dg-do run } // { dg-options "-O" } extern "C" void abort(); enum E { zero = 0, test = 0xbb }; static bool foo(unsigned char *x) { E e = static_cast(*x); switch (e) { case test: return true; default: return false; } } int main() { unsigned char dummy = test; if (! foo(&dummy)) abort (); return 0; }