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.