[clang] [Clang] Fix missing vtable for `dynamic_cast<FinalClass *>(this)` in a function template (PR #202594)

Corentin Jabot via cfe-commits cfe-commits at lists.llvm.org
Mon Jun 22 05:01:49 PDT 2026


================
@@ -1652,6 +1652,17 @@ namespace {
         SmallVectorImpl<QualType> &PTypes,
         SmallVectorImpl<ParmVarDecl *> &TransParams,
         Sema::ExtParameterInfoBuilder &PInfos);
+
+    ExprResult TransformCXXDynamicCastExpr(CXXDynamicCastExpr *E) {
+      ExprResult Ret = inherited::TransformCXXDynamicCastExpr(E);
+      if (Ret.isInvalid())
+        return Ret;
+      if (auto *DestDecl = Ret.get()->getType()->getPointeeCXXRecordDecl()) {
+        if (DestDecl->isEffectivelyFinal())
----------------
cor3ntin wrote:

```suggestion
      if (auto *DestDecl = Ret.get()->getType()->getPointeeCXXRecordDecl(); DestDecl && DestDecl->isEffectivelyFinal())
```

https://github.com/llvm/llvm-project/pull/202594


More information about the cfe-commits mailing list