aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2017-11-10 15:43:13 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2017-11-10 15:43:13 +0100
commit127ef36981ebdfbe3be0f8df710090642a2a4abe (patch)
treec68a1dc595dca3d5343f87ec39f6fc2f1e5794a3 /gcc/testsuite/gcc.dg
parent93814e2d690f7ccae4d87365b66d05cfa4a11576 (diff)
downloadgcc-127ef36981ebdfbe3be0f8df710090642a2a4abe.zip
gcc-127ef36981ebdfbe3be0f8df710090642a2a4abe.tar.gz
gcc-127ef36981ebdfbe3be0f8df710090642a2a4abe.tar.bz2
re PR tree-optimization/82929 (r254579 causes ICE: tree check: expected ssa_name, have array_ref in has_single_use, at ssa-iterators.h:400)
PR tree-optimization/82929 * gimple-ssa-store-merging.c (struct store_immediate_info): Add ops_swapped_p non-static data member. (store_immediate_info::store_immediate_info): Clear it. (imm_store_chain_info::coalesce_immediate_stores): If swapping ops set ops_swapped_p. (count_multiple_uses): Handle ops_swapped_p. * gcc.dg/pr82929.c: New test. * g++.dg/opt/pr82929.C: New test. From-SVN: r254628
Diffstat (limited to 'gcc/testsuite/gcc.dg')
-rw-r--r--gcc/testsuite/gcc.dg/pr82929.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/pr82929.c b/gcc/testsuite/gcc.dg/pr82929.c
new file mode 100644
index 0000000..afe9394
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr82929.c
@@ -0,0 +1,18 @@
+/* PR tree-optimization/82929 */
+/* { dg-do compile { target store_merge } } */
+/* { dg-options "-O2 -fdump-tree-store-merging" } */
+
+void
+foo (short *p, short *q, short *r)
+{
+ short a = q[0];
+ short b = q[1];
+ short c = ~a;
+ short d = r[0];
+ short e = r[1];
+ short f = ~b;
+ p[0] = c & d;
+ p[1] = e & f;
+}
+
+/* { dg-final { scan-tree-dump-times "Merging successful" 1 "store-merging" } } */