[clang] 140c2b6 - [clang][NFC] Convert `Sema::AllowFoldKind` to scoped enum
Vlad Serebrennikov via cfe-commits
cfe-commits at lists.llvm.org
Fri May 2 00:48:16 PDT 2025
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();
More information about the cfe-commits
mailing list