diff options
author | Martin Jambor <mjambor@suse.cz> | 2016-02-23 11:55:47 +0100 |
---|---|---|
committer | Martin Jambor <jamborm@gcc.gnu.org> | 2016-02-23 11:55:47 +0100 |
commit | 20c5e09e3f0d681a4f82acd01fd4c91816f7d21e (patch) | |
tree | b65720905faa61bc8affe4de1ce58c17c4cfd7a3 /gcc | |
parent | e457a6fc36cc3d4241c83ad4f74a6ed903376982 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/pr69666.c | 16 | ||||
-rw-r--r-- | gcc/tree-sra.c | 1 |
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)) { |