llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Kazu Hirata (kazutakahirata) <details> <summary>Changes</summary> Note that PointerUnion::dyn_cast has been soft deprecated in PointerUnion.h: // FIXME: Replace the uses of is(), get() and dyn_cast() with // isa<T>, cast<T> and the llvm::dyn_cast<T> Literal migration would result in dyn_cast_if_present (see the definition of PointerUnion::dyn_cast), but this patch uses dyn_cast on UnexpandedParameterPack::first because it is always nonnull. Specifically, UnexpandedParameterPack is constructed only in the following places, all of which store a nonnull pointer in first, and first is never modified afterward: - CollectUnexpandedParameterPacksVisitor::addUnexpanded in SemaTemplateVariadic.cpp - TransformLambdaExpr in TreeTransform.h - TransformSizeOfPackExpr in TreeTransform.h Assisted-by: Antigravity --- Full diff: https://github.com/llvm/llvm-project/pull/225614.diff 4 Files Affected: - (modified) clang/lib/Sema/SemaTemplate.cpp (+1-1) - (modified) clang/lib/Sema/SemaTemplateInstantiate.cpp (+1-1) - (modified) clang/lib/Sema/SemaTemplateVariadic.cpp (+14-19) - (modified) clang/lib/Sema/TreeTransform.h (+1-1) ``````````diff diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp index 466515550381a..593bfb051dfa1 100644 --- a/clang/lib/Sema/SemaTemplate.cpp +++ b/clang/lib/Sema/SemaTemplate.cpp @@ -5958,7 +5958,7 @@ bool Sema::CheckTemplateArgumentList( llvm::SmallVector<UnexpandedParameterPack> Unexpanded; collectUnexpandedParameterPacks(TL.getPatternLoc(), Unexpanded); for (const auto &UPP : Unexpanded) { - auto *TST = UPP.first.dyn_cast<const TemplateSpecializationType *>(); + auto *TST = dyn_cast<const TemplateSpecializationType *>(UPP.first); if (!TST) continue; assert(isPackProducingBuiltinTemplateName(TST->getTemplateName())); diff --git a/clang/lib/Sema/SemaTemplateInstantiate.cpp b/clang/lib/Sema/SemaTemplateInstantiate.cpp index bbca1267461e4..06ea12ca7bd73 100644 --- a/clang/lib/Sema/SemaTemplateInstantiate.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiate.cpp @@ -3406,7 +3406,7 @@ PreparePackForExpansion(Sema &S, const CXXBaseSpecifier &Base, // that required a substituion first. bool SawPackTypes = llvm::any_of(Unexpanded, [](UnexpandedParameterPack P) { - return P.first.dyn_cast<const SubstBuiltinTemplatePackType *>(); + return isa<const SubstBuiltinTemplatePackType *>(P.first); }); if (!SawPackTypes) { Info.Expand = false; diff --git a/clang/lib/Sema/SemaTemplateVariadic.cpp b/clang/lib/Sema/SemaTemplateVariadic.cpp index 3235750f408ff..bbac53b5b2acf 100644 --- a/clang/lib/Sema/SemaTemplateVariadic.cpp +++ b/clang/lib/Sema/SemaTemplateVariadic.cpp @@ -505,10 +505,10 @@ Sema::DiagnoseUnexpandedParameterPacks(SourceLocation Loc, for (unsigned I = 0, N = Unexpanded.size(); I != N; ++I) { IdentifierInfo *Name = nullptr; - if (const TemplateTypeParmType *TTP - = Unexpanded[I].first.dyn_cast<const TemplateTypeParmType *>()) + if (const TemplateTypeParmType *TTP = + dyn_cast<const TemplateTypeParmType *>(Unexpanded[I].first)) Name = TTP->getIdentifier(); - else if (NamedDecl *ND = Unexpanded[I].first.dyn_cast<NamedDecl *>()) + else if (NamedDecl *ND = dyn_cast<NamedDecl *>(Unexpanded[I].first)) Name = ND->getIdentifier(); if (Name && NamesKnown.insert(Name).second) @@ -583,7 +583,7 @@ bool Sema::DiagnoseUnexpandedParameterPackInRequiresExpr(RequiresExpr *RE) { llvm::SmallPtrSet<NamedDecl *, 8> ParmSet(llvm::from_range, Parms); SmallVector<UnexpandedParameterPack, 2> UnexpandedParms; for (auto Parm : Unexpanded) - if (ParmSet.contains(Parm.first.dyn_cast<NamedDecl *>())) + if (ParmSet.contains(dyn_cast<NamedDecl *>(Parm.first))) UnexpandedParms.push_back(Parm); if (UnexpandedParms.empty()) return false; @@ -875,13 +875,12 @@ bool Sema::CheckParameterPacksForExpansion( FunctionParmPackExpr *BindingPack = nullptr; std::optional<unsigned> NumPrecomputedArguments; - if (auto *TTP = ParmPack.first.dyn_cast<const TemplateTypeParmType *>()) { + if (auto *TTP = dyn_cast<const TemplateTypeParmType *>(ParmPack.first)) { Depth = TTP->getDepth(); Index = TTP->getIndex(); Name = TTP->getIdentifier(); - } else if (auto *TST = - ParmPack.first - .dyn_cast<const TemplateSpecializationType *>()) { + } else if (auto *TST = dyn_cast<const TemplateSpecializationType *>( + ParmPack.first)) { assert(isPackProducingBuiltinTemplateName(TST->getTemplateName())); // Delay expansion, substitution is required to know the size. ShouldExpand = false; @@ -896,9 +895,8 @@ bool Sema::CheckParameterPacksForExpansion( : EllipsisLoc, diag::err_unsupported_builtin_template_pack_expansion) << TST->getTemplateName(); - } else if (auto *S = - ParmPack.first - .dyn_cast<const SubstBuiltinTemplatePackType *>()) { + } else if (auto *S = dyn_cast<const SubstBuiltinTemplatePackType *>( + ParmPack.first)) { Name = nullptr; NumPrecomputedArguments = S->getNumArgs(); } else { @@ -1088,20 +1086,17 @@ UnsignedOrNone Sema::getNumArgumentsInExpansionFromUnexpanded( unsigned Index; if (const TemplateTypeParmType *TTP = - Unexpanded[I].first.dyn_cast<const TemplateTypeParmType *>()) { + dyn_cast<const TemplateTypeParmType *>(Unexpanded[I].first)) { Depth = TTP->getDepth(); Index = TTP->getIndex(); - } else if (auto *TST = - Unexpanded[I] - .first.dyn_cast<const TemplateSpecializationType *>()) { + } else if (auto *TST = dyn_cast<const TemplateSpecializationType *>( + Unexpanded[I].first)) { // This is a dependent pack, we are not ready to expand it yet. assert(isPackProducingBuiltinTemplateName(TST->getTemplateName())); (void)TST; return std::nullopt; - } else if (auto *PST = - Unexpanded[I] - .first - .dyn_cast<const SubstBuiltinTemplatePackType *>()) { + } else if (auto *PST = dyn_cast<const SubstBuiltinTemplatePackType *>( + Unexpanded[I].first)) { assert((!Result || *Result == PST->getNumArgs()) && "inconsistent pack sizes"); Result = PST->getNumArgs(); diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index 942fb586b1f23..8cd2e2e62a81c 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -5466,7 +5466,7 @@ bool TreeTransform<Derived>::PreparePackForExpansion(TemplateArgumentLoc In, // that required a substituion first. bool SawPackTypes = llvm::any_of(Unexpanded, [](UnexpandedParameterPack P) { - return P.first.dyn_cast<const SubstBuiltinTemplatePackType *>(); + return isa<const SubstBuiltinTemplatePackType *>(P.first); }); if (!SawPackTypes) { Info.Expand = false; `````````` </details> https://github.com/llvm/llvm-project/pull/225614 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
