https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117665
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #3) > (In reply to Sam James from comment #2) > > I assume it's because of the abnormal edge from setjmp? > > It is also due to this __builtin_aarch64_im_lane_boundsi being folded away > after inlining. Oh the problem is in einline. It inlines h into hh and folds __builtin_aarch64_im_lane_boundsi into a GIMPLE_NOP BUT then does not purge the abnormal branch correctly. ;; basic block 6, loop depth 0, maybe hot ;; prev block 5, next block 7, flags: (NEW, REACHABLE) ;; pred: 5 (TRUE_VALUE) GIMPLE_NOP ;; succ: 7 [always] (FALLTHRU) ;; 4 [always] (ABNORMAL) fold_marked_statements does not call gimple_purge_dead_abnormal_call_edges only gimple_purge_dead_eh_edges . Let me handle that but won't be until tomorrow. I am also not 100% sure it will fix the issue fully.