aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2016-02-23 11:55:47 +0100
committerMartin Jambor <jamborm@gcc.gnu.org>2016-02-23 11:55:47 +0100
commit20c5e09e3f0d681a4f82acd01fd4c91816f7d21e (patch)
treeb65720905faa61bc8affe4de1ce58c17c4cfd7a3 /gcc
parente457a6fc36cc3d4241c83ad4f74a6ed903376982 (diff)
downloadgcc-20c5e09e3f0d681a4f82acd01fd4c91816f7d21e.zip
gcc-20c5e09e3f0d681a4f82acd01fd4c91816f7d21e.tar.gz
gcc-20c5e09e3f0d681a4f82acd01fd4c91816f7d21e.tar.bz2
[pr 69666] No SRA default_def replacements for unscalarizable regions
2016-02-23 Martin Jambor <mjambor@suse.cz> PR tree-optimization/69666 * tree-sra.c (sra_modify_assign): Do not attempt to create default_def replacements for unscalarizable regions. testsuite/ * gcc.dg/tree-ssa/pr69666.c: New test. From-SVN: r233626
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr69666.c16
-rw-r--r--gcc/tree-sra.c1
4 files changed, 28 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 49f6c25..e416c46 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-02-23 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/69666
+ * tree-sra.c (sra_modify_assign): Do not attempt to create
+ default_def replacements for unscalarizable regions.
+
2016-02-20 Mark Wielaard <mjw@redhat.com>
PR c/28901
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7d23225..4d2fd43 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-02-23 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/69666
+ * gcc.dg/tree-ssa/pr69666.c: New test.
+
2016-02-23 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/67451
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr69666.c b/gcc/testsuite/gcc.dg/tree-ssa/pr69666.c
new file mode 100644
index 0000000..9be77ea
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr69666.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -w" } */
+
+int a, c, d;
+float b;
+void *memcpy();
+int fun1(int p1, unsigned char *p2) {
+ p2[p1] = b;
+ return a;
+}
+void fun2() {
+ unsigned char e[16];
+ fun1(16, e);
+ d = e[d];
+ memcpy(&c, e, sizeof(e));
+}
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c
index 72157ed..663ded2 100644
--- a/gcc/tree-sra.c
+++ b/gcc/tree-sra.c
@@ -3339,6 +3339,7 @@ sra_modify_assign (gimple *stmt, gimple_stmt_iterator *gsi)
}
else if (racc
&& !racc->grp_unscalarized_data
+ && !racc->grp_unscalarizable_region
&& TREE_CODE (lhs) == SSA_NAME
&& !access_has_replacements_p (racc))
{