================
@@ -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,
----------------
efriedma-quic wrote:

Can we restructure this code in a way that's easier to read?

Like, maybe split emitExactDynamicCast into two functions: one to compute the 
offset, and one to actually do the cast.  If we fail to compute the offset, we 
can skip all the work constructing the control flow, because the result is 
always just null.

https://github.com/llvm/llvm-project/pull/148088
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to