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