https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83219
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- pass_sanopt it seems. Quite late. So how is this supposed to work? The testcase is int e; int main (void) { return e ? 0 : (__builtin_unreachable (), 1); } and I bet that if we do int e; int main (void) { if (e) return e; __builtin_unreachable (); } we'd optimize it before with regular VRP. Yes, we do. So - why are __builtin_unreachable ()s not instrumented early? They are, after all, no longer "unreachable".