https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117665
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Last reconfirmed| |2024-11-19 Status|UNCONFIRMED |NEW --- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (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. Slightly more reduced and cleaned up: ``` static inline void h(int __b) { __builtin_aarch64_im_lane_boundsi(2, 1, __b); __builtin_unreachable(); } int _setjmp(); void hh() { if (_setjmp()) h(1); } ``` what __builtin_aarch64_im_lane_boundsi checks is the 3rd argument is between 0 and 2/1 (that is 1st argument divided by 2nd) .