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.

Reply via email to