https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108868
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org Status|NEW |ASSIGNED --- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> --- Btw, there's also cleanup_call_ctrl_altering_flag in CFG cleanup which cleans up the flag on the _last_ stmt of blocks. Dependent on whether fork/setjmp is last it would clean the flag based on outgoing edges not being abnormal. That's another reason to not abuse the ctrl-altering flag here. I'm going to do the reversion now - is there a runtime testcase we can add for this PR or should we solely rely on the abnormal dispatcher presence? Btw, if the testcase would be just void foo () { if (!vfork ()) _exit (0); } then it's IMHO OK to elide the abnormal edges? There's still the issue of clobbering if RTL doesn't have a REG_SETJMP note on the vfork (it lacks the abnormal edges preventing code motion I think). I'm going to revert the offending rev. now.