From f58e97341c3204fb2ab0fc6a03778e5923a9d94c Mon Sep 17 00:00:00 2001 From: Dorit Nuzman Date: Sun, 18 Mar 2007 04:37:32 +0000 Subject: [PATCH] tree-vect-transform.c (get_initial_def_for_induction): Replace GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS. * tree-vect-transform.c (get_initial_def_for_induction): Replace GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS. (get_initial_def_for_reduction): Likewise. From-SVN: r123034 --- gcc/ChangeLog | 6 ++++ gcc/testsuite/ChangeLog | 5 ++++ .../gcc.dg/vect/no-tree-dom-vect-bug.c | 30 +++++++++++++++++++ gcc/testsuite/gcc.dg/vect/vect.exp | 6 ++++ gcc/tree-vect-transform.c | 4 +-- 5 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/vect/no-tree-dom-vect-bug.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 181e4735eb38..fa5122280aa3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-03-18 Dorit Nuzman + + * tree-vect-transform.c (get_initial_def_for_induction): Replace + GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS. + (get_initial_def_for_reduction): Likewise. + 2007-03-16 Daniel Berlin Fix PR tree-optimization/29922 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 51282fab131d..2a61218812a4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-03-18 Dorit Nuzman + + * gcc.dg/vect/no-tree-dom-vect-bug.c: New test. + * gcc.dg/vect/vect.exp: Compile tests with -fno-tree-dominator-opts. + 2007-03-17 Francois-Xavier Coudert PR fortran/31120 diff --git a/gcc/testsuite/gcc.dg/vect/no-tree-dom-vect-bug.c b/gcc/testsuite/gcc.dg/vect/no-tree-dom-vect-bug.c new file mode 100644 index 000000000000..3df9afe3bbdc --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/no-tree-dom-vect-bug.c @@ -0,0 +1,30 @@ +/* { dg-require-effective-target vect_int } */ + +#include +#include "tree-vect.h" + +long stack_vars_sorted[32]; + +int +main1 (long n) +{ + long si; + + for (si = 0; si < n; ++si) + stack_vars_sorted[si] = si; +} + +int main () +{ + long si; + + check_vect (); + main1 (32); + + for (si = 0; si < 32; ++si) + if (stack_vars_sorted[si] != si) + abort (); + + return 0; +} +/* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect.exp b/gcc/testsuite/gcc.dg/vect/vect.exp index 547dbd434644..158c41871046 100644 --- a/gcc/testsuite/gcc.dg/vect/vect.exp +++ b/gcc/testsuite/gcc.dg/vect/vect.exp @@ -162,6 +162,12 @@ lappend DEFAULT_VECTCFLAGS "-fno-tree-scev-cprop" dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/no-tree-scev-cprop-*.\[cS\]]] \ "" $DEFAULT_VECTCFLAGS +# -fno-tree-dominator-opts +set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS +lappend DEFAULT_VECTCFLAGS "-fno-tree-dominator-opts" +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/no-tree-dom-*.\[cS\]]] \ + "" $DEFAULT_VECTCFLAGS + # With -Os lappend DEFAULT_VECTCFLAGS "-Os" dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/Os-vect-*.\[cS\]]] \ diff --git a/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c index bddea1e5dc26..456138361d43 100644 --- a/gcc/tree-vect-transform.c +++ b/gcc/tree-vect-transform.c @@ -531,7 +531,7 @@ get_initial_def_for_induction (tree stmt, tree iv_phi) struct loop *loop = LOOP_VINFO_LOOP (loop_vinfo); tree scalar_type = TREE_TYPE (iv_phi); tree vectype = get_vectype_for_scalar_type (scalar_type); - int nunits = GET_MODE_NUNITS (TYPE_MODE (vectype)); + int nunits = TYPE_VECTOR_SUBPARTS (vectype); edge pe = loop_preheader_edge (loop); basic_block new_bb; block_stmt_iterator bsi; @@ -1001,7 +1001,7 @@ get_initial_def_for_reduction (tree stmt, tree init_val, tree *scalar_def) { stmt_vec_info stmt_vinfo = vinfo_for_stmt (stmt); tree vectype = STMT_VINFO_VECTYPE (stmt_vinfo); - int nunits = GET_MODE_NUNITS (TYPE_MODE (vectype)); + int nunits = TYPE_VECTOR_SUBPARTS (vectype); int nelements; enum tree_code code = TREE_CODE (GIMPLE_STMT_OPERAND (stmt, 1)); tree type = TREE_TYPE (init_val); -- 2.47.2