From: irar Date: Tue, 8 Mar 2005 11:12:00 +0000 (+0000) Subject: * tree-vect-analyze.c (vect_object_analysis): Analyze initial X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d340db4073a7b5c0770b393891e8238f6ba93179;p=thirdparty%2Fgcc.git * tree-vect-analyze.c (vect_object_analysis): Analyze initial condition of access function instead of base. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@96092 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d525af9e3e42..192220b347a3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-03-08 Ira Rosen + + PR tree-optimization/20122 + * tree-vect-analyze.c (vect_object_analysis): Analyze initial + condition of access function instead of base. + 2005-03-07 Jeff Law Steven Bosscher diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 80738794aee7..5ad5eedbef79 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2005-03-08 Ira Rosen + + * gcc.dg/vect/pr20122.c: New test. + 2005-03-07 Jeff Law * gcc.dg/tree-ssa/20030821-1.c: Verify that the computed goto diff --git a/gcc/testsuite/gcc.dg/vect/pr20122.c b/gcc/testsuite/gcc.dg/vect/pr20122.c new file mode 100644 index 000000000000..ff6ec75e5abb --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr20122.c @@ -0,0 +1,38 @@ +/* { dg-require-effective-target vect_int } */ + +#include +#include "tree-vect.h" + +typedef short ashort __attribute__ ((__aligned__(16))); +ashort Kernshort[24]; +static void VecBug(ashort Kernel[8][24]) __attribute__((noinline)); +static void VecBug(ashort Kernel[8][24]); + +/* Doesn't occur of only inner-loop. */ +static void VecBug(ashort Kernel[8][24]) +{ + int k,i; + for (k = 0; k<8; k++) + for (i = 0; i<24; i++) + Kernshort[i] = Kernel[k][i]; +} + +int main (int argc, char **argv) +{ + check_vect (); + + ashort Kernel[8][24]; + int k,i; + + for (k = 0; k<8; k++) + for (i = 0; i<24; i++) + Kernel[k][i] = 0; + + VecBug(Kernel); + + return 0; +} + + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" } } */ + diff --git a/gcc/tree-vect-analyze.c b/gcc/tree-vect-analyze.c index 4736f1b4cfa0..37445043f67d 100644 --- a/gcc/tree-vect-analyze.c +++ b/gcc/tree-vect-analyze.c @@ -1654,10 +1654,11 @@ vect_object_analysis (tree memref, tree stmt, bool is_read, fprintf (vect_dump, "not vectorized: ptr is loop invariant."); return NULL_TREE; } - /* Since there exists DR for MEMREF, we are analyzing the base of - handled component, which not necessary has evolution in the + /* Since there exists DR for MEMREF, we are analyzing the init of + the access function, which not necessary has evolution in the loop. */ - address_to_analyze = TREE_OPERAND (base, 0); + address_to_analyze = initial_condition_in_loop_num (access_fn, + loop->num); } /* 3.3 set data-reference structure for MEMREF. */