https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86732
--- Comment #2 from Marc Glisse <glisse at gcc dot gnu.org> --- While I would also like to see this optimized better, ISTR that this was done on purpose, you may want to look at the old discussions. Some languages may have things set up to catch null dereferences, but that should be controlled by -fdelete-null-pointer-checks, -fnon-call-exceptions or some similar flag. Maybe that was just because Jeff doesn't like __builtin_unreachable (for security reasons).