https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58796
Jason Merrill <jason at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jason at gcc dot gnu.org
--- Comment #12 from Jason Merrill <jason at gcc dot gnu.org> ---
(In reply to Jonathan Wakely from comment #4)
> However with that patch the caught pointer is not null, so it's not right.
For a pointer, you just need to set thrown_ptr to null.
For a pointer to member it's trickier, since they are thrown by reference, and
we end up returning a pointer to the exception object. I suppose that since
nullptr has no actual value we can feel free to clobber the "value" of the
exception object before returning.
For a pointer to member function that's still problematic because the exception
object for 'throw nullptr' is currently one word, and a pointer to member
function is two. So I suppose we will need to allocate two words for 'throw
nullptr'. But clang doesn't do that; do they actually handle catching nullptr
as a pointer to member function?