https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111515
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> --- OTOH the eliminated branch is if (aj_6 < 0) goto <bb 6>; [INV] else goto <bb 7>; [INV] <bb 6> : __builtin_unreachable (); which isn't too interesting to eliminate as we'll remove it from all paths later anyway. Possibly worth special-casing and might avoid some threading around assert() calls implemented this way. Threads around abort () are still useful as we keep them. So not sure if relevant in practice and thus worth the trouble.