You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When run against the trunk libc++abi. Note that the trunk libc++abi won't run with the trunk libc++, but this will change soon (within a few days).
When the noexcept is violated, clang currently outputs a call to std::terminate(). Just prior to that call clang needs to call __cxa_begin_catch(unwind_arg) to make this work.
Reference [except.handle]/p7:
Also, an implicit handler is considered active when std::terminate() or std::unexpected() is entered due to a throw.
With the Itanium ABI, the way you make a handler active is by calling __cxa_begin_catch(unwind_arg).
The text was updated successfully, but these errors were encountered:
I'm just now noticing that we have the same issue when ever clang calls terminate for any reason during stack unwinding. I.e. if a cleanup section throws when it shouldn't, and clang calls terminate, call __cxa_begin_catch first!
Extended Description
This test:
Should output:
When run against the trunk libc++abi. Note that the trunk libc++abi won't run with the trunk libc++, but this will change soon (within a few days).
When the noexcept is violated, clang currently outputs a call to
std::terminate()
. Just prior to that call clang needs to call__cxa_begin_catch(unwind_arg)
to make this work.Reference [except.handle]/p7:
Also, an implicit handler is considered active when
std::terminate()
orstd::unexpected()
is entered due to a throw.With the Itanium ABI, the way you make a handler active is by calling
__cxa_begin_catch(unwind_arg)
.The text was updated successfully, but these errors were encountered: