This adds a missing accumulation to ret.
2021-02-22 Richard Biener <rguenther@suse.de>
PR tree-optimization/99165
* gimple-ssa-store-merging.c (pass_store_merging::process_store):
Accumulate changed to ret.
* g++.dg/pr99165.C: New testcase.
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 ();
--- /dev/null
+// { 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];