I just tried to bootstrap trunk revision 206619 on an x86_64 Linux box. Configure line is ../src/trunk/configure --prefix=/home/dcb/gcc/results --enable-checking=yes --enable-languages=c,c++,fortran --disable-werror In the generated Makefile, I changed BOOT_CFLAGS from -g -O2 to -g -O3. I got ../../src/trunk/gcc/config/i386/i386.c: In function ‘rtx_def* ix86_build_const_vector(machine_mode, bool, rtx)’: ../../src/trunk/gcc/config/i386/i386.c:18746:1: internal compiler error: in compute_live_loop_exits, at tree-ssa-loop-manip.c:237 ix86_build_const_vector (enum machine_mode mode, bool vect, rtx value) ^ 0xe978e5 compute_live_loop_exits ../../src/trunk/gcc/tree-ssa-loop-manip.c:237 0xe97cf8 add_exit_phis_var ../../src/trunk/gcc/tree-ssa-loop-manip.c:324 0xe97dfc add_exit_phis ../../src/trunk/gcc/tree-ssa-loop-manip.c:346 0xe9847b rewrite_into_loop_closed_ssa(bitmap_head*, unsigned int) ../../src/trunk/gcc/tree-ssa-loop-manip.c:540 0xf9f9bf vectorize_loops() ../../src/trunk/gcc/tree-vectorizer.c:579 0xeac556 tree_loop_vectorize ../../src/trunk/gcc/tree-ssa-loop.c:154 0xeac5e0 execute ../../src/trunk/gcc/tree-ssa-loop.c:189 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <http://gcc.gnu.org/bugs.html> for instructions. Interestingly, when I dropped BOOT_CLAGS back to -g -O2, the bootstrap worked.
I guess --with-build-config=bootstrap-O3 is affected then. Confirmed, reducing.
typedef struct rtvec_def *rtvec; enum machine_mode { VOIDmode }; struct rtvec_def { void *elem[1]; }; extern void *const_tiny_rtx[2]; void ix86_build_const_vector (enum machine_mode mode, bool vect, void *value, rtvec v, int n_elt) { int i; for (i = 1; i < n_elt; ++i) ((v)->elem[i]) = vect ? value : (const_tiny_rtx[(int) (mode)]); } I will have a look.
Author: rguenth Date: Wed Jan 15 15:13:08 2014 New Revision: 206630 URL: http://gcc.gnu.org/viewcvs?rev=206630&root=gcc&view=rev Log: 2014-01-15 Richard Biener <rguenther@suse.de> PR tree-optimization/59822 * tree-vect-stmts.c (hoist_defs_of_uses): New function. (vectorizable_load): Use it to hoist defs of uses of invariant loads out of the loop. * g++.dg/torture/pr59822.C: New testcase. Added: trunk/gcc/testsuite/g++.dg/torture/pr59822.C Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-vect-stmts.c
Fixed.