summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/transfer_simplify_8.f90
blob: 75b084670ac6ab9a26bb47fc55910940999fd8c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
! { dg-do run }
! { dg-options "-O0" }
! PR fortran/34537
! simplify_transfer used to ICE on divide by zero for cases like this,
! where the mold expression is a non-constant character expression.
!
! Testcase contributed by Tobias Burnus <burnus@gcc.gnu.org >
!
  character, pointer :: ptr(:)
  character(8) :: a
  allocate(ptr(9))
  ptr = transfer('Sample#0'//achar(0),ptr) ! Causes ICE
  if (any (ptr .ne. ['S','a','m','p','l','e','#','0',achar(0)])) call abort
  call test(a)
  if (a .ne. 'Sample#2') call abort
contains
  subroutine test(a)
    character(len=*) :: a
    a = transfer('Sample#2',a)
  end subroutine test
end