https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106866
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |hubicka at gcc dot gnu.org --- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- So somehow we late figure bar() doesn't return abnormally and thus DSE eliminates a call to it but doesn't trigger if (need_ab_cleanup && stmt_can_make_abnormal_goto (stmt)) bitmap_set_bit (need_ab_cleanup, bb->index); which means when we either set ECF_LEAF to the function or cleared cfun->calls_setjmp (the recursive invocation) we should have pruned abnormal edges but we failed to. That ends us with a block like ;; basic block 4, loop depth 0 ;; pred: 12 ;; 5 # uninitialized_2(ab) = PHI <uninitialized_5(12), uninitialized_3(ab)(5)> goto <bb 11>; [99.96%] ;; succ: 11 ;; 5 where the 4->5 edge is abnormal but there's no stmt in this block that could be responsible for it. We also fail to verify ICE here.