On 9/26/24 5:06 AM, Richard Biener wrote:
When path isolation performs CFG manipulations (block splitting) it
fails to update post-dominators it computes on-demand.  That both
runs into dominance verification issues when we compute post-dominators
again and possibly accessing missing or broken post-dominance data
when checking is disabled.  The following attempts to get rid of
post-dominator use by approximating always-executed with dominating
function exit instead of post-dominating function entry.  For this to
work we have to add fake exit edges.

Bootstrapped and tested on x86_64-unknown-linux-gnu.

I'll push this later if nobody has comments.

Thanks,
Richard.

        PR tree-optimization/116850
        * gimple-ssa-isolate-paths.cc (warn_return_addr_local): Use
        dominance and not post-dominance to compute maybe.
        (gimple_ssa_isolate_erroneous_paths): Add/remove fake exit edges.

        * gcc.dg/pr116850.c: New testcase.
So this phase doesn't really do any CFG manipulations, so I assume you're referring to the other parts of path isolation mucking around with the CFG and in turn causing mis-beavhior in the warn_return_addr_local path?

My worry with "approximating always executed" is that we conditionally adjust the return statement if !maybe.

jeff

Reply via email to