[clang] [CodeGen][ObjC] Initial WebAssembly Support for GNUstep (PR #169043)
Heejin Ahn via cfe-commits
cfe-commits at lists.llvm.org
Tue Dec 16 22:55:47 PST 2025
aheejin wrote:
@rjmccall
> I don't know why the GNUStep runtime needs different ObjC and ObjC++ personality functions. The ObjC++ personality has to support the complete superset of exception clauses (a single call site can have handlers for both C++ and ObjC exception types). It should therefore still be usable in either pure ObjC or pure C++.
>
> In theory, the ObjC++ personality needs to be able to distinguish ObjC and C++ exceptions, so using it instead of a single-language personality could require a less compact LSDA format. In practice, they use the exact same format, and AFAIK the exception types are always distinguished in a more subtle way. I don't know the exact details of what GNUStep does, but the Apple ObjC runtime just provides a v-table for ObjC exception RTTI objects that implements the private exception-matching virtual methods on type_info differently. (I'm not even sure LLVM _supports_ emitting a different LSDA format for different personalities.)
If ObjC can share libc++abi (with little `#ifdef`s here and there I suppose) it will be simpler and we don't need to change much (if at all) in WasmEHPrepare.
https://github.com/llvm/llvm-project/pull/169043
More information about the cfe-commits
mailing list