On Sun, Oct 24, 2021 at 11:28 AM apinski--- via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > From: Andrew Pinski <apin...@marvell.com> > > Just like PR 100382, here we have a DCE removing a > null pointer load which is needed still. > In this case, execute_fixup_cfg removes a store (correctly) > and then removes the null load (incorrectly) due to > not checking stmt_unremovable_because_of_non_call_eh_p. > This patch adds the check in the similar way as the patch > to fix PR 100382 did.
OK. Thanks, Richard. > gcc/ChangeLog: > > * tree-ssa-dce.c (simple_dce_from_worklist): > Check stmt_unremovable_because_of_non_call_eh_p also > before removing the statement. > --- > gcc/tree-ssa-dce.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c > index 372e0691ae6..1281e67489c 100644 > --- a/gcc/tree-ssa-dce.c > +++ b/gcc/tree-ssa-dce.c > @@ -1828,6 +1828,11 @@ simple_dce_from_worklist (bitmap worklist) > if (gimple_has_side_effects (t)) > continue; > > + /* Don't remove statements that are needed for non-call > + eh to work. */ > + if (stmt_unremovable_because_of_non_call_eh_p (cfun, t)) > + continue; > + > /* Add uses to the worklist. */ > ssa_op_iter iter; > use_operand_p use_p; > -- > 2.17.1 >