diff options
author | Andrew Pinski <apinski@marvell.com> | 2021-10-23 19:24:43 +0000 |
---|---|---|
committer | Andrew Pinski <apinski@marvell.com> | 2021-10-25 12:08:37 +0000 |
commit | 7518e4c2f0758daac5d650d400565cf49ac3c8c5 (patch) | |
tree | ceaf55f2846cfd5cb6bebfc0c827012b460a58b6 /gcc | |
parent | 0b028fb4989c2bdfaf474b4493c5926fb40da3c3 (diff) | |
download | gcc-7518e4c2f0758daac5d650d400565cf49ac3c8c5.zip gcc-7518e4c2f0758daac5d650d400565cf49ac3c8c5.tar.gz gcc-7518e4c2f0758daac5d650d400565cf49ac3c8c5.tar.bz2 |
Fix PR 102908: wrongly removing null pointer loads
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.
gcc/ChangeLog:
* tree-ssa-dce.c (simple_dce_from_worklist):
Check stmt_unremovable_because_of_non_call_eh_p also
before removing the statement.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/tree-ssa-dce.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c index 372e069..1281e67 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; |