On Wed, Mar 15, 2023 at 10:48:32AM +0000, Richard Biener wrote:
> use_after_inval_p uses stmt UIDs to speed up repeated dominance
> checks within a basic-block but it fails to assign UIDs to PHIs
> which means compares with PHIs in the same block get a random
> result.
> 
> The following factors renumber_gimple_stmt_uids to expose a new
> renumber_gimple_stmt_uids_in_block we can share.
> 
> This XFAILs the conditional loop case in gcc.dg/Wuse-after-free-2.c
> 
> Bootstrap and regtest running on x86_64-unknown-linux-gnu.  This
> makes 2/2 a net positive on the testsuite (the early waccess
> would not run into this bug)
> 
> OK if testing succeeds?  (we could also special-case PHIs somehow
> and assert we never get to compare two PHIs here)
> 
>       * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
>       * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
>       out from ...
>       (renumber_gimple_stmt_uids): ... here and
>       (renumber_gimple_stmt_uids_in_blocks): ... here.
>       * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
>       Use renumber_gimple_stmt_uids_in_block to also assign UIDs
>       to PHIs.
> 
>       * gcc.dg/Wuse-after-free-2.c: XFAIL conditional loop case.

LGTM.

        Jakub

Reply via email to