From e2c91e6b261972c5984aca7d4dfe95707fa97fa0 Mon Sep 17 00:00:00 2001 From: John McCall Date: Fri, 6 Nov 2009 18:16:06 +0000 Subject: [PATCH] Don't warn -Wsign-compare if we're in an unevaluated context, and fixed a typo pointed out by Fariborz. llvm-svn: 86265 --- clang/include/clang/Basic/DiagnosticGroups.td | 2 +- clang/lib/Sema/SemaExpr.cpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/clang/include/clang/Basic/DiagnosticGroups.td b/clang/include/clang/Basic/DiagnosticGroups.td index bfaebae873cb..4146e2d5c4fe 100644 --- a/clang/include/clang/Basic/DiagnosticGroups.td +++ b/clang/include/clang/Basic/DiagnosticGroups.td @@ -160,6 +160,6 @@ def : DiagGroup<"", [Extra]>; // -W = -Wextra def : DiagGroup<"endif-labels", [ExtraTokens]>; // endif-labels = endif-tokens // A warning group for warnings that we want to have on by default in clang, -// but which aren't no by default in GCC. +// but which aren't on by default in GCC. def NonGCC : DiagGroup<"non-gcc", [SignCompare]>; diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 7f71f9c66bf6..9a549f1ff730 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -4454,6 +4454,10 @@ QualType Sema::CheckShiftOperands(Expr *&lex, Expr *&rex, SourceLocation Loc, /// suppresses the warning in some cases void Sema::CheckSignCompare(Expr *lex, Expr *rex, SourceLocation OpLoc, const PartialDiagnostic &PD, bool Equality) { + // Don't warn if we're in an unevaluated context. + if (ExprEvalContext == Unevaluated) + return; + QualType lt = lex->getType(), rt = rex->getType(); // Only warn if both operands are integral.