https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70729
--- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Richard Biener from comment #9) > Oh, and I believe to make nests with only outer safelen > 0 work correctly we > need to move the check elsewhere: > > Index: gcc/tree-ssa-loop-im.c > =================================================================== > --- gcc/tree-ssa-loop-im.c (revision 235237) > +++ gcc/tree-ssa-loop-im.c (working copy) > @@ -2120,6 +2120,12 @@ ref_indep_loop_p_1 (struct loop *loop, i > bitmap_iterator bi; > im_mem_ref *aref; > > + /* If the Ith and the I + nth iterations can be evaluated > + concurrently a reference with an invariant address is > + not dependent on any other memory reference. */ > + if (loop->safelen > 0) > + return true; > + > if (stored_p) > refs_to_check = &memory_accesses.refs_in_loop[loop->num]; > else It doesn't work: Running target unix FAIL: c-c++-common/cilk-plus/CK/nested_cilk_for.c -O1 execution test FAIL: c-c++-common/cilk-plus/CK/nested_cilk_for.c -O3 execution test FAIL: c-c++-common/cilk-plus/CK/nested_cilk_for.c -g -O2 execution test FAIL: g++.dg/cilk-plus/CK/for1.cc -O1 -fcilkplus execution test FAIL: g++.dg/cilk-plus/CK/for1.cc -g -O2 -fcilkplus execution test Running target unix FAIL: c-c++-common/cilk-plus/CK/nested_cilk_for.c -O1 execution test FAIL: c-c++-common/cilk-plus/CK/nested_cilk_for.c -O2 -ftree-vectorize executi on test FAIL: c-c++-common/cilk-plus/CK/nested_cilk_for.c -O2 -std=c99 execution test FAIL: c-c++-common/cilk-plus/CK/nested_cilk_for.c -O3 -flto -g execution test FAIL: c-c++-common/cilk-plus/CK/nested_cilk_for.c -O3 -g execution test ... FAIL: gcc.dg/vect/pr59984.c -flto -ffat-lto-objects execution test FAIL: gcc.dg/vect/pr59984.c execution test FAIL: gcc.dg/vect/vect-simd-clone-5.c -flto -ffat-lto-objects execution test FAIL: gcc.dg/vect/vect-simd-clone-5.c execution test FAIL: gcc.dg/vect/vect-simd-clone-8.c -flto -ffat-lto-objects execution test FAIL: gcc.dg/vect/vect-simd-clone-8.c execution test Running target unix FAIL: libgomp.c/ordered-5.c execution test FAIL: libgomp.c++/pr66702-2.C execution test FAIL: libgomp.fortran/examples-4/declare_target-5.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test FAIL: libgomp.fortran/examples-4/simd-2.f90 -O1 execution test FAIL: libgomp.fortran/examples-4/simd-2.f90 -O2 execution test FAIL: libgomp.fortran/examples-4/simd-2.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test FAIL: libgomp.fortran/examples-4/simd-2.f90 -O3 -g execution test FAIL: libgomp.fortran/examples-4/simd-7.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test FAIL: libgomp.fortran/examples-4/simd-7.f90 -O3 -g execution test