Hi. The patch is very similar to r236460 where we should release dominance info when the CFG is modified.
Patch can bootstrap on x86_64-linux-gnu and survives regression tests. Ready to be installed? Thanks, Martin gcc/ChangeLog: 2019-02-12 Martin Liska <mli...@suse.cz> PR rtl-optimization/89242 * dce.c (delete_unmarked_insns): Call free_dominance_info we process a transformation. gcc/testsuite/ChangeLog: 2019-02-12 Martin Liska <mli...@suse.cz> PR rtl-optimization/89242 * g++.dg/pr89242.C: New test. --- gcc/dce.c | 1 + gcc/testsuite/g++.dg/pr89242.C | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 gcc/testsuite/g++.dg/pr89242.C
diff --git a/gcc/dce.c b/gcc/dce.c index cb18e81592a..8fb109c7388 100644 --- a/gcc/dce.c +++ b/gcc/dce.c @@ -652,6 +652,7 @@ delete_unmarked_insns (void) { gcc_assert (can_alter_cfg); delete_unreachable_blocks (); + free_dominance_info (CDI_DOMINATORS); } } diff --git a/gcc/testsuite/g++.dg/pr89242.C b/gcc/testsuite/g++.dg/pr89242.C new file mode 100644 index 00000000000..a702fef4f31 --- /dev/null +++ b/gcc/testsuite/g++.dg/pr89242.C @@ -0,0 +1,15 @@ +// { dg-do compile } +// { dg-options "-fno-rerun-cse-after-loop -ftrapv -fno-tree-loop-optimize -fdelete-dead-exceptions -fno-forward-propagate -fnon-call-exceptions -O2" } + +void bar (int n, char *p) +{ + try + { + n++; + for (int i = 0; i < n - 1; i++) + p[i]; + } + catch (...) + {} +} +