https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61780

            Bug ID: 61780
           Summary: [4.8/4.9/4.10 Regression] Wrong code when shifting
                    elements of a multidimensional array
           Product: gcc
           Version: 4.10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dominiq at lps dot ens.fr
                CC: pault at gcc dot gnu.org, tkoenig at gcc dot gnu.org

>From https://groups.google.com/forum/#!topic/comp.lang.fortran/mfS-BB2X-90, the
following code gives a wrong result at run time

program prgm3 
    implicit none 
    integer, parameter :: n = 10, k = 3 
    integer :: i, j 
    integer, dimension(n,n) :: y 
    integer :: res1(n), res2(n)

1   format(10i5) 

!initialize 
    do i=1,n 
        do j=1,n 
            y(i,j) = n*i + j 
        end do 
    end do 
    res2 = y(k,:) 

!shift right 
    y(k,4:n) = y(k,3:n-1) 
    y(k,3) = 0 
    res1 = y(k,:)
    y(k,:) = res2
    y(k,n:4:-1) = y(k,n-1:3:-1) 
    y(k,3) = 0 
    res2 = y(k,:) 
    print *, res1
    print *, res2
    if (any(res1 /= res2)) call abort () 

end program prgm3 

Revision r174295 (2011-05-26) is OK, r174338 (2011-05-27) is not, likely
r174302 (pr48955).

Reply via email to