| ! { dg-do run } |
| ! { dg-additional-options "-ffrontend-optimize -fdump-tree-original" } |
| ! PR fortran/35339 - make sure that I/O of an implied DO loop |
| ! of allocatable character arrays a) works and b) is converted |
| ! to a transfer_array |
| program main |
| implicit none |
| integer:: i |
| integer, parameter:: N = 10 |
| character(len=:), dimension(:),allocatable:: ca |
| allocate(character(len=N):: ca(3)) |
| open(unit=10,status="scratch") |
| ca(1) = "foo" |
| ca(2) = "bar" |
| ca(3) = "xyzzy" |
| write (10, '(3A10)') (ca(i),i=1,3) |
| rewind (10) |
| ca(:) = '' |
| read (10, '(3A10)') (ca(i),i=1,3) |
| if (ca(1) /= 'foo' .or. ca(2) /= 'bar' .or. ca(3) /= 'xyzzy') call abort |
| end program |
| ! { dg-final { scan-tree-dump-times "_gfortran_transfer_array" 2 "original" } } |