https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107803
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- So it's CCP which turns <bb 2> : __cancel_routine_8 = func; ... <bb 5> : __cancel_routine.0_1 = __cancel_routine_8; __cancel_routine.0_1 (0B); into <bb 5> : func (0B); but fails to invoke abnormal cleanup here. It's a general issue with the propagation engine.