https://github.com/kazutakahirata created 
https://github.com/llvm/llvm-project/pull/225319

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>

We must use dyn_cast_if_present here because the operands can be null,
which I have verified with assert(!isNull()) on check-clang.

Assisted-by: Antigravity


>From 1b536d9b7b3821a9c767ad566e3cff5e9685ea22 Mon Sep 17 00:00:00 2001
From: Kazu Hirata <[email protected]>
Date: Mon, 21 Sep 2026 13:17:23 -0700
Subject: [PATCH] [clang] Migrate away from PointerUnion::dyn_cast (NFC)

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>

We must use dyn_cast_if_present here because the operands can be null,
which I have verified with assert(!isNull()) on check-clang.

Assisted-by: Antigravity
---
 clang/include/clang/AST/DeclFriend.h | 2 +-
 clang/lib/Sema/SemaConcept.cpp       | 2 +-
 clang/lib/Sema/SemaOverload.cpp      | 6 +++---
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/clang/include/clang/AST/DeclFriend.h 
b/clang/include/clang/AST/DeclFriend.h
index 6d2659337a9c8..607930a35b32b 100644
--- a/clang/include/clang/AST/DeclFriend.h
+++ b/clang/include/clang/AST/DeclFriend.h
@@ -94,7 +94,7 @@ class FriendDecl : public Decl {
   /// is used for elaborated-type-specifiers and, in C++0x, for
   /// arbitrary friend type declarations.
   TypeSourceInfo *getFriendType() const {
-    return Friend.dyn_cast<TypeSourceInfo*>();
+    return dyn_cast_if_present<TypeSourceInfo *>(Friend);
   }
 
   /// If this friend declaration doesn't name a type, return the inner
diff --git a/clang/lib/Sema/SemaConcept.cpp b/clang/lib/Sema/SemaConcept.cpp
index 611d8b0545011..27c61586020ba 100644
--- a/clang/lib/Sema/SemaConcept.cpp
+++ b/clang/lib/Sema/SemaConcept.cpp
@@ -1295,7 +1295,7 @@ bool Sema::CheckConstraintSatisfaction(
     OutSatisfaction.IsSatisfied = true;
     return false;
   }
-  const auto *Template = Entity.dyn_cast<const NamedDecl *>();
+  const auto *Template = dyn_cast_if_present<const NamedDecl *>(Entity);
   if (!Template) {
     return ::CheckConstraintSatisfaction(
         *this, nullptr, AssociatedConstraints, TemplateArgsLists,
diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp
index e12b727274408..ac78183564d47 100644
--- a/clang/lib/Sema/SemaOverload.cpp
+++ b/clang/lib/Sema/SemaOverload.cpp
@@ -12448,9 +12448,9 @@ static void DiagnoseBadDeduction(Sema &S, NamedDecl 
*Found, Decl *Templated,
                                      TemplateSpecCandidateSetKind::Normal) {
   TemplateParameter Param = DeductionFailure.getTemplateParameter();
   NamedDecl *ParamD;
-  (ParamD = Param.dyn_cast<TemplateTypeParmDecl*>()) ||
-  (ParamD = Param.dyn_cast<NonTypeTemplateParmDecl*>()) ||
-  (ParamD = Param.dyn_cast<TemplateTemplateParmDecl*>());
+  (ParamD = dyn_cast_if_present<TemplateTypeParmDecl *>(Param)) ||
+      (ParamD = dyn_cast_if_present<NonTypeTemplateParmDecl *>(Param)) ||
+      (ParamD = dyn_cast_if_present<TemplateTemplateParmDecl *>(Param));
   switch (DeductionFailure.getResult()) {
   case TemplateDeductionResult::Success:
     llvm_unreachable(

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to