[clang] 630a0ff - [clang][NFC] Convert `Sema::TrivialABIHandling` to scoped enum
Vlad Serebrennikov via cfe-commits
cfe-commits at lists.llvm.org
Thu May 1 23:12:58 PDT 2025
Author: Vlad Serebrennikov
Date: 2025-05-02T09:12:52+03:00
New Revision: 630a0ff2c25c4ced739b1c07633097ccbf182cd6
URL: https://github.com/llvm/llvm-project/commit/630a0ff2c25c4ced739b1c07633097ccbf182cd6
DIFF: https://github.com/llvm/llvm-project/commit/630a0ff2c25c4ced739b1c07633097ccbf182cd6.diff
LOG: [clang][NFC] Convert `Sema::TrivialABIHandling` to scoped enum
Added:
Modified:
clang/include/clang/Sema/Sema.h
clang/lib/Sema/SemaDeclCXX.cpp
clang/lib/Sema/SemaType.cpp
Removed:
################################################################################
diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h
index 39702f1534e4a..4dc2783b5f83a 100644
--- a/clang/include/clang/Sema/Sema.h
+++ b/clang/include/clang/Sema/Sema.h
@@ -638,6 +638,14 @@ enum class AvailabilityMergeKind {
OptionalProtocolImplementation
};
+enum class TrivialABIHandling {
+ /// The triviality of a method unaffected by "trivial_abi".
+ IgnoreTrivialABI,
+
+ /// The triviality of a method affected by "trivial_abi".
+ ConsiderTrivialABI
+};
+
/// Sema - This implements semantic analysis and AST building for C.
/// \nosubgrouping
class Sema final : public SemaBase {
@@ -6051,20 +6059,13 @@ class Sema final : public SemaBase {
void DiagnoseNontrivial(const CXXRecordDecl *Record,
CXXSpecialMemberKind CSM);
- enum TrivialABIHandling {
- /// The triviality of a method unaffected by "trivial_abi".
- TAH_IgnoreTrivialABI,
-
- /// The triviality of a method affected by "trivial_abi".
- TAH_ConsiderTrivialABI
- };
-
/// Determine whether a defaulted or deleted special member function is
/// trivial, as specified in C++11 [class.ctor]p5, C++11 [class.copy]p12,
/// C++11 [class.copy]p25, and C++11 [class.dtor]p5.
- bool SpecialMemberIsTrivial(CXXMethodDecl *MD, CXXSpecialMemberKind CSM,
- TrivialABIHandling TAH = TAH_IgnoreTrivialABI,
- bool Diagnose = false);
+ bool SpecialMemberIsTrivial(
+ CXXMethodDecl *MD, CXXSpecialMemberKind CSM,
+ TrivialABIHandling TAH = TrivialABIHandling::IgnoreTrivialABI,
+ bool Diagnose = false);
/// For a defaulted function, the kind of defaulted function that it is.
class DefaultedFunctionKind {
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index f02fc855d5b3d..3b5deb95531ab 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -7138,7 +7138,8 @@ void Sema::CheckCompletedCXXClass(Scope *S, CXXRecordDecl *Record) {
Record->finishedDefaultedOrDeletedMember(M);
M->setTrivialForCall(
HasTrivialABI ||
- SpecialMemberIsTrivial(M, CSM, TAH_ConsiderTrivialABI));
+ SpecialMemberIsTrivial(M, CSM,
+ TrivialABIHandling::ConsiderTrivialABI));
Record->setTrivialForCallFlags(M);
}
}
@@ -9997,8 +9998,7 @@ void Sema::DiagnoseDeletedDefaultedFunction(FunctionDecl *FD) {
/// determine whether the special member is trivial.
static bool findTrivialSpecialMember(Sema &S, CXXRecordDecl *RD,
CXXSpecialMemberKind CSM, unsigned Quals,
- bool ConstRHS,
- Sema::TrivialABIHandling TAH,
+ bool ConstRHS, TrivialABIHandling TAH,
CXXMethodDecl **Selected) {
if (Selected)
*Selected = nullptr;
@@ -10041,7 +10041,7 @@ static bool findTrivialSpecialMember(Sema &S, CXXRecordDecl *RD,
// A destructor is trivial if:
// - all the direct [subobjects] have trivial destructors
if (RD->hasTrivialDestructor() ||
- (TAH == Sema::TAH_ConsiderTrivialABI &&
+ (TAH == TrivialABIHandling::ConsiderTrivialABI &&
RD->hasTrivialDestructorForCall()))
return true;
@@ -10058,7 +10058,7 @@ static bool findTrivialSpecialMember(Sema &S, CXXRecordDecl *RD,
// A copy constructor is trivial if:
// - the constructor selected to copy each direct [subobject] is trivial
if (RD->hasTrivialCopyConstructor() ||
- (TAH == Sema::TAH_ConsiderTrivialABI &&
+ (TAH == TrivialABIHandling::ConsiderTrivialABI &&
RD->hasTrivialCopyConstructorForCall())) {
if (Quals == Qualifiers::Const)
// We must either select the trivial copy constructor or reach an
@@ -10113,7 +10113,7 @@ static bool findTrivialSpecialMember(Sema &S, CXXRecordDecl *RD,
if (Selected)
*Selected = SMOR.getMethod();
- if (TAH == Sema::TAH_ConsiderTrivialABI &&
+ if (TAH == TrivialABIHandling::ConsiderTrivialABI &&
(CSM == CXXSpecialMemberKind::CopyConstructor ||
CSM == CXXSpecialMemberKind::MoveConstructor))
return SMOR.getMethod()->isTrivialForCall();
@@ -10155,8 +10155,7 @@ static bool checkTrivialSubobjectCall(Sema &S, SourceLocation SubobjLoc,
QualType SubType, bool ConstRHS,
CXXSpecialMemberKind CSM,
TrivialSubobjectKind Kind,
- Sema::TrivialABIHandling TAH,
- bool Diagnose) {
+ TrivialABIHandling TAH, bool Diagnose) {
CXXRecordDecl *SubRD = SubType->getAsCXXRecordDecl();
if (!SubRD)
return true;
@@ -10193,8 +10192,8 @@ static bool checkTrivialSubobjectCall(Sema &S, SourceLocation SubobjLoc,
<< Kind << SubType.getUnqualifiedType() << CSM;
// Explain why the defaulted or deleted special member isn't trivial.
- S.SpecialMemberIsTrivial(Selected, CSM, Sema::TAH_IgnoreTrivialABI,
- Diagnose);
+ S.SpecialMemberIsTrivial(Selected, CSM,
+ TrivialABIHandling::IgnoreTrivialABI, Diagnose);
}
}
@@ -10205,8 +10204,7 @@ static bool checkTrivialSubobjectCall(Sema &S, SourceLocation SubobjLoc,
/// trivial.
static bool checkTrivialClassMembers(Sema &S, CXXRecordDecl *RD,
CXXSpecialMemberKind CSM, bool ConstArg,
- Sema::TrivialABIHandling TAH,
- bool Diagnose) {
+ TrivialABIHandling TAH, bool Diagnose) {
for (const auto *FI : RD->fields()) {
if (FI->isInvalidDecl() || FI->isUnnamedBitField())
continue;
@@ -10260,8 +10258,9 @@ void Sema::DiagnoseNontrivial(const CXXRecordDecl *RD,
bool ConstArg = (CSM == CXXSpecialMemberKind::CopyConstructor ||
CSM == CXXSpecialMemberKind::CopyAssignment);
checkTrivialSubobjectCall(*this, RD->getLocation(), Ty, ConstArg, CSM,
- TSK_CompleteObject, TAH_IgnoreTrivialABI,
- /*Diagnose*/true);
+ TSK_CompleteObject,
+ TrivialABIHandling::IgnoreTrivialABI,
+ /*Diagnose*/ true);
}
bool Sema::SpecialMemberIsTrivial(CXXMethodDecl *MD, CXXSpecialMemberKind CSM,
@@ -15906,7 +15905,7 @@ CXXConstructorDecl *Sema::DeclareImplicitCopyConstructor(
(ClassDecl->needsOverloadResolutionForCopyConstructor()
? SpecialMemberIsTrivial(CopyConstructor,
CXXSpecialMemberKind::CopyConstructor,
- TAH_ConsiderTrivialABI)
+ TrivialABIHandling::ConsiderTrivialABI)
: ClassDecl->hasTrivialCopyConstructorForCall()));
// Note that we have declared this constructor.
@@ -16044,7 +16043,7 @@ CXXConstructorDecl *Sema::DeclareImplicitMoveConstructor(
(ClassDecl->needsOverloadResolutionForMoveConstructor()
? SpecialMemberIsTrivial(MoveConstructor,
CXXSpecialMemberKind::MoveConstructor,
- TAH_ConsiderTrivialABI)
+ TrivialABIHandling::ConsiderTrivialABI)
: ClassDecl->hasTrivialMoveConstructorForCall()));
// Note that we have declared this constructor.
diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp
index 6406415c371c2..df3afc020ac7a 100644
--- a/clang/lib/Sema/SemaType.cpp
+++ b/clang/lib/Sema/SemaType.cpp
@@ -9585,7 +9585,7 @@ bool Sema::RequireLiteralType(SourceLocation Loc, QualType T,
<< RD;
if (!Dtor->isUserProvided())
SpecialMemberIsTrivial(Dtor, CXXSpecialMemberKind::Destructor,
- TAH_IgnoreTrivialABI,
+ TrivialABIHandling::IgnoreTrivialABI,
/*Diagnose*/ true);
}
}
More information about the cfe-commits
mailing list