aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNathan Froyd <froydnj@gcc.gnu.org>2010-11-01 18:58:30 +0000
committerNathan Froyd <froydnj@gcc.gnu.org>2010-11-01 18:58:30 +0000
commite7e9eb2f27fb3bc9b95de1881e5461c1133a25bc (patch)
tree9735446d963776d1da355444a3a00df028cd2e7b /gcc
parentd0d7f522e8ae999d4d31b9906626f87209785811 (diff)
downloadgcc-e7e9eb2f27fb3bc9b95de1881e5461c1133a25bc.zip
gcc-e7e9eb2f27fb3bc9b95de1881e5461c1133a25bc.tar.gz
gcc-e7e9eb2f27fb3bc9b95de1881e5461c1133a25bc.tar.bz2
re PR tree-optimization/46259 (Revision 166102 failed 416.gamess in SPEC CPU 2006)
gcc/ 2010-11-01 Nathan Froyd <froydnj@codesourcery.com> PR tree-optimization/46259 Revert: 2010-10-30 Nathan Froyd <froydnj@codesourcery.com> * tree-vect-stmts.c (vect_get_vec_def_for_operand): Use build_vector_from_val. gcc/testsuite/ 2010-11-01 H.J. Lu <hongjiu.lu@intel.com> Nathan Froyd <froydnj@codesourcery.com> PR tree-optimization/46259 * gfortran.dg/pr46259.f: New testcase. From-SVN: r166139
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gfortran.dg/pr46259.f19
-rw-r--r--gcc/tree-vect-stmts.c10
4 files changed, 45 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 89a214b..fad03f6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,14 @@
+2010-11-01 Nathan Froyd <froydnj@codesourcery.com>
+
+ PR tree-optimization/46259
+
+ Revert:
+
+ 2010-10-30 Nathan Froyd <froydnj@codesourcery.com>
+
+ * tree-vect-stmts.c (vect_get_vec_def_for_operand): Use
+ build_vector_from_val.
+
2010-11-01 DJ Delorie <dj@redhat.com>
* config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Add define for RX610
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 33ff798..fcfe11a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2010-11-01 H.J. Lu <hongjiu.lu@intel.com>
+ Nathan Froyd <froydnj@codesourcery.com>
+
+ PR tree-optimization/46259
+ * gfortran.dg/pr46259.f: New testcase.
+
2010-11-01 Paul Koning <ni1d@arrl.net>
* 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 0000000..d74e549
--- /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 67e9e2b..183bb11 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);
}