diff options
author | Jakub Jelinek <jakub@redhat.com> | 2021-05-03 12:03:02 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2021-05-03 12:03:02 +0200 |
commit | 80bbb7ff83d81544b09820428bdd7db9f50fe362 (patch) | |
tree | 6f6e85360331d36de92133d1000673a6635a2d1f /gcc | |
parent | 5f5e3854c9b2d0ca169ea201a7498646e0654e76 (diff) | |
download | gcc-80bbb7ff83d81544b09820428bdd7db9f50fe362.zip gcc-80bbb7ff83d81544b09820428bdd7db9f50fe362.tar.gz gcc-80bbb7ff83d81544b09820428bdd7db9f50fe362.tar.bz2 |
tree-ssa-dse: Fix up go.test/test/fixedbugs/issue16095.go miscompilation [PR100382]
The new DCE code inside of tree DSE removes in -fnon-call-exceptions
go code a load from NULL pointer the testcase relies on throwing an
exception and so the test hangs.
The following patch just repeats a check that e.g. tree-ssa-dce.c
uses to prevent this.
2021-05-03 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/100382
* tree-ssa-dse.c: Include tree-eh.h.
(dse_dom_walker::before_dom_children): Don't remove stmts if
stmt_unremovable_because_of_non_call_eh_p is true.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/tree-ssa-dse.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/tree-ssa-dse.c b/gcc/tree-ssa-dse.c index aecf6ab..76929fa 100644 --- a/gcc/tree-ssa-dse.c +++ b/gcc/tree-ssa-dse.c @@ -39,6 +39,7 @@ along with GCC; see the file COPYING3. If not see #include "builtins.h" #include "gimple-fold.h" #include "gimplify.h" +#include "tree-eh.h" /* This file implements dead store elimination. @@ -1193,7 +1194,8 @@ dse_dom_walker::before_dom_children (basic_block bb) /* When we remove dead stores make sure to also delete trivially dead SSA defs. */ if (has_zero_uses (DEF_FROM_PTR (def_p)) - && !gimple_has_side_effects (stmt)) + && !gimple_has_side_effects (stmt) + && !stmt_unremovable_because_of_non_call_eh_p (cfun, stmt)) { if (dump_file && (dump_flags & TDF_DETAILS)) { |