// { dg-do run { target i?86-*-* x86_64-*-* } } // { dg-options "-std=c++11 -Os" } enum class X : unsigned char { V = 2, }; static void __attribute__((noinline,noclone)) foo(unsigned &out, unsigned a, X b) { out = static_cast(b); } int main() { unsigned deadbeef = 0xDEADBEEF; asm volatile ("" : "+d" (deadbeef), "+c" (deadbeef)); unsigned out; foo(out, 2, X::V); if (out != 2) __builtin_abort (); return 0; }