http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46259

--- Comment #5 from froydnj at codesourcery dot com <froydnj at codesourcery 
dot com> 2010-11-01 14:57:32 UTC ---
If I had to guess, one of these two hunks is probably responsible:

--- trunk/gcc/tree-vect-loop.c    2010/10/31 01:58:12    166101
+++ trunk/gcc/tree-vect-loop.c    2010/10/31 02:20:22    166102
@@ -3021,14 +3017,7 @@
             break;
           }

-        for (i = nunits - 1; i >= 0; --i)
-          t = tree_cons (NULL_TREE, init_value, t);
-
-        if (TREE_CONSTANT (init_val))
-          init_def = build_vector (vectype, t);
-        else
-          init_def = build_constructor_from_list (vectype, t);
-
+    init_def = build_vector_from_val (vectype, init_value);
         break;

       default:

--- trunk/gcc/tree-vect-stmts.c    2010/10/31 01:58:12    166101
+++ trunk/gcc/tree-vect-stmts.c    2010/10/31 02:20:22    166102
@@ -987,9 +987,7 @@
   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;
@@ -1055,13 +1049,7 @@
         if (vect_print_dump_info (REPORT_DETAILS))
           fprintf (vect_dump, "Create vector_inv.");

-        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);
+        vec_inv = build_vector_from_val (vector_type, def);
         return vect_init_vector (stmt, vec_inv, vector_type, NULL);
       }

Can you try reverting each one individually and see if those fix the
problem?  Thanks.

Reply via email to