! { dg-do run } ! { dg-options "-ffrontend-optimize" } ! PR 86837 - this was mis-optimized by trying to turn this into an ! array I/O statement. ! Original test case by "Pascal". Program read_loop implicit none integer :: i, j ! number of values per column integer, dimension(3) :: nvalues data nvalues / 1, 2, 4 / ! values in a 1D array real, dimension(7) :: one_d data one_d / 1, 11, 12, 21, 22, 23, 24 / ! where to store the data back real, dimension(4, 3) :: two_d ! 1 - write our 7 values in one block open(unit=10, file="loop.dta", form="unformatted") write(10) one_d close(unit=10) ! 2 - read them back in chosen cells of a 2D array two_d = -9 open(unit=10, file="loop.dta", form="unformatted", status='old') read(10) ((two_d(i,j), i=1,nvalues(j)), j=1,3) close(unit=10, status='delete') ! 4 - print the whole array, just in case if (any(reshape(two_d,[12]) /= [1.,-9.,-9.,-9.,11.,12.,-9.,-9.,21.,22.,23.,24.])) call abort end Program read_loop