https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80988
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|WAITING |NEW --- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- I can confirm the miscompare of SWIM7 (auxilary output file) with the ref input with -ffrontend-optimize on x86_64 and no miscompare with -fno-frontend-optimize. The main difference seems to be { - integer(kind=4) D.4152; - unsigned int countm1.16; - - D.4152 = mnmin; - i = 1; - countm1.16 = ((unsigned int) D.4152 + 4294967295) / 10;, if (D.4152 <= 0) - { - goto L.47; - }; - while (1) - { - { - unsigned int countm1t.17; - - _gfortran_transfer_real_write (&dt_parm.15, &unew[((integer(kind=8) ) i + -1) * 1336], 8); - L.46:; - if (dt_parm.15.common.flags & 3) goto L.47; - i = i + 10; - countm1t.17 = countm1.16; - countm1.16 = countm1.16 + 4294967295; - if (countm1t.17 == 0) goto L.47; - } - } - L.47:; + integer(kind=8) D.4152; + integer(kind=8) D.4153; + integer(kind=8) D.4154; + struct array1_real(kind=8) parm.16; + + D.4152 = (integer(kind=8)) mnmin; + D.4153 = MAX_EXPR <(D.4152 + -1) /[fl] 10, -1>; + D.4154 = (integer(kind=8)) i; + parm.16.dtype = 537; + parm.16.dim[0].lbound = 1; + parm.16.dim[0].ubound = D.4153 + 1; + parm.16.dim[0].stride = 10; + parm.16.data = (void *) &unew[(D.4154 + -1) * 1335]; + parm.16.offset = (D.4154 + -1) * 1335 + -1336; + _gfortran_transfer_array_write (&dt_parm.15, &parm.16, 8, 0); } corresponding to PARAMETER (N1=1335, N2=1335) COMMON UNEW(N1,N2) ... WRITE(7,360) (UNEW(I,I),I=1,MNMIN,10) 360 FORMAT(/' DIAGONAL ELEMENTS OF U ', //(8E15.7))