! This test writes a large 4D array to an unformatted file using nested
! implied DO constructs. The updated lowering aims to produce fewer
! reallocations as the size increases geometrically when certain
! threshold is reached

! RUN: %flang %isysroot -L"%libdir" -O3 -g %s -o %t
! RUN: env LD_LIBRARY_PATH="$LD_LIBRARY_PATH:%libdir" %t | FileCheck %s
! CHECK: PASS

program test_array_write
    integer::u,i,j,k
    real (kind = 8), allocatable, dimension (:,:,:,:):: buf
    allocate(buf(128, 128, 128, 5))
    buf = 0
    open(newunit=u, file = "test_array_write_output.txt", &
         status="replace", form = "unformatted")
    write(u) &
        ((((buf(i,j,k,1)),i=1,127),j=1,127),k=1,127), &
        ((((buf(i,j,k,2)),i=1,127),j=1,127),k=1,127), &
        ((((buf(i,j,k,3)),i=1,127),j=1,127),k=1,127), &
        ((((buf(i,j,k,4)),i=1,127),j=1,127),k=1,127), &
        ((((buf(i,j,k,5)),i=1,127),j=1,127),k=1,127)
    print *, "PASS"
    close(u)
    deallocate(buf)
end program test_array_write
