rjmccall added a comment.

In https://reviews.llvm.org/D49718#1173038, @ahatanak wrote:

> Note that in order to destruct C++ objects, I'm using pushDestroy which 
> pushes a NormalCleanup when exception handling isn't enabled. This is 
> different from PushDestructorCleanup which always pushes a 
> NormalAndEHCleanup, but I think using pushDestroy is more correct since I 
> don't think we need to do a cleanup on the EH path when exception isn't 
> enabled.


I don't think it makes any difference because we shouldn't be emitting cleanup 
paths when exceptions are disabled.  I don't think there's an intended 
difference in semantics between those two destructor-cleanup paths, at least.



================
Comment at: lib/CodeGen/CGBlocks.cpp:1603
+  };
+}
+
----------------
There's already a `CallBlockRelease` cleanup that can presumably be unified 
with this.


================
Comment at: lib/CodeGen/CGBlocks.cpp:1905
+    case BlockCaptureEntityKind::None:
+      llvm_unreachable("unexpected BlockCaptureEntityKind");
     }
----------------
These two switches differ only in (1) what kind of cleanup they push and (2) a 
small optimization that can easily be conditionalized by the request to push an 
EH-only cleanup.


Repository:
  rC Clang

https://reviews.llvm.org/D49718



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to