https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89280

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
The issue is that r8 () is a source of abnormal edges which makes the abnormal
dispatcher reachable.  I think the testcase becomes clearer when one uses
setjmp instead of vfork since I'm not sure why we have full abnormal handling
for vfork at all.

It might work if we build the CFG first w/o any abnormal edges, then prune
unreachable blocks, and only after that do abnormal edge creation.

Also we could then build dominators on the CFG w/o abnormal edges and use
simple reachability analysis on that to determine if we need to add
outgoing abnormal edges to calls or not (like in this case the one out
of r8() is not needed).

OTOH with non-local goto the reachability analysis w/o abnormals would be
flawed...

Reply via email to