[clang] [clang] Fix crash in dynamic_cast final class optimization (PR #152076)
Oliver Hunt via cfe-commits
cfe-commits at lists.llvm.org
Wed Aug 6 01:15:40 PDT 2025
================
@@ -2294,6 +2294,18 @@ llvm::Value *CodeGenFunction::EmitDynamicCast(Address ThisAddr,
DestRecordTy->getAsCXXRecordDecl()->isEffectivelyFinal() &&
CGM.getCXXABI().shouldEmitExactDynamicCast(DestRecordTy);
+ std::optional<CGCXXABI::ExactDynamicCastInfo> ExactCastInfo;
+ if (IsExact) {
+ ExactCastInfo = CGM.getCXXABI().getExactDynamicCastInfo(SrcRecordTy, DestTy,
+ DestRecordTy);
+ if (!ExactCastInfo) {
+ llvm::Value *NullValue = EmitDynamicCastToNull(*this, DestTy);
+ if (!Builder.GetInsertBlock())
+ EmitBlock(createBasicBlock("dynamic_cast.always_fails"));
----------------
ojhunt wrote:
done.
https://github.com/llvm/llvm-project/pull/152076
More information about the cfe-commits
mailing list