On 17 May 2016 at 20:21, H.J. Lu <hjl.to...@gmail.com> wrote: > On Tue, May 17, 2016 at 5:51 AM, Richard Biener <rguent...@suse.de> wrote: >> >> The following fixes a latent issue in loop distribution catched by >> the fake edge placement adjustment. >> >> Bootstrapped and tested on x86_64-unknown-linux-gnu, applied. >> >> Richard. >> >> 2016-05-17 Richard Biener <rguent...@suse.de> >> >> PR tree-optimization/71132 >> * tree-loop-distribution.c (create_rdg_cd_edges): Pass in loop. >> Only add control dependences for blocks in the loop. >> (build_rdg): Adjust. >> (generate_code_for_partition): Return whether loop should >> be destroyed and delay that. >> (distribute_loop): Likewise. >> (pass_loop_distribution::execute): Record loops to be destroyed >> and perform delayed destroying of loops. >> >> * gcc.dg/torture/pr71132.c: New testcase. >> > > On x86, this caused: > > FAIL: c-c++-common/cilk-plus/AN/builtin_fn_custom.c -O3 -fcilkplus > (internal compiler error) > FAIL: c-c++-common/cilk-plus/AN/builtin_fn_custom.c -O3 -fcilkplus > (test for excess errors) > FAIL: c-c++-common/cilk-plus/AN/builtin_fn_mutating.c -fcilkplus -O3 > -std=c99 (internal compiler error) > FAIL: c-c++-common/cilk-plus/AN/builtin_fn_mutating.c -fcilkplus -O3 > -std=c99 (test for excess errors) > FAIL: c-c++-common/cilk-plus/AN/builtin_fn_mutating.c -O3 -fcilkplus > (internal compiler error) > FAIL: c-c++-common/cilk-plus/AN/builtin_fn_mutating.c -O3 -fcilkplus > (test for excess errors) > FAIL: c-c++-common/cilk-plus/AN/builtin_func_double.c -fcilkplus -O3 > -std=c99 (internal compiler error) > FAIL: c-c++-common/cilk-plus/AN/builtin_func_double.c -fcilkplus -O3 > -std=c99 (test for excess errors) > FAIL: c-c++-common/cilk-plus/AN/builtin_func_double.c -O3 -fcilkplus > (internal compiler error) > FAIL: c-c++-common/cilk-plus/AN/builtin_func_double.c -O3 -fcilkplus > (internal compiler error) > FAIL: c-c++-common/cilk-plus/AN/builtin_func_double.c -O3 -fcilkplus > (test for excess errors) > FAIL: c-c++-common/cilk-plus/AN/builtin_func_double.c -O3 -fcilkplus > (test for excess errors) > FAIL: c-c++-common/cilk-plus/AN/sec_reduce_ind_same_value.c > -fcilkplus -O3 -std=c99 (internal compiler error) > FAIL: c-c++-common/cilk-plus/AN/sec_reduce_ind_same_value.c > -fcilkplus -O3 -std=c99 (test for excess errors) > FAIL: c-c++-common/cilk-plus/AN/sec_reduce_ind_same_value.c -O3 > -fcilkplus (internal compiler error) > FAIL: c-c++-common/cilk-plus/AN/sec_reduce_ind_same_value.c -O3 > -fcilkplus (test for excess errors) > FAIL: gcc.c-torture/compile/pr32399.c -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (internal > compiler error) > FAIL: gcc.c-torture/compile/pr32399.c -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (test for > excess errors) > FAIL: gcc.c-torture/compile/pr32399.c -O3 -g (internal compiler error) > FAIL: gcc.c-torture/compile/pr32399.c -O3 -g (test for excess errors) > FAIL: gcc.c-torture/execute/20010221-1.c -O3 -g (internal compiler error) > FAIL: gcc.c-torture/execute/20010221-1.c -O3 -g (test for excess errors) > FAIL: gcc.c-torture/execute/20120919-1.c -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (internal > compiler error) > FAIL: gcc.c-torture/execute/20120919-1.c -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (test for > excess errors) > FAIL: gcc.c-torture/execute/20120919-1.c -O3 -g (internal compiler error) > FAIL: gcc.c-torture/execute/20120919-1.c -O3 -g (test for excess errors) > FAIL: gcc.dg/torture/pr61383-1.c -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (internal > compiler error) > FAIL: gcc.dg/torture/pr61383-1.c -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (test for > excess errors) > FAIL: gcc.dg/torture/pr69452.c -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (internal > compiler error) > FAIL: gcc.dg/torture/pr69452.c -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (test for > excess errors) > FAIL: gcc.dg/torture/pr69452.c -O3 -g (internal compiler error) > FAIL: gcc.dg/torture/pr69452.c -O3 -g (test for excess errors) > FAIL: g++.dg/cilk-plus/AN/builtin_fn_mutating_tplt.cc -g -O3 > -fcilkplus (internal compiler error) > FAIL: g++.dg/cilk-plus/AN/builtin_fn_mutating_tplt.cc -g -O3 > -fcilkplus (test for excess errors) > FAIL: g++.dg/cilk-plus/AN/builtin_fn_mutating_tplt.cc -O3 -fcilkplus > (internal compiler error) > FAIL: g++.dg/cilk-plus/AN/builtin_fn_mutating_tplt.cc -O3 -fcilkplus > (test for excess errors) > FAIL: g++.dg/cilk-plus/AN/builtin_fn_mutating_tplt.cc -O3 > -ftree-vectorize -fcilkplus -g (internal compiler error) > FAIL: g++.dg/cilk-plus/AN/builtin_fn_mutating_tplt.cc -O3 > -ftree-vectorize -fcilkplus -g (test for excess errors) > FAIL: gfortran.dg/do_concurrent_2.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (internal > compiler error) > FAIL: gfortran.dg/do_concurrent_2.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (test for > excess errors) > FAIL: gfortran.dg/forall_4.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions execution > test > FAIL: gfortran.dg/forall_4.f90 -O3 -g execution test > FAIL: gfortran.dg/intrinsic_modulo_1.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (internal > compiler error) > FAIL: gfortran.dg/intrinsic_modulo_1.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (test for > excess errors) > FAIL: gfortran.dg/maxloc_2.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (internal > compiler error) > FAIL: gfortran.dg/maxloc_2.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (test for > excess errors) > FAIL: gfortran.dg/maxloc_2.f90 -O3 -g (internal compiler error) > FAIL: gfortran.dg/maxloc_2.f90 -O3 -g (test for excess errors) > FAIL: gfortran.dg/maxlocval_2.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (internal > compiler error) > FAIL: gfortran.dg/maxlocval_2.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (test for > excess errors) > FAIL: gfortran.dg/maxlocval_2.f90 -O3 -g (internal compiler error) > FAIL: gfortran.dg/maxlocval_2.f90 -O3 -g (test for excess errors) > FAIL: gfortran.dg/minloc_1.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (internal > compiler error) > FAIL: gfortran.dg/minloc_1.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (test for > excess errors) > FAIL: gfortran.dg/minloc_1.f90 -O3 -g (internal compiler error) > FAIL: gfortran.dg/minloc_1.f90 -O3 -g (test for excess errors) > FAIL: gfortran.dg/minloc_3.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (internal > compiler error) > FAIL: gfortran.dg/minloc_3.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (test for > excess errors) > FAIL: gfortran.dg/minloc_3.f90 -O3 -g (internal compiler error) > FAIL: gfortran.dg/minloc_3.f90 -O3 -g (test for excess errors) > FAIL: gfortran.dg/minlocval_1.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (internal > compiler error) > FAIL: gfortran.dg/minlocval_1.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (test for > excess errors) > FAIL: gfortran.dg/minlocval_1.f90 -O3 -g (internal compiler error) > FAIL: gfortran.dg/minlocval_1.f90 -O3 -g (test for excess errors) > FAIL: gfortran.dg/minlocval_3.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (internal > compiler error) > FAIL: gfortran.dg/minlocval_3.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (test for > excess errors) > FAIL: gfortran.dg/minlocval_3.f90 -O3 -g (internal compiler error) > FAIL: gfortran.dg/minlocval_3.f90 -O3 -g (test for excess errors) > FAIL: gfortran.dg/minmaxloc_4.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (internal > compiler error) > FAIL: gfortran.dg/minmaxloc_4.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (test for > excess errors) > FAIL: gfortran.dg/minmaxloc_5.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (internal > compiler error) > FAIL: gfortran.dg/minmaxloc_5.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (test for > excess errors) > FAIL: gfortran.dg/minmaxloc_5.f90 -O3 -g (internal compiler error) > FAIL: gfortran.dg/minmaxloc_5.f90 -O3 -g (test for excess errors) > FAIL: gfortran.dg/minmaxloc_6.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (internal > compiler error) > FAIL: gfortran.dg/minmaxloc_6.f90 -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions (test for > excess errors) > FAIL: gfortran.dg/minmaxloc_6.f90 -O3 -g (internal compiler error) > FAIL: gfortran.dg/minmaxloc_6.f90 -O3 -g (test for excess errors) > FAIL: gfortran.dg/PR19754_2.f90 -O3 -g (internal compiler error) > FAIL: gfortran.dg/PR19754_2.f90 -O3 -g (test for excess errors) > FAIL: gfortran.fortran-torture/compile/pr70960.f90, -O3 -g > (internal compiler error) > FAIL: gfortran.fortran-torture/execute/intrinsic_count.f90, -O3 -g > (internal compiler error) > FAIL: gfortran.fortran-torture/execute/intrinsic_product.f90, -O3 -g > (internal compiler error) > FAIL: gfortran.fortran-torture/execute/intrinsic_sum.f90, -O3 -g > (internal compiler error) > FAIL: gfortran.fortran-torture/execute/where20.f90, -O3 -g (internal > compiler error) > > It works for x86-64. On x86, I got > > [hjl@gnu-6 gcc]$ > /export/build/gnu/gcc-32bit/build-i686-linux/gcc/xgcc > -B/export/build/gnu/gcc-32bit/build-i686-linux/gcc/ > -fno-diagnostics-show-caret -fdiagnostics-color=never -O3 -g -w -c -o > pr32399.o > /export/gnu/import/git/sources/gcc/gcc/testsuite/gcc.c-torture/compile/pr32399.c > /export/gnu/import/git/sources/gcc/gcc/testsuite/gcc.c-torture/compile/pr32399.c: > In function âfâ: > /export/gnu/import/git/sources/gcc/gcc/testsuite/gcc.c-torture/compile/pr32399.c:1:6: > internal compiler error: in execute_todo, at passes.c:2009 > 0x8884fe4 execute_todo > /export/gnu/import/git/sources/gcc/gcc/passes.c:2009 > 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. > [hjl@gnu-6 gcc]$ >
I'm also seeing similar crashes on ARM and AArch64 targets: gcc.c-torture/compile/20051216-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (internal compiler error) gcc.c-torture/compile/20051216-1.c -O3 -g (internal compiler error) gcc.c-torture/execute/20011126-2.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (internal compiler error) gcc.c-torture/execute/20011126-2.c -O3 -g (internal compiler error) gcc.c-torture/execute/20090113-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (internal compiler error) gcc.c-torture/execute/20090113-1.c -O3 -g (internal compiler error) gcc.c-torture/execute/strncmp-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (internal compiler error) gcc.c-torture/execute/strncmp-1.c -O3 -g (internal compiler error) gcc.target/aarch64/vect-fmax-fmin.c (internal compiler error) gcc.target/aarch64/vect.c (internal compiler error) gcc.dg/torture/pr52028.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test gcc.dg/torture/pr52028.c -O3 -g execution test gcc.target/aarch64/vect-fp.c execution test gcc.target/aarch64/vect-ld1r.c execution test See http://people.linaro.org/~christophe.lyon/cross-validation/gcc/trunk/236324/report-build-info.html for a broader picture. Christophe > > -- > H.J.