Hi, The C spec says that an enum becomes whatever integral type is sufficient for holding its contents. Sparse seems to assume that only applies to signed numbers: zx2c4@thinkpad /tmp $ cat sparse.c enum { sparse_does_not_like_this = 0x8000000000000003ULL }; zx2c4@thinkpad /tmp $ sparse sparse.c sparse.c:1:36: warning: cast truncates bits from constant value (8000000000000000 becomes 3) Both gcc and clang are fine with that and do the right thing. AFAICT, it's valid C too. Thanks, Jason