From 65d8b4c4998b3a0c20934ea72ede72ef4838a004 Mon Sep 17 00:00:00 2001 From: Richard Trieu Date: Sat, 15 Nov 2014 06:37:39 +0000 Subject: [PATCH] Fix issues missed during the review of r222099. Shift some functions around, make a method in Sema private, call the correct overloaded function. No functional change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@222081 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Sema/Sema.h | 3 +-- lib/Sema/SemaChecking.cpp | 32 +++++++++++++++++--------------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/include/clang/Sema/Sema.h b/include/clang/Sema/Sema.h index 905f60d2a0..96dec478bf 100644 --- a/include/clang/Sema/Sema.h +++ b/include/clang/Sema/Sema.h @@ -2771,8 +2771,6 @@ public: const AttributeList *AttrList); void checkUnusedDeclAttributes(Declarator &D); - - void CheckBoolLikeConversion(Expr *E, SourceLocation CC); /// Determine if type T is a valid subject for a nonnull and similar /// attributes. By default, we look through references (the behavior used by @@ -8592,6 +8590,7 @@ private: void CheckFloatComparison(SourceLocation Loc, Expr* LHS, Expr* RHS); void CheckImplicitConversions(Expr *E, SourceLocation CC = SourceLocation()); + void CheckBoolLikeConversion(Expr *E, SourceLocation CC); void CheckForIntOverflow(Expr *E); void CheckUnsequencedOperations(Expr *E); diff --git a/lib/Sema/SemaChecking.cpp b/lib/Sema/SemaChecking.cpp index b27ce7c709..72fc3e3749 100644 --- a/lib/Sema/SemaChecking.cpp +++ b/lib/Sema/SemaChecking.cpp @@ -6526,6 +6526,14 @@ void CheckConditionalOperator(Sema &S, ConditionalOperator *E, E->getType(), CC, &Suspicious); } +/// CheckBoolLikeConversion - Check conversion of given expression to boolean. +/// Input argument E is a logical expression. +static void CheckBoolLikeConversion(Sema &S, Expr *E, SourceLocation CC) { + if (S.getLangOpts().Bool) + return; + CheckImplicitConversion(S, E->IgnoreParenImpCasts(), S.Context.BoolTy, CC); +} + /// AnalyzeImplicitConversions - Find and report any interesting /// implicit conversions in the given expression. There are a couple /// of competing diagnostics here, -Wconversion and -Wsign-compare. @@ -6606,12 +6614,12 @@ void AnalyzeImplicitConversions(Sema &S, Expr *OrigE, SourceLocation CC) { AnalyzeImplicitConversions(S, ChildExpr, CC); } if (BO && BO->isLogicalOp()) { - S.CheckBoolLikeConversion(BO->getLHS(), BO->getLHS()->getExprLoc()); - S.CheckBoolLikeConversion(BO->getRHS(), BO->getRHS()->getExprLoc()); + ::CheckBoolLikeConversion(S, BO->getLHS(), BO->getLHS()->getExprLoc()); + ::CheckBoolLikeConversion(S, BO->getRHS(), BO->getRHS()->getExprLoc()); } if (const UnaryOperator *U = dyn_cast(E)) if (U->getOpcode() == UO_LNot) - S.CheckBoolLikeConversion(U->getSubExpr(), CC); + ::CheckBoolLikeConversion(S, U->getSubExpr(), CC); } } // end anonymous namespace @@ -6670,18 +6678,6 @@ static bool IsInAnyMacroBody(const SourceManager &SM, SourceLocation Loc) { return false; } -/// CheckBoolLikeConversion - Check conversion of given expression to boolean. -/// Input argument E is a logical expression. -static void CheckBoolLikeConversion(Sema &S, Expr *E, SourceLocation CC) { - if (S.getLangOpts().Bool) - return; - CheckImplicitConversion(S, E->IgnoreParenImpCasts(), S.Context.BoolTy, CC); -} - -void Sema::CheckBoolLikeConversion(Expr *E, SourceLocation CC) { - ::CheckBoolLikeConversion(*this, E, CC); -} - /// \brief Diagnose pointers that are always non-null. /// \param E the expression containing the pointer /// \param NullKind NPCK_NotNull if E is a cast to bool, otherwise, E is @@ -6839,6 +6835,12 @@ void Sema::CheckImplicitConversions(Expr *E, SourceLocation CC) { AnalyzeImplicitConversions(*this, E, CC); } +/// CheckBoolLikeConversion - Check conversion of given expression to boolean. +/// Input argument E is a logical expression. +void Sema::CheckBoolLikeConversion(Expr *E, SourceLocation CC) { + ::CheckBoolLikeConversion(*this, E, CC); +} + /// Diagnose when expression is an integer constant expression and its evaluation /// results in integer overflow void Sema::CheckForIntOverflow (Expr *E) { -- 2.40.0