https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90577
Bug ID: 90577 Summary: [9/10 Regression] FAIL: gfortran.dg/lrshift_1.f90 with -O(2|3) and -flto Product: gcc Version: 9.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: lto Assignee: unassigned at gcc dot gnu.org Reporter: dominiq at lps dot ens.fr CC: hubicka at gcc dot gnu.org, iains at gcc dot gnu.org, marxin at gcc dot gnu.org Target Milestone: --- Testing fortran with -flto gives Running /opt/gcc/work/gcc/testsuite/gfortran.dg/dg.exp ... FAIL: gfortran.dg/lrshift_1.f90 -O2 execution test FAIL: gfortran.dg/lrshift_1.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test FAIL: gfortran.dg/lrshift_1.f90 -O3 -g execution test FAIL: gfortran.dg/lrshift_1.f90 -Os execution test === gfortran Summary for unix/-m32/-flto === # of expected passes 10 # of unexpected failures 4 The behavior changed between revisions r268729 (2019-02-09, OK) and r269160 (2019-02-23, wrong-code). With the following change do n = 1, size(i) do j = -30, 30 + print *, n, j, lshift(i(n),j) + print *, n, j, c_lshift(i(n),j) if (lshift(i(n),j) /= c_lshift(i(n),j)) STOP 1 if (rshift(i(n),j) /= c_rshift(i(n),j)) STOP 2 end do the wrong code gives 1 -30 2 1 -30 -2 STOP 1 while the working one gives 1 -30 4 1 -30 4 1 -29 8 1 -29 8 ... I also see FAIL: gfortran.dg/ISO_Fortran_binding_9.f90 -g -O3 -fwhole-program -flto execution test