Hi Jan, > this is patch I will try to test once I have chance :) > It simply prevents unroller from analyzing loops when they are already too > large. > ...
This patch breaks bootstrap with ... /opt/gcc/p_build/./prev-gcc/g++ -B/opt/gcc/p_build/./prev-gcc/ -B/opt/gcc/gcc4.8p-193652p3/x86_64-apple-darwin10.8.0/bin/ -nostdinc++ -B/opt/gcc/p_build/prev-x86_64-apple-darwin10.8.0/libstdc++-v3/src/.libs -B/opt/gcc/p_build/prev-x86_64-apple-darwin10.8.0/libstdc++-v3/libsupc++/.libs -I/opt/gcc/p_build/prev-x86_64-apple-darwin10.8.0/libstdc++-v3/include/x86_64-apple-darwin10.8.0 -I/opt/gcc/p_build/prev-x86_64-apple-darwin10.8.0/libstdc++-v3/include -I/opt/gcc/p_work/libstdc++-v3/libsupc++ -L/opt/gcc/p_build/prev-x86_64-apple-darwin10.8.0/libstdc++-v3/src/.libs -L/opt/gcc/p_build/prev-x86_64-apple-darwin10.8.0/libstdc++-v3/libsupc++/.libs -c -g -O2 -mdynamic-no-pic -gtoggle -DIN_GCC -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror -DHAVE_CONFIG_H -I. -I. -I../../p_work/gcc -I../../p_work/gcc/. -I../../p_work/gcc/../include -I./../intl -I../../p_work/gcc/../libcpp/include -I/opt/mp/include -I../../p_work/gcc/../libdecnumber -I../../p_work/gcc/../libdecnumber/dpd -I../libdecnumber -I../../p_work/gcc/../libbacktrace -DCLOOG_INT_GMP -I/opt/mp/include ../../p_work/gcc/tree-ssa-loop-ivopts.c -o tree-ssa-loop-ivopts.o ../../p_work/gcc/tree-ssa-loop-ivcanon.c: In function 'bool canonicalize_loop_induction_variables(loop*, bool, unroll_level, bool)': ../../p_work/gcc/tree-ssa-loop-ivcanon.c:690:62: error: 'n_unroll' may be used uninitialized in this function [-Werror=maybe-uninitialized] && (!n_unroll_found || (unsigned HOST_WIDE_INT)maxiter < n_unroll)) ^ ../../p_work/gcc/tree-ssa-loop-ivcanon.c:656:26: note: 'n_unroll' was declared here unsigned HOST_WIDE_INT n_unroll, ninsns, max_unroll, unr_insns; ^ cc1plus: all warnings being treated as errors ... I have completed bootstrap with the following change --- ../_clean/gcc/tree-ssa-loop-ivcanon.c 2012-11-18 11:27:28.000000000 +0100 +++ gcc/tree-ssa-loop-ivcanon.c 2012-11-20 16:27:07.000000000 +0100 @@ -641,9 +641,10 @@ try_unroll_loop_completely (struct loop enum unroll_level ul, HOST_WIDE_INT maxiter) { - unsigned HOST_WIDE_INT n_unroll, ninsns, max_unroll, unr_insns; + unsigned HOST_WIDE_INT ninsns, max_unroll, unr_insns; gimple cond; struct loop_size size; + unsigned HOST_WIDE_INT n_unroll = 0; bool n_unroll_found = false; edge edge_to_cancel = NULL; int num = loop->num; After that the compilation of gcc.c-torture/compile/pr43186.c is back to a fraction of a second, but I see the following regressions: FAIL: gcc.dg/graphite/interchange-8.c scan-tree-dump-times graphite "will be interchanged" 2 FAIL: gcc.dg/graphite/pr42530.c (internal compiler error) FAIL: gcc.dg/graphite/pr42530.c (test for excess errors) FAIL: gcc.dg/tree-ssa/cunroll-1.c scan-tree-dump cunrolli "Unrolled loop 1 completely .duplicated 2 times.." FAIL: gcc.dg/tree-ssa/cunroll-1.c scan-tree-dump cunrolli "Last iteration exit edge was proved true." FAIL: gcc.dg/tree-ssa/cunroll-3.c scan-tree-dump cunrolli "Unrolled loop 1 completely .duplicated 1 times.." FAIL: gcc.dg/tree-ssa/loop-36.c scan-tree-dump-not dce2 "c.array" FAIL: gcc.dg/tree-ssa/loop-37.c scan-tree-dump-not optimized "my_array" FAIL: gcc.dg/tree-ssa/pr21829.c scan-tree-dump-not optimized "if \\(" FAIL: libgomp.fortran/reduction2.f90 -O3 -fomit-frame-pointer execution test FAIL: libgomp.fortran/reduction2.f90 -O3 -fomit-frame-pointer -funroll-loops execution test FAIL: libgomp.fortran/reduction2.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions execution test FAIL: libgomp.fortran/reduction2.f90 -O3 -g execution test FAIL: libgomp.fortran/reduction2.f90 -O3 -fomit-frame-pointer execution test FAIL: libgomp.fortran/reduction2.f90 -O3 -fomit-frame-pointer -funroll-loops execution test FAIL: libgomp.fortran/reduction2.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions execution test FAIL: libgomp.fortran/reduction2.f90 -O3 -g execution test for both -m32 and -m64 + FAIL: gcc.dg/tree-ssa/loadpre6.c scan-tree-dump-times pre "Insertions: 2" 1 with -m32. Dominique