http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53091
--- Comment #8 from bugs at m8y dot org 2012-04-23 19:57:37 UTC --- In response to comment #7, I was referring to this portion of the linked document. ------ Not that you are likely to care, but the Standard states that enumeration types are of a type that is compatible with an implementation-defined one of the integral types. So what? For interest's sake here is an illustration: enum ee{a,b,c}e_var, *ep; The names a, b, and c all behave as if they were int constants when you use them; ------ So. you can rewrite enum values just as easily as you can a const int by taking a pointer to it. And that site claims it behaves like a const int. So, yeah, gotta say clang's behaviour seems more rational here. Oh well. unc0rr might switch to enum in the interest of getting it working. The conversion code is not quite as tidy, but no matter. I'll let you guys hash it out. At leas clang works for now.