+2020-03-16 Bin Cheng <bin.cheng@linux.alibaba.com>
+
+ PR tree-optimization/94125
+ * tree-loop-distribution.c
+ (loop_distribution::break_alias_scc_partitions): Update post order
+ number for merged scc.
+
2020-03-15 H.J. Lu <hongjiu.lu@intel.com>
PR target/89229
+2020-03-16 Bin Cheng <bin.cheng@linux.alibaba.com>
+
+ PR tree-optimization/94125
+ * gcc.dg/tree-ssa/pr94125.c: New test.
+
2020-03-15 H.J. Lu <hongjiu.lu@intel.com>
PR target/89229
--- /dev/null
+/* { dg-do run } */
+/* { dg-options "-O3" } */
+
+unsigned char b, f;
+short d[1][8][1], *g = &d[0][3][0];
+
+void __attribute__((noinline)) foo ()
+{
+ int k[256] = { 0, 0, 0, 4, 0, 0 };
+ for (int c = 252; c >= 0; c--)
+ {
+ b = f;
+ *g = k[c + 3];
+ k[c + 1] = 0;
+ }
+ for (int i = 0; i < 8; i++)
+ if (d[0][i][0] != 0)
+ __builtin_abort ();
+}
+
+void __attribute__((noinline)) bar ()
+{
+ int k[256] = { 0, 0, 0, 4, 0, 0 };
+ k[255] = 4;
+ for (int c = 0; c <=252; c++)
+ {
+ b = f;
+ *g = k[c + 3];
+ k[c + 1] = 0;
+ }
+ for (int i = 0; i < 8; i++)
+ if ((i == 3 && d[0][i][0] != 4) || (i != 3 && d[0][i][0] != 0))
+ __builtin_abort ();
+}
+
+int main ()
+{
+ foo ();
+ bar ();
+ return 0;
+}
if (cbdata.vertices_component[k] != i)
continue;
- /* Update postorder number so that merged reduction partition is
- sorted after other partitions. */
- if (!partition_reduction_p (first)
- && partition_reduction_p (partition))
- {
- gcc_assert (pg->vertices[k].post < pg->vertices[j].post);
- pg->vertices[j].post = pg->vertices[k].post;
- }
+ /* Update to the minimal postordeer number of vertices in scc so
+ that merged partition is sorted correctly against others. */
+ if (pg->vertices[j].post > pg->vertices[k].post)
+ pg->vertices[j].post = pg->vertices[k].post;
+
partition_merge_into (NULL, first, partition, FUSE_SAME_SCC);
(*partitions)[k] = NULL;
partition_free (partition);