diff options
author | pbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-07-21 12:35:38 +0000 |
---|---|---|
committer | pbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-07-21 12:35:38 +0000 |
commit | 41fba6253e8257ae575192f448a792d40c2bcfed (patch) | |
tree | b8eeb7763d8791aff99b58f9aee0b245a8fc13d0 /gcc | |
parent | 773b5eb273987c933c1921fdca22c1e60c288342 (diff) | |
download | gcc-41fba6253e8257ae575192f448a792d40c2bcfed.tar.gz |
2009-07-21 Paul Brook <paul@codesourcery.com>
gcc/
* tree-vectorizer.c (increase_alignment): Handle nested arrays.
Terminate debug dump with newline.
gcc/testsuite/
* gcc.dg/vect/section-anchors-nest-1.c: New test.
* lib/target-supports.exp (check_effective_target_section_anchors):
Add arm*-*-*.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149853 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/section-anchors-nest-1.c | 35 | ||||
-rw-r--r-- | gcc/testsuite/lib/target-supports.exp | 3 | ||||
-rw-r--r-- | gcc/tree-vectorizer.c | 7 |
5 files changed, 53 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c348015c9d4..c189dda3f50 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2009-07-21 Paul Brook <paul@codesourcery.com> + + * tree-vectorizer.c (increase_alignment): Handle nested arrays. + Terminate debug dump with newline. + 2009-07-20 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5faeb99bf23..a50af8678fb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2009-07-21 Paul Brook <paul@codesourcery.com> + + * gcc.dg/vect/section-anchors-nest-1.c: New test. + * lib/target-supports.exp (check_effective_target_section_anchors): + Add arm*-*-*. + 2009-07-20 Olatunji Ruwase <tjruwase@google.com> * gcc.dg/plugin/finish_unit_plugin.c: New test. diff --git a/gcc/testsuite/gcc.dg/vect/section-anchors-nest-1.c b/gcc/testsuite/gcc.dg/vect/section-anchors-nest-1.c new file mode 100644 index 00000000000..39a24ccaf22 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/section-anchors-nest-1.c @@ -0,0 +1,35 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target section_anchors } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-options "-O2 -ftree-vectorize -fsection-anchors -fno-vect-cost-model -fdump-ipa-increase_alignment" } */ + +#include <stdarg.h> +#include "tree-vect.h" + +#define N 32 + +static int a[N][N]; +static int b[N][N]; +static int c[N][N]; + +void clobber(int *); + +int *foo(void) +{ + int i; + int j; + + clobber (&a[0][0]); + clobber (&b[0][0]); + clobber (&c[0][0]); + + for (i = 0; i < N; i++) { + for (j = 0; j < N; j++) { + c[j][i] += a[j][i] + c[j][i]; + } + } + return &c[0][0]; +} + +/* { dg-final { scan-ipa-dump-times "Increasing alignment of decl" 3 "increase_alignment" } } */ +/* { dg -finalfoo { cleanup-ipa-dump "increase_alignment" } } */ diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 306e78fcbb1..f007e04e598 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -2553,7 +2553,8 @@ proc check_effective_target_section_anchors { } { verbose "check_effective_target_section_anchors: using cached result" 2 } else { set et_section_anchors_saved 0 - if { [istarget powerpc*-*-*] } { + if { [istarget powerpc*-*-*] + || [istarget arm*-*-*] } { set et_section_anchors_saved 1 } } diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c index 2c2103eda0a..90abbd76665 100644 --- a/gcc/tree-vectorizer.c +++ b/gcc/tree-vectorizer.c @@ -337,11 +337,13 @@ increase_alignment (void) vnode = vnode->next_needed) { tree vectype, decl = vnode->decl; + tree t; unsigned int alignment; - if (TREE_CODE (TREE_TYPE (decl)) != ARRAY_TYPE) + t = TREE_TYPE(decl); + if (TREE_CODE (t) != ARRAY_TYPE) continue; - vectype = get_vectype_for_scalar_type (TREE_TYPE (TREE_TYPE (decl))); + vectype = get_vectype_for_scalar_type (strip_array_types (t)); if (!vectype) continue; alignment = TYPE_ALIGN (vectype); @@ -356,6 +358,7 @@ increase_alignment (void) { fprintf (dump_file, "Increasing alignment of decl: "); print_generic_expr (dump_file, decl, TDF_SLIM); + fprintf (dump_file, "\n"); } } } |