forked from OSchip/llvm-project
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. llvm-svn: 222081
This commit is contained in:
parent
5aedca96d5
commit
6572489127
|
@ -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);
|
||||
|
||||
|
|
|
@ -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<UnaryOperator>(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) {
|
||||
|
|
Loading…
Reference in New Issue