$ cat p.c enum { a = 1 }; $ clang -cc1 -ast-dump p.c typedef char *__builtin_va_list; enum { a = (ImplicitCastExpr 0xb9e11f0 <p.c:2:7> 'int' <IntegralCast> (IntegerLiteral 0xb9e11a0 <col:7> 'int' 1)) }; The implicit cast from int to int is deliberate?