https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71598
--- Comment #5 from Alexander Monakov <amonakov at gcc dot gnu.org> ---
C11 6.7.2.2 p4 says,
Each enumerated type shall be compatible with char, a signed integer type, or
an unsigned integer type [...]
and 6.5 p7 says,
An object shall have its stored value accessed only by an lvalue expression
that has one of the following types:
* a type compatible with the effective type of the object
(and the third bullet answers my implicit question in comment #2 about
signed/unsigned aliases).