Author: Vlad Serebrennikov Date: 2025-05-02T10:48:08+03:00 New Revision: 140c2b6d081b781b19f50bf1c4fbf4b17bfacdc1
URL: https://github.com/llvm/llvm-project/commit/140c2b6d081b781b19f50bf1c4fbf4b17bfacdc1 DIFF: https://github.com/llvm/llvm-project/commit/140c2b6d081b781b19f50bf1c4fbf4b17bfacdc1.diff LOG: [clang][NFC] Convert `Sema::AllowFoldKind` to scoped enum Added: Modified: clang/include/clang/Sema/Sema.h clang/lib/Parse/ParseOpenMP.cpp clang/lib/Sema/SemaDecl.cpp clang/lib/Sema/SemaDeclCXX.cpp clang/lib/Sema/SemaExpr.cpp clang/lib/Sema/SemaExprCXX.cpp clang/lib/Sema/SemaInit.cpp clang/lib/Sema/SemaOpenMP.cpp clang/lib/Sema/SemaStmt.cpp clang/lib/Sema/SemaType.cpp Removed: ################################################################################ diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h index 4588082f198fb..e5388fa4fe39d 100644 --- a/clang/include/clang/Sema/Sema.h +++ b/clang/include/clang/Sema/Sema.h @@ -648,6 +648,11 @@ enum class TrivialABIHandling { enum class TryCaptureKind { Implicit, ExplicitByVal, ExplicitByRef }; +enum class AllowFoldKind { + No, + Allow, +}; + /// Sema - This implements semantic analysis and AST building for C. /// \nosubgrouping class Sema final : public SemaBase { @@ -7424,25 +7429,23 @@ class Sema final : public SemaBase { virtual ~VerifyICEDiagnoser() {} }; - enum AllowFoldKind { - NoFold, - AllowFold, - }; - /// VerifyIntegerConstantExpression - Verifies that an expression is an ICE, /// and reports the appropriate diagnostics. Returns false on success. /// Can optionally return the value of the expression. - ExprResult VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result, - VerifyICEDiagnoser &Diagnoser, - AllowFoldKind CanFold = NoFold); - ExprResult VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result, - unsigned DiagID, - AllowFoldKind CanFold = NoFold); - ExprResult VerifyIntegerConstantExpression(Expr *E, - llvm::APSInt *Result = nullptr, - AllowFoldKind CanFold = NoFold); - ExprResult VerifyIntegerConstantExpression(Expr *E, - AllowFoldKind CanFold = NoFold) { + ExprResult + VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result, + VerifyICEDiagnoser &Diagnoser, + AllowFoldKind CanFold = AllowFoldKind::No); + ExprResult + VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result, + unsigned DiagID, + AllowFoldKind CanFold = AllowFoldKind::No); + ExprResult + VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result = nullptr, + AllowFoldKind CanFold = AllowFoldKind::No); + ExprResult + VerifyIntegerConstantExpression(Expr *E, + AllowFoldKind CanFold = AllowFoldKind::No) { return VerifyIntegerConstantExpression(E, nullptr, CanFold); } diff --git a/clang/lib/Parse/ParseOpenMP.cpp b/clang/lib/Parse/ParseOpenMP.cpp index 42051fff70eb8..8d8698e61216f 100644 --- a/clang/lib/Parse/ParseOpenMP.cpp +++ b/clang/lib/Parse/ParseOpenMP.cpp @@ -3669,7 +3669,7 @@ bool Parser::ParseOpenMPIndirectClause( return false; llvm::APSInt Result; Ret = Actions.VerifyIntegerConstantExpression(Val.get(), &Result, - Sema::AllowFold); + AllowFoldKind::Allow); if (Ret.isInvalid()) return false; DTCI.Indirect = Val.get(); diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 17312864194a0..6d0d07fe124a3 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -18606,7 +18606,8 @@ ExprResult Sema::VerifyBitField(SourceLocation FieldLoc, return BitWidth; llvm::APSInt Value; - ExprResult ICE = VerifyIntegerConstantExpression(BitWidth, &Value, AllowFold); + ExprResult ICE = + VerifyIntegerConstantExpression(BitWidth, &Value, AllowFoldKind::Allow); if (ICE.isInvalid()) return ICE; BitWidth = ICE.get(); @@ -19849,9 +19850,9 @@ EnumConstantDecl *Sema::CheckEnumConstant(EnumDecl *Enum, else Val = Converted.get(); } else if (!Val->isValueDependent() && - !(Val = - VerifyIntegerConstantExpression(Val, &EnumVal, AllowFold) - .get())) { + !(Val = VerifyIntegerConstantExpression(Val, &EnumVal, + AllowFoldKind::Allow) + .get())) { // C99 6.7.2.2p2: Make sure we have an integer constant expression. } else { if (Enum->isComplete()) { diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 3b5deb95531ab..55dc321b690e2 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -17851,13 +17851,13 @@ Decl *Sema::BuildStaticAssertDeclaration(SourceLocation StaticAssertLoc, llvm::APSInt Cond; Expr *BaseExpr = AssertExpr; - AllowFoldKind FoldKind = NoFold; + AllowFoldKind FoldKind = AllowFoldKind::No; if (!getLangOpts().CPlusPlus) { // In C mode, allow folding as an extension for better compatibility with // C++ in terms of expressions like static_assert("test") or // static_assert(nullptr). - FoldKind = AllowFold; + FoldKind = AllowFoldKind::Allow; } if (!Failed && VerifyIntegerConstantExpression( diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 87bea36214c91..a4d26aa49c90c 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -17463,7 +17463,7 @@ Sema::VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result, Notes.clear(); } - if (!Folded || !CanFold) { + if (!Folded || CanFold == AllowFoldKind::No) { if (!Diagnoser.Suppress) { Diagnoser.diagnoseNotICE(*this, DiagLoc) << E->getSourceRange(); for (const PartialDiagnosticAt &Note : Notes) diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index 059613abad36f..2ddad292f7636 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -2060,10 +2060,10 @@ Sema::ActOnCXXNew(SourceLocation StartLoc, bool UseGlobal, CCEK_ArrayBound) .get(); } else { - Array.NumElts = - VerifyIntegerConstantExpression( - NumElts, nullptr, diag::err_new_array_nonconst, AllowFold) - .get(); + Array.NumElts = VerifyIntegerConstantExpression( + NumElts, nullptr, diag::err_new_array_nonconst, + AllowFoldKind::Allow) + .get(); } if (!Array.NumElts) return ExprError(); diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp index 373796212bb82..6582466db3063 100644 --- a/clang/lib/Sema/SemaInit.cpp +++ b/clang/lib/Sema/SemaInit.cpp @@ -3510,7 +3510,7 @@ CheckArrayDesignatorExpr(Sema &S, Expr *Index, llvm::APSInt &Value) { // Make sure this is an integer constant expression. ExprResult Result = - S.VerifyIntegerConstantExpression(Index, &Value, Sema::AllowFold); + S.VerifyIntegerConstantExpression(Index, &Value, AllowFoldKind::Allow); if (Result.isInvalid()) return Result; diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp index 998f55af9410c..a6ee114a2a803 100644 --- a/clang/lib/Sema/SemaOpenMP.cpp +++ b/clang/lib/Sema/SemaOpenMP.cpp @@ -6909,7 +6909,7 @@ SemaOpenMP::DeclGroupPtrTy SemaOpenMP::ActOnOpenMPDeclareSimdDirective( if (NewStep) NewStep = SemaRef .VerifyIntegerConstantExpression( - NewStep, /*FIXME*/ Sema::AllowFold) + NewStep, /*FIXME*/ AllowFoldKind::Allow) .get(); } NewSteps.push_back(NewStep); @@ -15866,10 +15866,11 @@ ExprResult SemaOpenMP::VerifyPositiveIntegerConstantInClause( } } Diagnoser; ICE = SemaRef.VerifyIntegerConstantExpression(E, &Result, Diagnoser, - Sema::AllowFold); + AllowFoldKind::Allow); } else { - ICE = SemaRef.VerifyIntegerConstantExpression(E, &Result, - /*FIXME*/ Sema::AllowFold); + ICE = + SemaRef.VerifyIntegerConstantExpression(E, &Result, + /*FIXME*/ AllowFoldKind::Allow); } if (ICE.isInvalid()) return ExprError(); @@ -16470,7 +16471,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPPermutationClause(ArrayRef<Expr *> PermExprs, llvm::APSInt PermVal; ExprResult PermEvalExpr = SemaRef.VerifyIntegerConstantExpression( - PermExpr, &PermVal, Sema::AllowFold); + PermExpr, &PermVal, AllowFoldKind::Allow); bool IsValid = PermEvalExpr.isUsable(); if (IsValid) PermExpr = PermEvalExpr.get(); diff --git a/clang/lib/Sema/SemaStmt.cpp b/clang/lib/Sema/SemaStmt.cpp index 9f517b2de0f8e..3ca9993ae65cc 100644 --- a/clang/lib/Sema/SemaStmt.cpp +++ b/clang/lib/Sema/SemaStmt.cpp @@ -526,7 +526,7 @@ Sema::ActOnCaseExpr(SourceLocation CaseLoc, ExprResult Val) { ExprResult ER = E; if (!E->isValueDependent()) - ER = VerifyIntegerConstantExpression(E, AllowFold); + ER = VerifyIntegerConstantExpression(E, AllowFoldKind::Allow); if (!ER.isInvalid()) ER = DefaultLvalueConversion(ER.get()); if (!ER.isInvalid()) diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp index df3afc020ac7a..556530c3fe13d 100644 --- a/clang/lib/Sema/SemaType.cpp +++ b/clang/lib/Sema/SemaType.cpp @@ -1946,8 +1946,8 @@ QualType Sema::BuildBitIntType(bool IsUnsigned, Expr *BitWidth, return Context.getDependentBitIntType(IsUnsigned, BitWidth); llvm::APSInt Bits(32); - ExprResult ICE = - VerifyIntegerConstantExpression(BitWidth, &Bits, /*FIXME*/ AllowFold); + ExprResult ICE = VerifyIntegerConstantExpression( + BitWidth, &Bits, /*FIXME*/ AllowFoldKind::Allow); if (ICE.isInvalid()) return QualType(); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits