Previous "simplify scan_eh_tab" patch, https://reviews.llvm.org/D93190,
saves landingpad if and only if the target is not using SjLj exceptions.
However, the landingpad is used by SjLj exception handler also. This
patch changes to set landingpad for both exception handlers.
Details
- Reviewers
simoll k-ishizaka MaskRay ldionne compnerd mstorsjo smeenai - Group Reviewers
Restricted Project - Commits
- rG9d2740f33177: [libc++abi] Apply simplify scan_eh_tab to SjLj
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
MinGW toolchains can use sjlj; for x86 32 bit, sjlj is still the default in GCC (although many environments configure it to use dwarf instead of sjlj).
@mstorsjo Is it possible to test this on mingw with SjLj?
I've tested this on VE with SjLj. This patch fixes problems in check-libcxxabi and check-libcxx caused by previous patch. I prefer few more tests.
I'm testing, but it seems like SjLj for mingw targets broke somewhere between 11.0.0 and 12.0.0 - currently trying to look into whether it is a code generation bug or a bug in libcxxabi/libunwind somewhere (and if it's a bug that is fixed by this patch).
I can confirm that this fixes sjlj unwinding in mingw configurations too, working just as well as it did in LLVM 11.0.0. Thanks!
(This would be a great thing to backport to the ongoing 13.x branch IMO.)