From: Richard Biener Date: Mon, 22 Feb 2021 07:36:55 +0000 (+0100) Subject: tree-optimization/99165 - fix ICE in store-merging w/ non-call EH X-Git-Tag: upstream/12.2.0~9637 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8a8eee6bdb906788992622715bf97aff984ac989;p=platform%2Fupstream%2Fgcc.git tree-optimization/99165 - fix ICE in store-merging w/ non-call EH This adds a missing accumulation to ret. 2021-02-22 Richard Biener PR tree-optimization/99165 * gimple-ssa-store-merging.c (pass_store_merging::process_store): Accumulate changed to ret. * g++.dg/pr99165.C: New testcase. --- diff --git a/gcc/gimple-ssa-store-merging.c b/gcc/gimple-ssa-store-merging.c index b4c5e8e..213c155 100644 --- a/gcc/gimple-ssa-store-merging.c +++ b/gcc/gimple-ssa-store-merging.c @@ -5230,7 +5230,7 @@ pass_store_merging::process_store (gimple *stmt) if (idx >= (unsigned)param_max_store_chains_to_track || (n_stores + (*e)->m_store_info.length () > (unsigned)param_max_stores_to_track)) - terminate_and_process_chain (*e); + ret |= terminate_and_process_chain (*e); else { n_stores += (*e)->m_store_info.length (); diff --git a/gcc/testsuite/g++.dg/pr99165.C b/gcc/testsuite/g++.dg/pr99165.C new file mode 100644 index 0000000..70ffd03 --- /dev/null +++ b/gcc/testsuite/g++.dg/pr99165.C @@ -0,0 +1,7 @@ +// { dg-do compile } +// { dg-options "-O2 -fnon-call-exceptions --param=max-stores-to-track=2" } + +struct A { + A() : i() {} + int i; +} *ap2 = new A[3];