[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