================
@@ -997,10 +1016,37 @@ class CIRGenFunction : public CIRGenTypeCache {
     cgm.errorNYI("pushFullExprCleanup in conditional branch");
   }
 
+  /// Queue a cleanup to be pushed after finishing the current full-expression.
+  /// This serializes the cleanup into a byte buffer
+  /// (lifetimeExtendedCleanupStack) so that popCleanupBlocks can later copy it
+  /// onto the EH scope stack for the enclosing scope. This approach is modeled
+  /// after classic codegen's pushCleanupAfterFullExprWithActiveFlag. The
+  /// byte-buffer serialization looks low-level, but it is needed because
+  /// multiple unrelated cleanup types (DestroyObject, CallLifetimeEnd,
+  /// CallObjCArcUse in classic codegen) all flow through this path, and the
+  /// polymorphic Cleanup objects are POD-like by contract, making the
----------------
erichkeane wrote:

POD isn't a thing anymore :) 

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

Reply via email to