[libcxx-commits] [PATCH] D93186: [libc++abi] Simplify __gxx_personality_v0

Fangrui Song via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Sun Dec 13 15:57:03 PST 2020


MaskRay created this revision.
MaskRay added a reviewer: libc++abi.
MaskRay requested review of this revision.
Herald added a project: libc++abi.
Herald added a subscriber: libcxx-commits.
Herald added 1 blocking reviewer(s): libc++abi.

In three cases we call `scan_eh_tab` to parse LSDA:

- `actions & _UA_SEARCH_PHASE`
- `actions & _UA_CLEANUP_PHASE && actions & _UA_HANDLER_FRAME && !native_exception`
- `actions & _UA_CLEANUP_PHASE && !(actions & _UA_HANDLER_FRAME)`

Check `actions & _UA_CLEANUP_PHASE && actions & _UA_HANDLER_FRAME &&
native_exception` first, then we can move three `scan_eh_tab` onto one place.

Another simplification is that we can check whether the result of `scan_eh_tab`
is `_UA_CONTINUE_UNWIND` or `_UA_FATAL_PHASE1_ERROR` first. Then many of the
original checks will be dead and can thus be deleted.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D93186

Files:
  libcxxabi/src/cxa_personality.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D93186.311474.patch
Type: text/x-patch
Size: 6018 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20201213/e0d2ba0e/attachment.bin>


More information about the libcxx-commits mailing list