aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2021-05-03 12:03:02 +0200
committerJakub Jelinek <jakub@redhat.com>2021-05-03 12:03:02 +0200
commit80bbb7ff83d81544b09820428bdd7db9f50fe362 (patch)
tree6f6e85360331d36de92133d1000673a6635a2d1f /gcc
parent5f5e3854c9b2d0ca169ea201a7498646e0654e76 (diff)
downloadgcc-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.c4
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))
{