https://github.com/delcypher created https://github.com/llvm/llvm-project/pull/106453
The primary motivation behind this is to allow the enum type to be referred to earlier in the `Sema.h` file which is needed for #106321. It was requested in #106321 that a scoped enum be used (rather than moving the enum declaration earlier in the `Sema` class declaration). Unfortunately doing this creates a lot of churn as all use sites of the enum constants had to be changed. Appologies in advanced. Note the `AA_` prefix has been dropped from the enum value names as they are now redundant. >From 54a5f90ce219aad942074d78d986d24d6690b30c Mon Sep 17 00:00:00 2001 From: Dan Liew <d...@su-root.co.uk> Date: Wed, 28 Aug 2024 13:44:44 -0700 Subject: [PATCH 1/2] [NFC][Sema] Move `Sema::AssignmentAction` into its own scoped enum The primary motivation behind this is to allow the enum type to be referred to earlier in the `Sema.h` file which is needed for #106321. It was requested in #106321 that a scoped enum be used (rather than moving the enum declaration earlier in the `Sema` class declaration). Unfortunately doing this creates a lot of churn as all use sites of the enum constants had to be changed. Appologies in advanced. --- clang/include/clang/Sema/Sema.h | 31 +++++++----- clang/lib/Sema/SemaARM.cpp | 5 +- clang/lib/Sema/SemaCast.cpp | 4 +- clang/lib/Sema/SemaChecking.cpp | 3 +- clang/lib/Sema/SemaDeclCXX.cpp | 3 +- clang/lib/Sema/SemaExpr.cpp | 32 ++++++------ clang/lib/Sema/SemaExprCXX.cpp | 47 ++++++++--------- clang/lib/Sema/SemaInit.cpp | 23 +++++---- clang/lib/Sema/SemaOpenMP.cpp | 78 ++++++++++++++++------------- clang/lib/Sema/SemaOverload.cpp | 30 +++++++---- clang/lib/Sema/SemaPseudoObject.cpp | 2 +- clang/lib/Sema/SemaStmt.cpp | 3 +- 12 files changed, 143 insertions(+), 118 deletions(-) diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h index 1f7e555d1b8717..736b375a865058 100644 --- a/clang/include/clang/Sema/Sema.h +++ b/clang/include/clang/Sema/Sema.h @@ -204,6 +204,24 @@ class SemaPPCallbacks; class TemplateDeductionInfo; } // namespace sema +// AssignmentAction - This is used by all the assignment diagnostic functions +// to represent what is actually causing the operation +enum class AssignmentAction : unsigned { + AA_Assigning, + AA_Passing, + AA_Returning, + AA_Converting, + AA_Initializing, + AA_Sending, + AA_Casting, + AA_Passing_CFAudited +}; +inline const StreamingDiagnostic &operator<<(const StreamingDiagnostic &DB, + const AssignmentAction &AA) { + DB << (unsigned)AA; + return DB; +} + namespace threadSafety { class BeforeSet; void threadSafetyCleanup(BeforeSet *Cache); @@ -6490,19 +6508,6 @@ class Sema final : public SemaBase { /// cleanup that are created by the current full expression. SmallVector<ExprWithCleanups::CleanupObject, 8> ExprCleanupObjects; - // AssignmentAction - This is used by all the assignment diagnostic functions - // to represent what is actually causing the operation - enum AssignmentAction { - AA_Assigning, - AA_Passing, - AA_Returning, - AA_Converting, - AA_Initializing, - AA_Sending, - AA_Casting, - AA_Passing_CFAudited - }; - /// Determine whether the use of this declaration is valid, without /// emitting diagnostics. bool CanUseDecl(NamedDecl *D, bool TreatUnavailableAsInvalid); diff --git a/clang/lib/Sema/SemaARM.cpp b/clang/lib/Sema/SemaARM.cpp index e18872f0dc551e..2f176f840bd7cc 100644 --- a/clang/lib/Sema/SemaARM.cpp +++ b/clang/lib/Sema/SemaARM.cpp @@ -795,7 +795,8 @@ bool SemaARM::CheckNeonBuiltinFunctionCall(const TargetInfo &TI, if (RHS.isInvalid()) return true; if (SemaRef.DiagnoseAssignmentResult(ConvTy, Arg->getBeginLoc(), LHSTy, - RHSTy, RHS.get(), Sema::AA_Assigning)) + RHSTy, RHS.get(), + AssignmentAction::AA_Assigning)) return true; } @@ -921,7 +922,7 @@ bool SemaARM::CheckARMBuiltinExclusiveCall(unsigned BuiltinID, CastNeeded = CK_BitCast; Diag(DRE->getBeginLoc(), diag::ext_typecheck_convert_discards_qualifiers) << PointerArg->getType() << Context.getPointerType(AddrType) - << Sema::AA_Passing << PointerArg->getSourceRange(); + << AssignmentAction::AA_Passing << PointerArg->getSourceRange(); } // Finally, do the cast and replace the argument with the corrected version. diff --git a/clang/lib/Sema/SemaCast.cpp b/clang/lib/Sema/SemaCast.cpp index eca8363ee9605c..2d0ef793844261 100644 --- a/clang/lib/Sema/SemaCast.cpp +++ b/clang/lib/Sema/SemaCast.cpp @@ -2673,7 +2673,7 @@ void CastOperation::checkAddressSpaceCast(QualType SrcType, QualType DestType) { ? DestPPointee.getAddressSpace() != SrcPPointee.getAddressSpace() : !DestPPointee.isAddressSpaceOverlapping(SrcPPointee)) { Self.Diag(OpRange.getBegin(), DiagID) - << SrcType << DestType << Sema::AA_Casting + << SrcType << DestType << AssignmentAction::AA_Casting << SrcExpr.get()->getSourceRange(); if (!Nested) SrcExpr = ExprError(); @@ -3213,7 +3213,7 @@ void CastOperation::CheckCStyleCast() { !CastQuals.compatiblyIncludesObjCLifetime(ExprQuals)) { Self.Diag(SrcExpr.get()->getBeginLoc(), diag::err_typecheck_incompatible_ownership) - << SrcType << DestType << Sema::AA_Casting + << SrcType << DestType << AssignmentAction::AA_Casting << SrcExpr.get()->getSourceRange(); return; } diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index ee143381cf4f79..e8d37972aaeeff 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -4880,7 +4880,8 @@ bool Sema::BuiltinFPClassification(CallExpr *TheCall, unsigned NumArgs, if (Arg->isTypeDependent()) return false; - ExprResult Res = PerformImplicitConversion(Arg, Context.IntTy, AA_Passing); + ExprResult Res = PerformImplicitConversion(Arg, Context.IntTy, + AssignmentAction::AA_Passing); if (Res.isInvalid()) return true; diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index d89a47f3e6226a..371f996d18e722 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -10871,7 +10871,8 @@ bool Sema::CheckDestructor(CXXDestructorDecl *Destructor) { ExprResult This = ActOnCXXThis(OperatorDelete->getParamDecl(0)->getLocation()); assert(!This.isInvalid() && "couldn't form 'this' expr in dtor?"); - This = PerformImplicitConversion(This.get(), ParamType, AA_Passing); + This = PerformImplicitConversion(This.get(), ParamType, + AssignmentAction::AA_Passing); if (This.isInvalid()) { // FIXME: Register this as a context note so that it comes out // in the right order. diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 95f53dfefbcc52..44569f2cc1e409 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -9586,7 +9586,7 @@ Sema::CheckSingleAssignmentConstraints(QualType LHSType, ExprResult &CallerRHS, QualType RHSType = RHS.get()->getType(); if (Diagnose) { RHS = PerformImplicitConversion(RHS.get(), LHSType.getUnqualifiedType(), - AA_Assigning); + AssignmentAction::AA_Assigning); } else { ImplicitConversionSequence ICS = TryImplicitConversion(RHS.get(), LHSType.getUnqualifiedType(), @@ -9598,7 +9598,7 @@ Sema::CheckSingleAssignmentConstraints(QualType LHSType, ExprResult &CallerRHS, if (ICS.isFailure()) return Incompatible; RHS = PerformImplicitConversion(RHS.get(), LHSType.getUnqualifiedType(), - ICS, AA_Assigning); + ICS, AssignmentAction::AA_Assigning); } if (RHS.isInvalid()) return Incompatible; @@ -13654,8 +13654,8 @@ QualType Sema::CheckAssignmentOperands(Expr *LHSExpr, ExprResult &RHS, ConvTy = CheckAssignmentConstraints(Loc, LHSType, RHSType); } - if (DiagnoseAssignmentResult(ConvTy, Loc, LHSType, RHSType, - RHS.get(), AA_Assigning)) + if (DiagnoseAssignmentResult(ConvTy, Loc, LHSType, RHSType, RHS.get(), + AssignmentAction::AA_Assigning)) return QualType(); CheckForNullPointerDereference(*this, LHSExpr); @@ -16663,7 +16663,7 @@ bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, MayHaveConvFixit = true; break; case IncompatiblePointer: - if (Action == AA_Passing_CFAudited) { + if (Action == AssignmentAction::AA_Passing_CFAudited) { DiagKind = diag::err_arc_typecheck_convert_incompatible_pointer; } else if (getLangOpts().CPlusPlus) { DiagKind = diag::err_typecheck_convert_incompatible_pointer; @@ -16817,19 +16817,19 @@ bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, QualType FirstType, SecondType; switch (Action) { - case AA_Assigning: - case AA_Initializing: + case AssignmentAction::AA_Assigning: + case AssignmentAction::AA_Initializing: // The destination type comes first. FirstType = DstType; SecondType = SrcType; break; - case AA_Returning: - case AA_Passing: - case AA_Passing_CFAudited: - case AA_Converting: - case AA_Sending: - case AA_Casting: + case AssignmentAction::AA_Returning: + case AssignmentAction::AA_Passing: + case AssignmentAction::AA_Passing_CFAudited: + case AssignmentAction::AA_Converting: + case AssignmentAction::AA_Sending: + case AssignmentAction::AA_Casting: // The source type comes first. FirstType = SrcType; SecondType = DstType; @@ -16838,8 +16838,8 @@ bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, PartialDiagnostic FDiag = PDiag(DiagKind); AssignmentAction ActionForDiag = Action; - if (Action == AA_Passing_CFAudited) - ActionForDiag = AA_Passing; + if (Action == AssignmentAction::AA_Passing_CFAudited) + ActionForDiag = AssignmentAction::AA_Passing; FDiag << FirstType << SecondType << ActionForDiag << SrcExpr->getSourceRange(); @@ -16879,7 +16879,7 @@ bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, if (CheckInferredResultType) ObjC().EmitRelatedResultTypeNote(SrcExpr); - if (Action == AA_Returning && ConvTy == IncompatiblePointer) + if (Action == AssignmentAction::AA_Returning && ConvTy == IncompatiblePointer) ObjC().EmitRelatedResultTypeNoteForReturn(DstType); if (Complained) diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index d8719ab26cc83f..6972248397b985 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -2199,8 +2199,8 @@ ExprResult Sema::BuildCXXNew(SourceRange Range, bool UseGlobal, if (getLangOpts().CPlusPlus14) { assert(Context.getTargetInfo().getIntWidth() && "Builtin type of size 0?"); - ConvertedSize = PerformImplicitConversion(*ArraySize, Context.getSizeType(), - AA_Converting); + ConvertedSize = PerformImplicitConversion( + *ArraySize, Context.getSizeType(), AssignmentAction::AA_Converting); if (!ConvertedSize.isInvalid() && (*ArraySize)->getType()->getAs<RecordType>()) @@ -3851,7 +3851,8 @@ Sema::ActOnCXXDelete(SourceLocation StartLoc, bool UseGlobal, Context.getQualifiedType(Pointee.getUnqualifiedType(), Qs)); Ex = ImpCastExprToType(Ex.get(), Unqual, CK_NoOp); } - Ex = PerformImplicitConversion(Ex.get(), ParamType, AA_Passing); + Ex = PerformImplicitConversion(Ex.get(), ParamType, + AssignmentAction::AA_Passing); if (Ex.isInvalid()) return ExprError(); } @@ -4256,10 +4257,9 @@ Sema::PerformImplicitConversion(Expr *From, QualType ToType, } // Watch out for ellipsis conversion. if (!ICS.UserDefined.EllipsisConversion) { - ExprResult Res = - PerformImplicitConversion(From, BeforeToType, - ICS.UserDefined.Before, AA_Converting, - CCK); + ExprResult Res = PerformImplicitConversion( + From, BeforeToType, ICS.UserDefined.Before, + AssignmentAction::AA_Converting, CCK); if (Res.isInvalid()) return ExprError(); From = Res.get(); @@ -4282,7 +4282,7 @@ Sema::PerformImplicitConversion(Expr *From, QualType ToType, return From; return PerformImplicitConversion(From, ToType, ICS.UserDefined.After, - AA_Converting, CCK); + AssignmentAction::AA_Converting, CCK); } case ImplicitConversionSequence::AmbiguousConversion: @@ -4451,19 +4451,19 @@ Sema::PerformImplicitConversion(Expr *From, QualType ToType, // target entity shall allow at least the exceptions allowed by the // source value in the assignment or initialization. switch (Action) { - case AA_Assigning: - case AA_Initializing: + case AssignmentAction::AA_Assigning: + case AssignmentAction::AA_Initializing: // Note, function argument passing and returning are initialization. - case AA_Passing: - case AA_Returning: - case AA_Sending: - case AA_Passing_CFAudited: + case AssignmentAction::AA_Passing: + case AssignmentAction::AA_Returning: + case AssignmentAction::AA_Sending: + case AssignmentAction::AA_Passing_CFAudited: if (CheckExceptionSpecCompatibility(From, ToType)) return ExprError(); break; - case AA_Casting: - case AA_Converting: + case AssignmentAction::AA_Casting: + case AssignmentAction::AA_Converting: // Casts and implicit conversions are not initialization, so are not // checked for exception specification mismatches. break; @@ -4577,9 +4577,10 @@ Sema::PerformImplicitConversion(Expr *From, QualType ToType, case ICK_Writeback_Conversion: case ICK_Pointer_Conversion: { - if (SCS.IncompatibleObjC && Action != AA_Casting) { + if (SCS.IncompatibleObjC && Action != AssignmentAction::AA_Casting) { // Diagnose incompatible Objective-C conversions - if (Action == AA_Initializing || Action == AA_Assigning) + if (Action == AssignmentAction::AA_Initializing || + Action == AssignmentAction::AA_Assigning) Diag(From->getBeginLoc(), diag::ext_typecheck_convert_incompatible_pointer) << ToType << From->getType() << Action << From->getSourceRange() @@ -4596,12 +4597,12 @@ Sema::PerformImplicitConversion(Expr *From, QualType ToType, } else if (getLangOpts().allowsNonTrivialObjCLifetimeQualifiers() && !ObjC().CheckObjCARCUnavailableWeakConversion(ToType, From->getType())) { - if (Action == AA_Initializing) + if (Action == AssignmentAction::AA_Initializing) Diag(From->getBeginLoc(), diag::err_arc_weak_unavailable_assign); else Diag(From->getBeginLoc(), diag::err_arc_convesion_of_weak_unavailable) - << (Action == AA_Casting) << From->getType() << ToType - << From->getSourceRange(); + << (Action == AssignmentAction::AA_Casting) << From->getType() + << ToType << From->getSourceRange(); } // Defer address space conversion to the third conversion. @@ -6666,14 +6667,14 @@ static bool FindConditionalOverload(Sema &Self, ExprResult &LHS, ExprResult &RHS // We found a match. Perform the conversions on the arguments and move on. ExprResult LHSRes = Self.PerformImplicitConversion( LHS.get(), Best->BuiltinParamTypes[0], Best->Conversions[0], - Sema::AA_Converting); + AssignmentAction::AA_Converting); if (LHSRes.isInvalid()) break; LHS = LHSRes; ExprResult RHSRes = Self.PerformImplicitConversion( RHS.get(), Best->BuiltinParamTypes[1], Best->Conversions[1], - Sema::AA_Converting); + AssignmentAction::AA_Converting); if (RHSRes.isInvalid()) break; RHS = RHSRes; diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp index 5a19a3505454ca..ad3611459d573b 100644 --- a/clang/lib/Sema/SemaInit.cpp +++ b/clang/lib/Sema/SemaInit.cpp @@ -6799,43 +6799,44 @@ InitializationSequence::~InitializationSequence() { //===----------------------------------------------------------------------===// // Perform initialization //===----------------------------------------------------------------------===// -static Sema::AssignmentAction -getAssignmentAction(const InitializedEntity &Entity, bool Diagnose = false) { +static AssignmentAction getAssignmentAction(const InitializedEntity &Entity, + bool Diagnose = false) { switch(Entity.getKind()) { case InitializedEntity::EK_Variable: case InitializedEntity::EK_New: case InitializedEntity::EK_Exception: case InitializedEntity::EK_Base: case InitializedEntity::EK_Delegating: - return Sema::AA_Initializing; + return AssignmentAction::AA_Initializing; case InitializedEntity::EK_Parameter: if (Entity.getDecl() && isa<ObjCMethodDecl>(Entity.getDecl()->getDeclContext())) - return Sema::AA_Sending; + return AssignmentAction::AA_Sending; - return Sema::AA_Passing; + return AssignmentAction::AA_Passing; case InitializedEntity::EK_Parameter_CF_Audited: if (Entity.getDecl() && isa<ObjCMethodDecl>(Entity.getDecl()->getDeclContext())) - return Sema::AA_Sending; + return AssignmentAction::AA_Sending; - return !Diagnose ? Sema::AA_Passing : Sema::AA_Passing_CFAudited; + return !Diagnose ? AssignmentAction::AA_Passing + : AssignmentAction::AA_Passing_CFAudited; case InitializedEntity::EK_Result: case InitializedEntity::EK_StmtExprResult: // FIXME: Not quite right. - return Sema::AA_Returning; + return AssignmentAction::AA_Returning; case InitializedEntity::EK_Temporary: case InitializedEntity::EK_RelatedResult: // FIXME: Can we tell apart casting vs. converting? - return Sema::AA_Casting; + return AssignmentAction::AA_Casting; case InitializedEntity::EK_TemplateParameter: // This is really initialization, but refer to it as conversion for // consistency with CheckConvertedConstantExpression. - return Sema::AA_Converting; + return AssignmentAction::AA_Converting; case InitializedEntity::EK_Member: case InitializedEntity::EK_ParenAggInitMember: @@ -6847,7 +6848,7 @@ getAssignmentAction(const InitializedEntity &Entity, bool Diagnose = false) { case InitializedEntity::EK_LambdaToBlockConversionBlockElement: case InitializedEntity::EK_LambdaCapture: case InitializedEntity::EK_CompoundLiteralInit: - return Sema::AA_Initializing; + return AssignmentAction::AA_Initializing; } llvm_unreachable("Invalid EntityKind!"); diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp index 74c646f64b42f2..85bd2a5a68b1c7 100644 --- a/clang/lib/Sema/SemaOpenMP.cpp +++ b/clang/lib/Sema/SemaOpenMP.cpp @@ -7395,7 +7395,8 @@ SemaOpenMP::checkOpenMPDeclareVariantFunction(SemaOpenMP::DeclGroupPtrTy DG, return std::nullopt; } VariantRefCast = SemaRef.PerformImplicitConversion( - VariantRef, FnPtrType.getUnqualifiedType(), Sema::AA_Converting); + VariantRef, FnPtrType.getUnqualifiedType(), + AssignmentAction::AA_Converting); if (!VariantRefCast.isUsable()) return std::nullopt; } @@ -8415,9 +8416,10 @@ tryBuildCapture(Sema &SemaRef, Expr *Capture, if (SemaRef.CurContext->isDependentContext() || Capture->containsErrors()) return Capture; if (Capture->isEvaluatable(SemaRef.Context, Expr::SE_AllowSideEffects)) - return SemaRef.PerformImplicitConversion( - Capture->IgnoreImpCasts(), Capture->getType(), Sema::AA_Converting, - /*AllowExplicit=*/true); + return SemaRef.PerformImplicitConversion(Capture->IgnoreImpCasts(), + Capture->getType(), + AssignmentAction::AA_Converting, + /*AllowExplicit=*/true); auto I = Captures.find(Capture); if (I != Captures.end()) return buildCapture(SemaRef, Capture, I->second, Name); @@ -8517,7 +8519,7 @@ calculateNumIters(Sema &SemaRef, Scope *S, SourceLocation DefaultLoc, SemaRef .PerformImplicitConversion( SemaRef.ActOnParenExpr(DefaultLoc, DefaultLoc, Upper).get(), - CastType, Sema::AA_Converting) + CastType, AssignmentAction::AA_Converting) .get(); Lower = SemaRef.ActOnParenExpr(DefaultLoc, DefaultLoc, Lower).get(); NewStep = SemaRef.ActOnParenExpr(DefaultLoc, DefaultLoc, NewStep.get()); @@ -8801,8 +8803,9 @@ Expr *OpenMPIterationSpaceChecker::buildNumIterations( : Type->hasSignedIntegerRepresentation(); Type = C.getIntTypeForBitwidth(NewSize, IsSigned); if (!SemaRef.Context.hasSameType(Diff.get()->getType(), Type)) { - Diff = SemaRef.PerformImplicitConversion( - Diff.get(), Type, Sema::AA_Converting, /*AllowExplicit=*/true); + Diff = SemaRef.PerformImplicitConversion(Diff.get(), Type, + AssignmentAction::AA_Converting, + /*AllowExplicit=*/true); if (!Diff.isUsable()) return nullptr; } @@ -8819,8 +8822,8 @@ Expr *OpenMPIterationSpaceChecker::buildNumIterations( NewSize, Type->hasSignedIntegerRepresentation() || C.getTypeSize(Type) < NewSize); if (!SemaRef.Context.hasSameType(Diff.get()->getType(), NewType)) { - Diff = SemaRef.PerformImplicitConversion(Diff.get(), NewType, - Sema::AA_Converting, true); + Diff = SemaRef.PerformImplicitConversion( + Diff.get(), NewType, AssignmentAction::AA_Converting, true); if (!Diff.isUsable()) return nullptr; } @@ -8892,7 +8895,7 @@ std::pair<Expr *, Expr *> OpenMPIterationSpaceChecker::buildMinMaxValues( SemaRef.Context.getUnsignedPointerDiffType())) { Diff = SemaRef.PerformImplicitConversion( Diff.get(), SemaRef.Context.getUnsignedPointerDiffType(), - Sema::AA_Converting, /*AllowExplicit=*/true); + AssignmentAction::AA_Converting, /*AllowExplicit=*/true); } if (!Diff.isUsable()) return std::make_pair(nullptr, nullptr); @@ -8920,7 +8923,7 @@ std::pair<Expr *, Expr *> OpenMPIterationSpaceChecker::buildMinMaxValues( // Convert to the original type. if (SemaRef.Context.hasSameType(Diff.get()->getType(), VarType)) Diff = SemaRef.PerformImplicitConversion(Diff.get(), VarType, - Sema::AA_Converting, + AssignmentAction::AA_Converting, /*AllowExplicit=*/true); if (!Diff.isUsable()) return std::make_pair(nullptr, nullptr); @@ -8955,7 +8958,7 @@ Expr *OpenMPIterationSpaceChecker::buildPreCond( return SemaRef .PerformImplicitConversion( SemaRef.ActOnIntegerConstant(SourceLocation(), 1).get(), - SemaRef.Context.BoolTy, /*Action=*/Sema::AA_Casting, + SemaRef.Context.BoolTy, /*Action=*/AssignmentAction::AA_Casting, /*AllowExplicit=*/true) .get(); @@ -8976,7 +8979,8 @@ Expr *OpenMPIterationSpaceChecker::buildPreCond( if (!SemaRef.Context.hasSameUnqualifiedType(CondExpr.get()->getType(), SemaRef.Context.BoolTy)) CondExpr = SemaRef.PerformImplicitConversion( - CondExpr.get(), SemaRef.Context.BoolTy, /*Action=*/Sema::AA_Casting, + CondExpr.get(), SemaRef.Context.BoolTy, + /*Action=*/AssignmentAction::AA_Casting, /*AllowExplicit=*/true); } @@ -9393,7 +9397,8 @@ buildCounterInit(Sema &SemaRef, Scope *S, SourceLocation Loc, ExprResult VarRef, if (!SemaRef.Context.hasSameType(NewStart.get()->getType(), VarRef.get()->getType())) { NewStart = SemaRef.PerformImplicitConversion( - NewStart.get(), VarRef.get()->getType(), Sema::AA_Converting, + NewStart.get(), VarRef.get()->getType(), + AssignmentAction::AA_Converting, /*AllowExplicit=*/true); if (!NewStart.isUsable()) return ExprError(); @@ -9469,7 +9474,8 @@ static ExprResult buildCounterUpdate( if (!SemaRef.Context.hasSameType(Update.get()->getType(), VarRef.get()->getType())) { Update = SemaRef.PerformImplicitConversion( - Update.get(), VarRef.get()->getType(), Sema::AA_Converting, true); + Update.get(), VarRef.get()->getType(), + AssignmentAction::AA_Converting, true); if (!Update.isUsable()) return ExprError(); } @@ -9491,8 +9497,8 @@ static ExprResult widenIterationCount(unsigned Bits, Expr *E, Sema &SemaRef) { return ExprResult(E); // OK to convert to signed, because new type has more bits than old. QualType NewType = C.getIntTypeForBitwidth(Bits, /*Signed=*/true); - return SemaRef.PerformImplicitConversion(E, NewType, Sema::AA_Converting, - true); + return SemaRef.PerformImplicitConversion( + E, NewType, AssignmentAction::AA_Converting, true); } /// Check if the given expression \a E is a constant integer that fits @@ -9752,19 +9758,19 @@ checkOpenMPLoop(OpenMPDirectiveKind DKind, Expr *CollapseLoopCountExpr, // true). auto PreCond = ExprResult(IterSpaces[0].PreCond); Expr *N0 = IterSpaces[0].NumIterations; - ExprResult LastIteration32 = - widenIterationCount(/*Bits=*/32, - SemaRef - .PerformImplicitConversion( - N0->IgnoreImpCasts(), N0->getType(), - Sema::AA_Converting, /*AllowExplicit=*/true) - .get(), - SemaRef); + ExprResult LastIteration32 = widenIterationCount( + /*Bits=*/32, + SemaRef + .PerformImplicitConversion(N0->IgnoreImpCasts(), N0->getType(), + AssignmentAction::AA_Converting, + /*AllowExplicit=*/true) + .get(), + SemaRef); ExprResult LastIteration64 = widenIterationCount( /*Bits=*/64, SemaRef .PerformImplicitConversion(N0->IgnoreImpCasts(), N0->getType(), - Sema::AA_Converting, + AssignmentAction::AA_Converting, /*AllowExplicit=*/true) .get(), SemaRef); @@ -9790,7 +9796,7 @@ checkOpenMPLoop(OpenMPDirectiveKind DKind, Expr *CollapseLoopCountExpr, CurScope, Loc, BO_Mul, LastIteration32.get(), SemaRef .PerformImplicitConversion(N->IgnoreImpCasts(), N->getType(), - Sema::AA_Converting, + AssignmentAction::AA_Converting, /*AllowExplicit=*/true) .get()); if (LastIteration64.isUsable()) @@ -9798,7 +9804,7 @@ checkOpenMPLoop(OpenMPDirectiveKind DKind, Expr *CollapseLoopCountExpr, CurScope, Loc, BO_Mul, LastIteration64.get(), SemaRef .PerformImplicitConversion(N->IgnoreImpCasts(), N->getType(), - Sema::AA_Converting, + AssignmentAction::AA_Converting, /*AllowExplicit=*/true) .get()); } @@ -11538,7 +11544,7 @@ bool OpenMPAtomicUpdateChecker::checkStatement(Stmt *S, unsigned DiagId, if (Update.isInvalid()) return true; Update = SemaRef.PerformImplicitConversion(Update.get(), X->getType(), - Sema::AA_Casting); + AssignmentAction::AA_Casting); if (Update.isInvalid()) return true; UpdateExpr = Update.get(); @@ -15655,7 +15661,7 @@ static bool findOMPAllocatorHandleT(Sema &S, SourceLocation Loc, break; } Res = S.PerformImplicitConversion(Res.get(), AllocatorHandleEnumTy, - Sema::AA_Initializing, + AssignmentAction::AA_Initializing, /*AllowExplicit=*/true); if (!Res.isUsable()) { ErrorFound = true; @@ -15686,7 +15692,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPAllocatorClause(Expr *A, return nullptr; Allocator = SemaRef.PerformImplicitConversion( Allocator.get(), DSAStack->getOMPAllocatorHandleT(), - Sema::AA_Initializing, + AssignmentAction::AA_Initializing, /*AllowExplicit=*/true); if (Allocator.isInvalid()) return nullptr; @@ -23096,7 +23102,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPAllocateClause( return nullptr; AllocatorRes = SemaRef.PerformImplicitConversion( AllocatorRes.get(), DSAStack->getOMPAllocatorHandleT(), - Sema::AA_Initializing, + AssignmentAction::AA_Initializing, /*AllowExplicit=*/true); if (AllocatorRes.isInvalid()) return nullptr; @@ -23939,14 +23945,14 @@ ExprResult SemaOpenMP::ActOnOMPIteratorExpr(Scope *S, Expr *Begin = D.Range.Begin; if (!IsDeclTyDependent && Begin && !Begin->isTypeDependent()) { - ExprResult BeginRes = - SemaRef.PerformImplicitConversion(Begin, DeclTy, Sema::AA_Converting); + ExprResult BeginRes = SemaRef.PerformImplicitConversion( + Begin, DeclTy, AssignmentAction::AA_Converting); Begin = BeginRes.get(); } Expr *End = D.Range.End; if (!IsDeclTyDependent && End && !End->isTypeDependent()) { - ExprResult EndRes = - SemaRef.PerformImplicitConversion(End, DeclTy, Sema::AA_Converting); + ExprResult EndRes = SemaRef.PerformImplicitConversion( + End, DeclTy, AssignmentAction::AA_Converting); End = EndRes.get(); } Expr *Step = D.Range.Step; diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp index 1ce0fa091938d7..6057b2cfb5ec51 100644 --- a/clang/lib/Sema/SemaOverload.cpp +++ b/clang/lib/Sema/SemaOverload.cpp @@ -1811,9 +1811,9 @@ ExprResult Sema::PerformImplicitConversion(Expr *From, QualType ToType, return ExprError(); // Objective-C ARC: Determine whether we will allow the writeback conversion. - bool AllowObjCWritebackConversion - = getLangOpts().ObjCAutoRefCount && - (Action == AA_Passing || Action == AA_Sending); + bool AllowObjCWritebackConversion = getLangOpts().ObjCAutoRefCount && + (Action == AssignmentAction::AA_Passing || + Action == AssignmentAction::AA_Sending); if (getLangOpts().ObjC) ObjC().CheckObjCBridgeRelatedConversions(From->getBeginLoc(), ToType, From->getType(), From); @@ -5983,7 +5983,8 @@ ExprResult Sema::PerformContextuallyConvertToBool(Expr *From) { ImplicitConversionSequence ICS = TryContextuallyConvertToBool(*this, From); if (!ICS.isBad()) - return PerformImplicitConversion(From, Context.BoolTy, ICS, AA_Converting); + return PerformImplicitConversion(From, Context.BoolTy, ICS, + AssignmentAction::AA_Converting); if (!DiagnoseMultipleUserDefinedConversion(From, Context.BoolTy)) return Diag(From->getBeginLoc(), diag::err_typecheck_bool_condition) @@ -6149,7 +6150,8 @@ static ExprResult BuildConvertedConstantExpression(Sema &S, Expr *From, T, cast<NonTypeTemplateParmDecl>(Dest)), SourceLocation(), From); } else { - Result = S.PerformImplicitConversion(From, T, ICS, Sema::AA_Converting); + Result = S.PerformImplicitConversion(From, T, ICS, + AssignmentAction::AA_Converting); } if (Result.isInvalid()) return Result; @@ -6370,7 +6372,8 @@ ExprResult Sema::PerformContextuallyConvertToObjCPointer(Expr *From) { ImplicitConversionSequence ICS = TryContextuallyConvertToObjCPointer(*this, From); if (!ICS.isBad()) - return PerformImplicitConversion(From, Ty, ICS, AA_Converting); + return PerformImplicitConversion(From, Ty, ICS, + AssignmentAction::AA_Converting); return ExprResult(); } @@ -14363,7 +14366,8 @@ Sema::CreateOverloadedUnaryOp(SourceLocation OpLoc, UnaryOperatorKind Opc, // break out so that we will build the appropriate built-in // operator node. ExprResult InputRes = PerformImplicitConversion( - Input, Best->BuiltinParamTypes[0], Best->Conversions[0], AA_Passing, + Input, Best->BuiltinParamTypes[0], Best->Conversions[0], + AssignmentAction::AA_Passing, CheckedConversionKind::ForBuiltinOverloadedOp); if (InputRes.isInvalid()) return ExprError(); @@ -14825,14 +14829,16 @@ ExprResult Sema::CreateOverloadedBinOp(SourceLocation OpLoc, // operator node. ExprResult ArgsRes0 = PerformImplicitConversion( Args[0], Best->BuiltinParamTypes[0], Best->Conversions[0], - AA_Passing, CheckedConversionKind::ForBuiltinOverloadedOp); + AssignmentAction::AA_Passing, + CheckedConversionKind::ForBuiltinOverloadedOp); if (ArgsRes0.isInvalid()) return ExprError(); Args[0] = ArgsRes0.get(); ExprResult ArgsRes1 = PerformImplicitConversion( Args[1], Best->BuiltinParamTypes[1], Best->Conversions[1], - AA_Passing, CheckedConversionKind::ForBuiltinOverloadedOp); + AssignmentAction::AA_Passing, + CheckedConversionKind::ForBuiltinOverloadedOp); if (ArgsRes1.isInvalid()) return ExprError(); Args[1] = ArgsRes1.get(); @@ -15203,14 +15209,16 @@ ExprResult Sema::CreateOverloadedArraySubscriptExpr(SourceLocation LLoc, // operator node. ExprResult ArgsRes0 = PerformImplicitConversion( Args[0], Best->BuiltinParamTypes[0], Best->Conversions[0], - AA_Passing, CheckedConversionKind::ForBuiltinOverloadedOp); + AssignmentAction::AA_Passing, + CheckedConversionKind::ForBuiltinOverloadedOp); if (ArgsRes0.isInvalid()) return ExprError(); Args[0] = ArgsRes0.get(); ExprResult ArgsRes1 = PerformImplicitConversion( Args[1], Best->BuiltinParamTypes[1], Best->Conversions[1], - AA_Passing, CheckedConversionKind::ForBuiltinOverloadedOp); + AssignmentAction::AA_Passing, + CheckedConversionKind::ForBuiltinOverloadedOp); if (ArgsRes1.isInvalid()) return ExprError(); Args[1] = ArgsRes1.get(); diff --git a/clang/lib/Sema/SemaPseudoObject.cpp b/clang/lib/Sema/SemaPseudoObject.cpp index fdb584ceb81059..fb4ad250f4f108 100644 --- a/clang/lib/Sema/SemaPseudoObject.cpp +++ b/clang/lib/Sema/SemaPseudoObject.cpp @@ -787,7 +787,7 @@ ExprResult ObjCPropertyOpBuilder::buildSet(Expr *op, SourceLocation opcLoc, if (opResult.isInvalid() || S.DiagnoseAssignmentResult(assignResult, opcLoc, paramType, op->getType(), opResult.get(), - Sema::AA_Assigning)) + AssignmentAction::AA_Assigning)) return ExprError(); op = opResult.get(); diff --git a/clang/lib/Sema/SemaStmt.cpp b/clang/lib/Sema/SemaStmt.cpp index ba681671eb3290..d36b518c6f248f 100644 --- a/clang/lib/Sema/SemaStmt.cpp +++ b/clang/lib/Sema/SemaStmt.cpp @@ -3151,7 +3151,8 @@ Sema::ActOnIndirectGotoStmt(SourceLocation GotoLoc, SourceLocation StarLoc, if (ExprRes.isInvalid()) return StmtError(); E = ExprRes.get(); - if (DiagnoseAssignmentResult(ConvTy, StarLoc, DestTy, ETy, E, AA_Passing)) + if (DiagnoseAssignmentResult(ConvTy, StarLoc, DestTy, ETy, E, + AssignmentAction::AA_Passing)) return StmtError(); } >From 1e600e4030bb1f5eec3951de0efc39e5d3a2ec64 Mon Sep 17 00:00:00 2001 From: Dan Liew <d...@su-root.co.uk> Date: Wed, 28 Aug 2024 14:01:23 -0700 Subject: [PATCH 2/2] [NFC][Sema] Drop `AA_` prefix in AssignmentAction Now that the enum is scoped the `AA_` suffix is redundant. --- clang/include/clang/Sema/Sema.h | 16 +++++----- clang/lib/Sema/SemaARM.cpp | 4 +-- clang/lib/Sema/SemaCast.cpp | 4 +-- clang/lib/Sema/SemaChecking.cpp | 2 +- clang/lib/Sema/SemaDeclCXX.cpp | 2 +- clang/lib/Sema/SemaExpr.cpp | 30 +++++++++--------- clang/lib/Sema/SemaExprCXX.cpp | 38 +++++++++++----------- clang/lib/Sema/SemaInit.cpp | 20 ++++++------ clang/lib/Sema/SemaOpenMP.cpp | 49 ++++++++++++++--------------- clang/lib/Sema/SemaOverload.cpp | 24 +++++++------- clang/lib/Sema/SemaPseudoObject.cpp | 2 +- clang/lib/Sema/SemaStmt.cpp | 2 +- 12 files changed, 96 insertions(+), 97 deletions(-) diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h index 736b375a865058..ee2ca1d9b0f812 100644 --- a/clang/include/clang/Sema/Sema.h +++ b/clang/include/clang/Sema/Sema.h @@ -207,14 +207,14 @@ class TemplateDeductionInfo; // AssignmentAction - This is used by all the assignment diagnostic functions // to represent what is actually causing the operation enum class AssignmentAction : unsigned { - AA_Assigning, - AA_Passing, - AA_Returning, - AA_Converting, - AA_Initializing, - AA_Sending, - AA_Casting, - AA_Passing_CFAudited + Assigning, + Passing, + Returning, + Converting, + Initializing, + Sending, + Casting, + Passing_CFAudited }; inline const StreamingDiagnostic &operator<<(const StreamingDiagnostic &DB, const AssignmentAction &AA) { diff --git a/clang/lib/Sema/SemaARM.cpp b/clang/lib/Sema/SemaARM.cpp index 2f176f840bd7cc..185e0427d5c995 100644 --- a/clang/lib/Sema/SemaARM.cpp +++ b/clang/lib/Sema/SemaARM.cpp @@ -796,7 +796,7 @@ bool SemaARM::CheckNeonBuiltinFunctionCall(const TargetInfo &TI, return true; if (SemaRef.DiagnoseAssignmentResult(ConvTy, Arg->getBeginLoc(), LHSTy, RHSTy, RHS.get(), - AssignmentAction::AA_Assigning)) + AssignmentAction::Assigning)) return true; } @@ -922,7 +922,7 @@ bool SemaARM::CheckARMBuiltinExclusiveCall(unsigned BuiltinID, CastNeeded = CK_BitCast; Diag(DRE->getBeginLoc(), diag::ext_typecheck_convert_discards_qualifiers) << PointerArg->getType() << Context.getPointerType(AddrType) - << AssignmentAction::AA_Passing << PointerArg->getSourceRange(); + << AssignmentAction::Passing << PointerArg->getSourceRange(); } // Finally, do the cast and replace the argument with the corrected version. diff --git a/clang/lib/Sema/SemaCast.cpp b/clang/lib/Sema/SemaCast.cpp index 2d0ef793844261..f01b22a72915c8 100644 --- a/clang/lib/Sema/SemaCast.cpp +++ b/clang/lib/Sema/SemaCast.cpp @@ -2673,7 +2673,7 @@ void CastOperation::checkAddressSpaceCast(QualType SrcType, QualType DestType) { ? DestPPointee.getAddressSpace() != SrcPPointee.getAddressSpace() : !DestPPointee.isAddressSpaceOverlapping(SrcPPointee)) { Self.Diag(OpRange.getBegin(), DiagID) - << SrcType << DestType << AssignmentAction::AA_Casting + << SrcType << DestType << AssignmentAction::Casting << SrcExpr.get()->getSourceRange(); if (!Nested) SrcExpr = ExprError(); @@ -3213,7 +3213,7 @@ void CastOperation::CheckCStyleCast() { !CastQuals.compatiblyIncludesObjCLifetime(ExprQuals)) { Self.Diag(SrcExpr.get()->getBeginLoc(), diag::err_typecheck_incompatible_ownership) - << SrcType << DestType << AssignmentAction::AA_Casting + << SrcType << DestType << AssignmentAction::Casting << SrcExpr.get()->getSourceRange(); return; } diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index e8d37972aaeeff..b021e27209cf1b 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -4881,7 +4881,7 @@ bool Sema::BuiltinFPClassification(CallExpr *TheCall, unsigned NumArgs, return false; ExprResult Res = PerformImplicitConversion(Arg, Context.IntTy, - AssignmentAction::AA_Passing); + AssignmentAction::Passing); if (Res.isInvalid()) return true; diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 371f996d18e722..3044f1218f5b23 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -10872,7 +10872,7 @@ bool Sema::CheckDestructor(CXXDestructorDecl *Destructor) { ActOnCXXThis(OperatorDelete->getParamDecl(0)->getLocation()); assert(!This.isInvalid() && "couldn't form 'this' expr in dtor?"); This = PerformImplicitConversion(This.get(), ParamType, - AssignmentAction::AA_Passing); + AssignmentAction::Passing); if (This.isInvalid()) { // FIXME: Register this as a context note so that it comes out // in the right order. diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 44569f2cc1e409..a6763832715c7f 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -9586,7 +9586,7 @@ Sema::CheckSingleAssignmentConstraints(QualType LHSType, ExprResult &CallerRHS, QualType RHSType = RHS.get()->getType(); if (Diagnose) { RHS = PerformImplicitConversion(RHS.get(), LHSType.getUnqualifiedType(), - AssignmentAction::AA_Assigning); + AssignmentAction::Assigning); } else { ImplicitConversionSequence ICS = TryImplicitConversion(RHS.get(), LHSType.getUnqualifiedType(), @@ -9598,7 +9598,7 @@ Sema::CheckSingleAssignmentConstraints(QualType LHSType, ExprResult &CallerRHS, if (ICS.isFailure()) return Incompatible; RHS = PerformImplicitConversion(RHS.get(), LHSType.getUnqualifiedType(), - ICS, AssignmentAction::AA_Assigning); + ICS, AssignmentAction::Assigning); } if (RHS.isInvalid()) return Incompatible; @@ -13655,7 +13655,7 @@ QualType Sema::CheckAssignmentOperands(Expr *LHSExpr, ExprResult &RHS, } if (DiagnoseAssignmentResult(ConvTy, Loc, LHSType, RHSType, RHS.get(), - AssignmentAction::AA_Assigning)) + AssignmentAction::Assigning)) return QualType(); CheckForNullPointerDereference(*this, LHSExpr); @@ -16663,7 +16663,7 @@ bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, MayHaveConvFixit = true; break; case IncompatiblePointer: - if (Action == AssignmentAction::AA_Passing_CFAudited) { + if (Action == AssignmentAction::Passing_CFAudited) { DiagKind = diag::err_arc_typecheck_convert_incompatible_pointer; } else if (getLangOpts().CPlusPlus) { DiagKind = diag::err_typecheck_convert_incompatible_pointer; @@ -16817,19 +16817,19 @@ bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, QualType FirstType, SecondType; switch (Action) { - case AssignmentAction::AA_Assigning: - case AssignmentAction::AA_Initializing: + case AssignmentAction::Assigning: + case AssignmentAction::Initializing: // The destination type comes first. FirstType = DstType; SecondType = SrcType; break; - case AssignmentAction::AA_Returning: - case AssignmentAction::AA_Passing: - case AssignmentAction::AA_Passing_CFAudited: - case AssignmentAction::AA_Converting: - case AssignmentAction::AA_Sending: - case AssignmentAction::AA_Casting: + case AssignmentAction::Returning: + case AssignmentAction::Passing: + case AssignmentAction::Passing_CFAudited: + case AssignmentAction::Converting: + case AssignmentAction::Sending: + case AssignmentAction::Casting: // The source type comes first. FirstType = SrcType; SecondType = DstType; @@ -16838,8 +16838,8 @@ bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, PartialDiagnostic FDiag = PDiag(DiagKind); AssignmentAction ActionForDiag = Action; - if (Action == AssignmentAction::AA_Passing_CFAudited) - ActionForDiag = AssignmentAction::AA_Passing; + if (Action == AssignmentAction::Passing_CFAudited) + ActionForDiag = AssignmentAction::Passing; FDiag << FirstType << SecondType << ActionForDiag << SrcExpr->getSourceRange(); @@ -16879,7 +16879,7 @@ bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, if (CheckInferredResultType) ObjC().EmitRelatedResultTypeNote(SrcExpr); - if (Action == AssignmentAction::AA_Returning && ConvTy == IncompatiblePointer) + if (Action == AssignmentAction::Returning && ConvTy == IncompatiblePointer) ObjC().EmitRelatedResultTypeNoteForReturn(DstType); if (Complained) diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index 6972248397b985..b7531581d37ff0 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -2200,7 +2200,7 @@ ExprResult Sema::BuildCXXNew(SourceRange Range, bool UseGlobal, assert(Context.getTargetInfo().getIntWidth() && "Builtin type of size 0?"); ConvertedSize = PerformImplicitConversion( - *ArraySize, Context.getSizeType(), AssignmentAction::AA_Converting); + *ArraySize, Context.getSizeType(), AssignmentAction::Converting); if (!ConvertedSize.isInvalid() && (*ArraySize)->getType()->getAs<RecordType>()) @@ -3852,7 +3852,7 @@ Sema::ActOnCXXDelete(SourceLocation StartLoc, bool UseGlobal, Ex = ImpCastExprToType(Ex.get(), Unqual, CK_NoOp); } Ex = PerformImplicitConversion(Ex.get(), ParamType, - AssignmentAction::AA_Passing); + AssignmentAction::Passing); if (Ex.isInvalid()) return ExprError(); } @@ -4259,7 +4259,7 @@ Sema::PerformImplicitConversion(Expr *From, QualType ToType, if (!ICS.UserDefined.EllipsisConversion) { ExprResult Res = PerformImplicitConversion( From, BeforeToType, ICS.UserDefined.Before, - AssignmentAction::AA_Converting, CCK); + AssignmentAction::Converting, CCK); if (Res.isInvalid()) return ExprError(); From = Res.get(); @@ -4282,7 +4282,7 @@ Sema::PerformImplicitConversion(Expr *From, QualType ToType, return From; return PerformImplicitConversion(From, ToType, ICS.UserDefined.After, - AssignmentAction::AA_Converting, CCK); + AssignmentAction::Converting, CCK); } case ImplicitConversionSequence::AmbiguousConversion: @@ -4451,19 +4451,19 @@ Sema::PerformImplicitConversion(Expr *From, QualType ToType, // target entity shall allow at least the exceptions allowed by the // source value in the assignment or initialization. switch (Action) { - case AssignmentAction::AA_Assigning: - case AssignmentAction::AA_Initializing: + case AssignmentAction::Assigning: + case AssignmentAction::Initializing: // Note, function argument passing and returning are initialization. - case AssignmentAction::AA_Passing: - case AssignmentAction::AA_Returning: - case AssignmentAction::AA_Sending: - case AssignmentAction::AA_Passing_CFAudited: + case AssignmentAction::Passing: + case AssignmentAction::Returning: + case AssignmentAction::Sending: + case AssignmentAction::Passing_CFAudited: if (CheckExceptionSpecCompatibility(From, ToType)) return ExprError(); break; - case AssignmentAction::AA_Casting: - case AssignmentAction::AA_Converting: + case AssignmentAction::Casting: + case AssignmentAction::Converting: // Casts and implicit conversions are not initialization, so are not // checked for exception specification mismatches. break; @@ -4577,10 +4577,10 @@ Sema::PerformImplicitConversion(Expr *From, QualType ToType, case ICK_Writeback_Conversion: case ICK_Pointer_Conversion: { - if (SCS.IncompatibleObjC && Action != AssignmentAction::AA_Casting) { + if (SCS.IncompatibleObjC && Action != AssignmentAction::Casting) { // Diagnose incompatible Objective-C conversions - if (Action == AssignmentAction::AA_Initializing || - Action == AssignmentAction::AA_Assigning) + if (Action == AssignmentAction::Initializing || + Action == AssignmentAction::Assigning) Diag(From->getBeginLoc(), diag::ext_typecheck_convert_incompatible_pointer) << ToType << From->getType() << Action << From->getSourceRange() @@ -4597,11 +4597,11 @@ Sema::PerformImplicitConversion(Expr *From, QualType ToType, } else if (getLangOpts().allowsNonTrivialObjCLifetimeQualifiers() && !ObjC().CheckObjCARCUnavailableWeakConversion(ToType, From->getType())) { - if (Action == AssignmentAction::AA_Initializing) + if (Action == AssignmentAction::Initializing) Diag(From->getBeginLoc(), diag::err_arc_weak_unavailable_assign); else Diag(From->getBeginLoc(), diag::err_arc_convesion_of_weak_unavailable) - << (Action == AssignmentAction::AA_Casting) << From->getType() + << (Action == AssignmentAction::Casting) << From->getType() << ToType << From->getSourceRange(); } @@ -6667,14 +6667,14 @@ static bool FindConditionalOverload(Sema &Self, ExprResult &LHS, ExprResult &RHS // We found a match. Perform the conversions on the arguments and move on. ExprResult LHSRes = Self.PerformImplicitConversion( LHS.get(), Best->BuiltinParamTypes[0], Best->Conversions[0], - AssignmentAction::AA_Converting); + AssignmentAction::Converting); if (LHSRes.isInvalid()) break; LHS = LHSRes; ExprResult RHSRes = Self.PerformImplicitConversion( RHS.get(), Best->BuiltinParamTypes[1], Best->Conversions[1], - AssignmentAction::AA_Converting); + AssignmentAction::Converting); if (RHSRes.isInvalid()) break; RHS = RHSRes; diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp index ad3611459d573b..7dc17187524621 100644 --- a/clang/lib/Sema/SemaInit.cpp +++ b/clang/lib/Sema/SemaInit.cpp @@ -6807,36 +6807,36 @@ static AssignmentAction getAssignmentAction(const InitializedEntity &Entity, case InitializedEntity::EK_Exception: case InitializedEntity::EK_Base: case InitializedEntity::EK_Delegating: - return AssignmentAction::AA_Initializing; + return AssignmentAction::Initializing; case InitializedEntity::EK_Parameter: if (Entity.getDecl() && isa<ObjCMethodDecl>(Entity.getDecl()->getDeclContext())) - return AssignmentAction::AA_Sending; + return AssignmentAction::Sending; - return AssignmentAction::AA_Passing; + return AssignmentAction::Passing; case InitializedEntity::EK_Parameter_CF_Audited: if (Entity.getDecl() && isa<ObjCMethodDecl>(Entity.getDecl()->getDeclContext())) - return AssignmentAction::AA_Sending; + return AssignmentAction::Sending; - return !Diagnose ? AssignmentAction::AA_Passing - : AssignmentAction::AA_Passing_CFAudited; + return !Diagnose ? AssignmentAction::Passing + : AssignmentAction::Passing_CFAudited; case InitializedEntity::EK_Result: case InitializedEntity::EK_StmtExprResult: // FIXME: Not quite right. - return AssignmentAction::AA_Returning; + return AssignmentAction::Returning; case InitializedEntity::EK_Temporary: case InitializedEntity::EK_RelatedResult: // FIXME: Can we tell apart casting vs. converting? - return AssignmentAction::AA_Casting; + return AssignmentAction::Casting; case InitializedEntity::EK_TemplateParameter: // This is really initialization, but refer to it as conversion for // consistency with CheckConvertedConstantExpression. - return AssignmentAction::AA_Converting; + return AssignmentAction::Converting; case InitializedEntity::EK_Member: case InitializedEntity::EK_ParenAggInitMember: @@ -6848,7 +6848,7 @@ static AssignmentAction getAssignmentAction(const InitializedEntity &Entity, case InitializedEntity::EK_LambdaToBlockConversionBlockElement: case InitializedEntity::EK_LambdaCapture: case InitializedEntity::EK_CompoundLiteralInit: - return AssignmentAction::AA_Initializing; + return AssignmentAction::Initializing; } llvm_unreachable("Invalid EntityKind!"); diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp index 85bd2a5a68b1c7..232222e674e6d1 100644 --- a/clang/lib/Sema/SemaOpenMP.cpp +++ b/clang/lib/Sema/SemaOpenMP.cpp @@ -7396,7 +7396,7 @@ SemaOpenMP::checkOpenMPDeclareVariantFunction(SemaOpenMP::DeclGroupPtrTy DG, } VariantRefCast = SemaRef.PerformImplicitConversion( VariantRef, FnPtrType.getUnqualifiedType(), - AssignmentAction::AA_Converting); + AssignmentAction::Converting); if (!VariantRefCast.isUsable()) return std::nullopt; } @@ -8418,7 +8418,7 @@ tryBuildCapture(Sema &SemaRef, Expr *Capture, if (Capture->isEvaluatable(SemaRef.Context, Expr::SE_AllowSideEffects)) return SemaRef.PerformImplicitConversion(Capture->IgnoreImpCasts(), Capture->getType(), - AssignmentAction::AA_Converting, + AssignmentAction::Converting, /*AllowExplicit=*/true); auto I = Captures.find(Capture); if (I != Captures.end()) @@ -8519,7 +8519,7 @@ calculateNumIters(Sema &SemaRef, Scope *S, SourceLocation DefaultLoc, SemaRef .PerformImplicitConversion( SemaRef.ActOnParenExpr(DefaultLoc, DefaultLoc, Upper).get(), - CastType, AssignmentAction::AA_Converting) + CastType, AssignmentAction::Converting) .get(); Lower = SemaRef.ActOnParenExpr(DefaultLoc, DefaultLoc, Lower).get(); NewStep = SemaRef.ActOnParenExpr(DefaultLoc, DefaultLoc, NewStep.get()); @@ -8804,7 +8804,7 @@ Expr *OpenMPIterationSpaceChecker::buildNumIterations( Type = C.getIntTypeForBitwidth(NewSize, IsSigned); if (!SemaRef.Context.hasSameType(Diff.get()->getType(), Type)) { Diff = SemaRef.PerformImplicitConversion(Diff.get(), Type, - AssignmentAction::AA_Converting, + AssignmentAction::Converting, /*AllowExplicit=*/true); if (!Diff.isUsable()) return nullptr; @@ -8823,7 +8823,7 @@ Expr *OpenMPIterationSpaceChecker::buildNumIterations( C.getTypeSize(Type) < NewSize); if (!SemaRef.Context.hasSameType(Diff.get()->getType(), NewType)) { Diff = SemaRef.PerformImplicitConversion( - Diff.get(), NewType, AssignmentAction::AA_Converting, true); + Diff.get(), NewType, AssignmentAction::Converting, true); if (!Diff.isUsable()) return nullptr; } @@ -8895,7 +8895,7 @@ std::pair<Expr *, Expr *> OpenMPIterationSpaceChecker::buildMinMaxValues( SemaRef.Context.getUnsignedPointerDiffType())) { Diff = SemaRef.PerformImplicitConversion( Diff.get(), SemaRef.Context.getUnsignedPointerDiffType(), - AssignmentAction::AA_Converting, /*AllowExplicit=*/true); + AssignmentAction::Converting, /*AllowExplicit=*/true); } if (!Diff.isUsable()) return std::make_pair(nullptr, nullptr); @@ -8923,7 +8923,7 @@ std::pair<Expr *, Expr *> OpenMPIterationSpaceChecker::buildMinMaxValues( // Convert to the original type. if (SemaRef.Context.hasSameType(Diff.get()->getType(), VarType)) Diff = SemaRef.PerformImplicitConversion(Diff.get(), VarType, - AssignmentAction::AA_Converting, + AssignmentAction::Converting, /*AllowExplicit=*/true); if (!Diff.isUsable()) return std::make_pair(nullptr, nullptr); @@ -8958,7 +8958,7 @@ Expr *OpenMPIterationSpaceChecker::buildPreCond( return SemaRef .PerformImplicitConversion( SemaRef.ActOnIntegerConstant(SourceLocation(), 1).get(), - SemaRef.Context.BoolTy, /*Action=*/AssignmentAction::AA_Casting, + SemaRef.Context.BoolTy, /*Action=*/AssignmentAction::Casting, /*AllowExplicit=*/true) .get(); @@ -8980,7 +8980,7 @@ Expr *OpenMPIterationSpaceChecker::buildPreCond( SemaRef.Context.BoolTy)) CondExpr = SemaRef.PerformImplicitConversion( CondExpr.get(), SemaRef.Context.BoolTy, - /*Action=*/AssignmentAction::AA_Casting, + /*Action=*/AssignmentAction::Casting, /*AllowExplicit=*/true); } @@ -9397,8 +9397,7 @@ buildCounterInit(Sema &SemaRef, Scope *S, SourceLocation Loc, ExprResult VarRef, if (!SemaRef.Context.hasSameType(NewStart.get()->getType(), VarRef.get()->getType())) { NewStart = SemaRef.PerformImplicitConversion( - NewStart.get(), VarRef.get()->getType(), - AssignmentAction::AA_Converting, + NewStart.get(), VarRef.get()->getType(), AssignmentAction::Converting, /*AllowExplicit=*/true); if (!NewStart.isUsable()) return ExprError(); @@ -9474,8 +9473,8 @@ static ExprResult buildCounterUpdate( if (!SemaRef.Context.hasSameType(Update.get()->getType(), VarRef.get()->getType())) { Update = SemaRef.PerformImplicitConversion( - Update.get(), VarRef.get()->getType(), - AssignmentAction::AA_Converting, true); + Update.get(), VarRef.get()->getType(), AssignmentAction::Converting, + true); if (!Update.isUsable()) return ExprError(); } @@ -9497,8 +9496,8 @@ static ExprResult widenIterationCount(unsigned Bits, Expr *E, Sema &SemaRef) { return ExprResult(E); // OK to convert to signed, because new type has more bits than old. QualType NewType = C.getIntTypeForBitwidth(Bits, /*Signed=*/true); - return SemaRef.PerformImplicitConversion( - E, NewType, AssignmentAction::AA_Converting, true); + return SemaRef.PerformImplicitConversion(E, NewType, + AssignmentAction::Converting, true); } /// Check if the given expression \a E is a constant integer that fits @@ -9762,7 +9761,7 @@ checkOpenMPLoop(OpenMPDirectiveKind DKind, Expr *CollapseLoopCountExpr, /*Bits=*/32, SemaRef .PerformImplicitConversion(N0->IgnoreImpCasts(), N0->getType(), - AssignmentAction::AA_Converting, + AssignmentAction::Converting, /*AllowExplicit=*/true) .get(), SemaRef); @@ -9770,7 +9769,7 @@ checkOpenMPLoop(OpenMPDirectiveKind DKind, Expr *CollapseLoopCountExpr, /*Bits=*/64, SemaRef .PerformImplicitConversion(N0->IgnoreImpCasts(), N0->getType(), - AssignmentAction::AA_Converting, + AssignmentAction::Converting, /*AllowExplicit=*/true) .get(), SemaRef); @@ -9796,7 +9795,7 @@ checkOpenMPLoop(OpenMPDirectiveKind DKind, Expr *CollapseLoopCountExpr, CurScope, Loc, BO_Mul, LastIteration32.get(), SemaRef .PerformImplicitConversion(N->IgnoreImpCasts(), N->getType(), - AssignmentAction::AA_Converting, + AssignmentAction::Converting, /*AllowExplicit=*/true) .get()); if (LastIteration64.isUsable()) @@ -9804,7 +9803,7 @@ checkOpenMPLoop(OpenMPDirectiveKind DKind, Expr *CollapseLoopCountExpr, CurScope, Loc, BO_Mul, LastIteration64.get(), SemaRef .PerformImplicitConversion(N->IgnoreImpCasts(), N->getType(), - AssignmentAction::AA_Converting, + AssignmentAction::Converting, /*AllowExplicit=*/true) .get()); } @@ -11544,7 +11543,7 @@ bool OpenMPAtomicUpdateChecker::checkStatement(Stmt *S, unsigned DiagId, if (Update.isInvalid()) return true; Update = SemaRef.PerformImplicitConversion(Update.get(), X->getType(), - AssignmentAction::AA_Casting); + AssignmentAction::Casting); if (Update.isInvalid()) return true; UpdateExpr = Update.get(); @@ -15661,7 +15660,7 @@ static bool findOMPAllocatorHandleT(Sema &S, SourceLocation Loc, break; } Res = S.PerformImplicitConversion(Res.get(), AllocatorHandleEnumTy, - AssignmentAction::AA_Initializing, + AssignmentAction::Initializing, /*AllowExplicit=*/true); if (!Res.isUsable()) { ErrorFound = true; @@ -15692,7 +15691,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPAllocatorClause(Expr *A, return nullptr; Allocator = SemaRef.PerformImplicitConversion( Allocator.get(), DSAStack->getOMPAllocatorHandleT(), - AssignmentAction::AA_Initializing, + AssignmentAction::Initializing, /*AllowExplicit=*/true); if (Allocator.isInvalid()) return nullptr; @@ -23102,7 +23101,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPAllocateClause( return nullptr; AllocatorRes = SemaRef.PerformImplicitConversion( AllocatorRes.get(), DSAStack->getOMPAllocatorHandleT(), - AssignmentAction::AA_Initializing, + AssignmentAction::Initializing, /*AllowExplicit=*/true); if (AllocatorRes.isInvalid()) return nullptr; @@ -23946,13 +23945,13 @@ ExprResult SemaOpenMP::ActOnOMPIteratorExpr(Scope *S, Expr *Begin = D.Range.Begin; if (!IsDeclTyDependent && Begin && !Begin->isTypeDependent()) { ExprResult BeginRes = SemaRef.PerformImplicitConversion( - Begin, DeclTy, AssignmentAction::AA_Converting); + Begin, DeclTy, AssignmentAction::Converting); Begin = BeginRes.get(); } Expr *End = D.Range.End; if (!IsDeclTyDependent && End && !End->isTypeDependent()) { ExprResult EndRes = SemaRef.PerformImplicitConversion( - End, DeclTy, AssignmentAction::AA_Converting); + End, DeclTy, AssignmentAction::Converting); End = EndRes.get(); } Expr *Step = D.Range.Step; diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp index 6057b2cfb5ec51..a3c13e21c709cb 100644 --- a/clang/lib/Sema/SemaOverload.cpp +++ b/clang/lib/Sema/SemaOverload.cpp @@ -1811,9 +1811,9 @@ ExprResult Sema::PerformImplicitConversion(Expr *From, QualType ToType, return ExprError(); // Objective-C ARC: Determine whether we will allow the writeback conversion. - bool AllowObjCWritebackConversion = getLangOpts().ObjCAutoRefCount && - (Action == AssignmentAction::AA_Passing || - Action == AssignmentAction::AA_Sending); + bool AllowObjCWritebackConversion = + getLangOpts().ObjCAutoRefCount && (Action == AssignmentAction::Passing || + Action == AssignmentAction::Sending); if (getLangOpts().ObjC) ObjC().CheckObjCBridgeRelatedConversions(From->getBeginLoc(), ToType, From->getType(), From); @@ -5984,7 +5984,7 @@ ExprResult Sema::PerformContextuallyConvertToBool(Expr *From) { ImplicitConversionSequence ICS = TryContextuallyConvertToBool(*this, From); if (!ICS.isBad()) return PerformImplicitConversion(From, Context.BoolTy, ICS, - AssignmentAction::AA_Converting); + AssignmentAction::Converting); if (!DiagnoseMultipleUserDefinedConversion(From, Context.BoolTy)) return Diag(From->getBeginLoc(), diag::err_typecheck_bool_condition) @@ -6150,8 +6150,8 @@ static ExprResult BuildConvertedConstantExpression(Sema &S, Expr *From, T, cast<NonTypeTemplateParmDecl>(Dest)), SourceLocation(), From); } else { - Result = S.PerformImplicitConversion(From, T, ICS, - AssignmentAction::AA_Converting); + Result = + S.PerformImplicitConversion(From, T, ICS, AssignmentAction::Converting); } if (Result.isInvalid()) return Result; @@ -6373,7 +6373,7 @@ ExprResult Sema::PerformContextuallyConvertToObjCPointer(Expr *From) { TryContextuallyConvertToObjCPointer(*this, From); if (!ICS.isBad()) return PerformImplicitConversion(From, Ty, ICS, - AssignmentAction::AA_Converting); + AssignmentAction::Converting); return ExprResult(); } @@ -14367,7 +14367,7 @@ Sema::CreateOverloadedUnaryOp(SourceLocation OpLoc, UnaryOperatorKind Opc, // operator node. ExprResult InputRes = PerformImplicitConversion( Input, Best->BuiltinParamTypes[0], Best->Conversions[0], - AssignmentAction::AA_Passing, + AssignmentAction::Passing, CheckedConversionKind::ForBuiltinOverloadedOp); if (InputRes.isInvalid()) return ExprError(); @@ -14829,7 +14829,7 @@ ExprResult Sema::CreateOverloadedBinOp(SourceLocation OpLoc, // operator node. ExprResult ArgsRes0 = PerformImplicitConversion( Args[0], Best->BuiltinParamTypes[0], Best->Conversions[0], - AssignmentAction::AA_Passing, + AssignmentAction::Passing, CheckedConversionKind::ForBuiltinOverloadedOp); if (ArgsRes0.isInvalid()) return ExprError(); @@ -14837,7 +14837,7 @@ ExprResult Sema::CreateOverloadedBinOp(SourceLocation OpLoc, ExprResult ArgsRes1 = PerformImplicitConversion( Args[1], Best->BuiltinParamTypes[1], Best->Conversions[1], - AssignmentAction::AA_Passing, + AssignmentAction::Passing, CheckedConversionKind::ForBuiltinOverloadedOp); if (ArgsRes1.isInvalid()) return ExprError(); @@ -15209,7 +15209,7 @@ ExprResult Sema::CreateOverloadedArraySubscriptExpr(SourceLocation LLoc, // operator node. ExprResult ArgsRes0 = PerformImplicitConversion( Args[0], Best->BuiltinParamTypes[0], Best->Conversions[0], - AssignmentAction::AA_Passing, + AssignmentAction::Passing, CheckedConversionKind::ForBuiltinOverloadedOp); if (ArgsRes0.isInvalid()) return ExprError(); @@ -15217,7 +15217,7 @@ ExprResult Sema::CreateOverloadedArraySubscriptExpr(SourceLocation LLoc, ExprResult ArgsRes1 = PerformImplicitConversion( Args[1], Best->BuiltinParamTypes[1], Best->Conversions[1], - AssignmentAction::AA_Passing, + AssignmentAction::Passing, CheckedConversionKind::ForBuiltinOverloadedOp); if (ArgsRes1.isInvalid()) return ExprError(); diff --git a/clang/lib/Sema/SemaPseudoObject.cpp b/clang/lib/Sema/SemaPseudoObject.cpp index fb4ad250f4f108..30ed47e6e56ec9 100644 --- a/clang/lib/Sema/SemaPseudoObject.cpp +++ b/clang/lib/Sema/SemaPseudoObject.cpp @@ -787,7 +787,7 @@ ExprResult ObjCPropertyOpBuilder::buildSet(Expr *op, SourceLocation opcLoc, if (opResult.isInvalid() || S.DiagnoseAssignmentResult(assignResult, opcLoc, paramType, op->getType(), opResult.get(), - AssignmentAction::AA_Assigning)) + AssignmentAction::Assigning)) return ExprError(); op = opResult.get(); diff --git a/clang/lib/Sema/SemaStmt.cpp b/clang/lib/Sema/SemaStmt.cpp index d36b518c6f248f..9664287b9a3fe9 100644 --- a/clang/lib/Sema/SemaStmt.cpp +++ b/clang/lib/Sema/SemaStmt.cpp @@ -3152,7 +3152,7 @@ Sema::ActOnIndirectGotoStmt(SourceLocation GotoLoc, SourceLocation StarLoc, return StmtError(); E = ExprRes.get(); if (DiagnoseAssignmentResult(ConvTy, StarLoc, DestTy, ETy, E, - AssignmentAction::AA_Passing)) + AssignmentAction::Passing)) return StmtError(); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits