From c0acdbb46520c253fb3d24e912873bc06c3983ed Mon Sep 17 00:00:00 2001 From: froydnj Date: Mon, 1 Nov 2010 18:58:30 +0000 Subject: [PATCH] gcc/ 2010-11-01 Nathan Froyd PR tree-optimization/46259 Revert: 2010-10-30 Nathan Froyd * tree-vect-stmts.c (vect_get_vec_def_for_operand): Use build_vector_from_val. gcc/testsuite/ 2010-11-01 H.J. Lu Nathan Froyd PR tree-optimization/46259 * gfortran.dg/pr46259.f: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166139 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 11 +++++++++++ gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/gfortran.dg/pr46259.f | 19 +++++++++++++++++++ gcc/tree-vect-stmts.c | 10 +++++++++- 4 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/pr46259.f diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 89a214bc0c2..fad03f6996d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2010-11-01 Nathan Froyd + + PR tree-optimization/46259 + + Revert: + + 2010-10-30 Nathan Froyd + + * tree-vect-stmts.c (vect_get_vec_def_for_operand): Use + build_vector_from_val. + 2010-11-01 DJ Delorie * config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Add define for RX610 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 33ff798aa15..fcfe11a9f3a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2010-11-01 H.J. Lu + Nathan Froyd + + PR tree-optimization/46259 + * gfortran.dg/pr46259.f: New testcase. + 2010-11-01 Paul Koning * gcc.c-torture/compile/20080625-1.c: Skip if pdp11. diff --git a/gcc/testsuite/gfortran.dg/pr46259.f b/gcc/testsuite/gfortran.dg/pr46259.f new file mode 100644 index 00000000000..d74e549a248 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr46259.f @@ -0,0 +1,19 @@ +! PR tree-optimization/46259 +! { dg-do compile } +! { dg-options "-O3" } + SUBROUTINE RDSTFR(FRGMNT,IFRAG,PROVEC,FOCKMA, + * MXBF,MXMO,MXMO2,NTMOF) + PARAMETER (MXPT=100, MXFRG=50, MXFGPT=MXPT*MXFRG) + CHARACTER*8 WORD,MNAME,PNAME,RNAME + COMMON /FRGSTD/ CORD(3,MXPT),PCORD(3,MXPT),POLT(9,MXPT), + * INLPR(4*MXPT),IKFR(MXPT),IKLR(MXPT), + * MNAME(MXPT),PNAME(MXPT),RNAME(MXPT) + DO 10 I=1,MXPT + INLPR(4*(I-1)+1)=0 + INLPR(4*(I-1)+2)=0 + INLPR(4*(I-1)+3)=0 + INLPR(4*(I-1)+4)=0 + IKLR(I)=0 + RNAME(I)=' ' + 10 CONTINUE + END diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 67e9e2bc445..183bb111a30 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -987,7 +987,9 @@ vect_get_vec_def_for_operand (tree op, gimple stmt, tree *scalar_def) loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_vinfo); tree vec_inv; tree vec_cst; + tree t = NULL_TREE; tree def; + int i; enum vect_def_type dt; bool is_simple_use; tree vector_type; @@ -1049,7 +1051,13 @@ vect_get_vec_def_for_operand (tree op, gimple stmt, tree *scalar_def) if (vect_print_dump_info (REPORT_DETAILS)) fprintf (vect_dump, "Create vector_inv."); - vec_inv = build_vector_from_val (vector_type, def); + for (i = nunits - 1; i >= 0; --i) + { + t = tree_cons (NULL_TREE, def, t); + } + + /* FIXME: use build_constructor directly. */ + vec_inv = build_constructor_from_list (vector_type, t); return vect_init_vector (stmt, vec_inv, vector_type, NULL); } -- 2.11.0