| ! { dg-do run } |
| ! |
| ! Tests the fix for PR50221 |
| ! |
| ! Contributed by Clive Page <clivegpage@gmail.com> |
| ! and Tobias Burnus <burnus@gcc.gnu.org> |
| ! |
| ! This is from comment #2 by Tobias Burnus. |
| ! |
| module m |
| character(len=:), save, allocatable :: str(:) |
| character(len=2), parameter :: const(3) = ["a1", "b2", "c3"] |
| end |
| |
| use m |
| call test() |
| if(allocated(str)) deallocate(str) |
| call foo |
| contains |
| subroutine test() |
| call doit() |
| ! print *, 'strlen=',len(str),' / array size =',size(str) |
| ! print '(3a)', '>',str(1),'<' |
| ! print '(3a)', '>',str(2),'<' |
| ! print '(3a)', '>',str(3),'<' |
| if (any (str .ne. const)) STOP 1 |
| end subroutine test |
| subroutine doit() |
| str = const |
| end subroutine doit |
| subroutine foo |
| ! |
| ! This is the original PR from Clive Page |
| ! |
| character(:), allocatable, dimension(:) :: array |
| array = (/'xx', 'yy', 'zz'/) |
| ! print *, 'array=', array, len(array(1)), size(array) |
| if (any (array .ne. ["xx", "yy", "zz"])) STOP 2 |
| end subroutine |
| end |