[PATCH] D47233: [CodeGen] Emit MSVC RTTI for Obj-C EH types
John McCall via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Jun 11 18:56:54 PDT 2018
rjmccall added a comment.
In https://reviews.llvm.org/D47233#1129110, @smeenai wrote:
> Wrapping an Objective-C exception inside a C++ exception means dynamically constructing a C++ exception object and traversing the class hierarchy of the thrown Obj-C object to populate the catchable types array of the C++ exception. Microsoft's C++ runtime will perform the appropriate catch type comparisons, and this patch makes the compiler emit the right typeinfos into the exception handling tables for all of that to work. https://github.com/Microsoft/libobjc2/blob/f2e4c5ac4b3ac17f413a38bbc7ee1242f9efd0f7/msvc/eh_winobjc.cc#L116 is how WinObjC does this wrapping, for example.
I see. The idea of creating the type descriptors and mangled names ad-hoc for the catchable-types array is clever, and it's nice that the ABI is defined in a way that makes that work. (Expensive, but hey, it's the exceptions path.)
Alright, now that I understand why this only matters for the catch side, I'll take a look at the patch.
Repository:
rC Clang
https://reviews.llvm.org/D47233
More information about the cfe-commits
mailing list