scalarize2.f90   [plain text]


! Program to test the scalarizer
program testarray
   implicit none
   integer, dimension (:, :), allocatable :: a, b
   integer n

   allocate(a(6, 5), b(6, 5))
   a = 0
   do n = 1, 5
      a(4, n) = n
   end do

   b(:, 5:1:-1) = a
   a(1:5, 2) = a(4, :) + 1

   ! The following expression should cause loop reordering
   a(:, 2:4) = a(:, 1:3)

   do n = 1, 5
      if (a(n, 3) .ne. (n + 1)) call abort
      if (b(4, n) .ne. (6 - n)) call abort
   end do
end program