/* { dg-do run } */ enum e1 { A, B }; enum e2 { C, D }; __attribute__((noinline,noclone)) enum e1 f(unsigned int *p) { *(enum e1 *)p = A; *(enum e2 *)p = D; return *(enum e1 *)p; } int main() { unsigned int storage; if (f(&storage) != B) __builtin_abort(); return 0; }