1! { dg-do run }
2! { dg-additional-sources c_char_driver.c }
3! Verify that character dummy arguments for bind(c) procedures can work both
4! by-value and by-reference when called by either C or Fortran.
5! PR fortran/32732
6module c_char_tests
7  use, intrinsic :: iso_c_binding, only: c_char
8  implicit none
9contains
10  subroutine param_test(my_char, my_char_2) bind(c)
11    character(c_char), value :: my_char
12    character(c_char), value :: my_char_2
13    if(my_char /= c_char_'y') STOP 1
14    if(my_char_2 /= c_char_'z') STOP 2
15
16    call sub1(my_char)
17  end subroutine param_test
18
19  subroutine sub0() bind(c)
20    call param_test('y', 'z')
21  end subroutine sub0
22
23  subroutine sub1(my_char_ref) bind(c)
24    character(c_char) :: my_char_ref
25    if(my_char_ref /= c_char_'y') STOP 3
26  end subroutine sub1
27end module c_char_tests
28