why is this not legal in clang? pedef enum { C = 1, D = 2 } B; extern void abort (void); struct S { B __attribute__ ((mode (byte))) a; B __attribute__ ((mode (byte))) b; }; byte is an integer type in this gcc definition