From: Ira Rosen Date: Tue, 8 Mar 2005 11:12:00 +0000 (+0000) Subject: tree-vect-analyze.c (vect_object_analysis): Analyze initial condition of access funct... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6cd3dd5b400118501adb120511128e772494bfda;p=gcc.git tree-vect-analyze.c (vect_object_analysis): Analyze initial condition of access function instead of base. * tree-vect-analyze.c (vect_object_analysis): Analyze initial condition of access function instead of base. From-SVN: r96092 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d525af9e3e4..192220b347a 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 80738794aee..5ad5eedbef7 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 00000000000..ff6ec75e5ab --- /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 4736f1b4cfa..37445043f67 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. */