From 19c152581a46dd162c0cfacad05ad88646d527c5 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Wed, 17 Feb 2010 22:40:11 +0000 Subject: [PATCH] When diagnosing enumerator values outside of the range of 'int', be sure that we get the "too large" vs. "too small" part of the diagnostic correct. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96524 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Sema/SemaDecl.cpp | 2 +- test/Sema/enum.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index 3821113439..e7217dc220 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -5732,7 +5732,7 @@ EnumConstantDecl *Sema::CheckEnumConstant(EnumDecl *Enum, if (!isRepresentableIntegerValue(Context, EnumVal, Context.IntTy)) Diag(IdLoc, diag::ext_enum_value_not_int) << EnumVal.toString(10) << Val->getSourceRange() - << EnumVal.isNonNegative(); + << (EnumVal.isUnsigned() || EnumVal.isNonNegative()); else if (!Context.hasSameType(Val->getType(), Context.IntTy)) { // Force the type of the expression to 'int'. ImpCastExprToType(Val, Context.IntTy, CastExpr::CK_IntegralCast); diff --git a/test/Sema/enum.c b/test/Sema/enum.c index 9b4650091e..6177edff91 100644 --- a/test/Sema/enum.c +++ b/test/Sema/enum.c @@ -9,7 +9,8 @@ enum g { // too negative c = -2147483649, // expected-warning {{ISO C restricts enumerator values to range of 'int'}} d = 2147483647 }; enum h { e = -2147483648, // too pos - f = 2147483648 // expected-warning {{ISO C restricts enumerator values to range of 'int'}} + f = 2147483648, // expected-warning {{ISO C restricts enumerator values to range of 'int'}} + i = 0xFFFF0000 // expected-warning {{too large}} }; // minll maxull -- 2.50.1