[clang] [clang] Fix a crash when dynamic_cast-ing to a `final` class (PR #148088)

Oliver Hunt via cfe-commits cfe-commits at lists.llvm.org
Sun Jul 13 18:35:06 PDT 2025


================
@@ -2341,8 +2341,15 @@ llvm::Value *CodeGenFunction::EmitDynamicCast(Address ThisAddr,
   } else if (IsExact) {
     // If the destination type is effectively final, this pointer points to the
     // right type if and only if its vptr has the right value.
-    Value = CGM.getCXXABI().emitExactDynamicCast(
-        *this, ThisAddr, SrcRecordTy, DestTy, DestRecordTy, CastEnd, CastNull);
+    std::optional<llvm::Value *> ExactCast =
+        CGM.getCXXABI().emitExactDynamicCast(*this, ThisAddr, SrcRecordTy,
----------------
ojhunt wrote:

@efriedma-quic yeah, I was convinced that there must have been a reason this was structured in this way, but having looked at it again I can't work out how/why that would be the case.

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


More information about the cfe-commits mailing list