! { dg-do run } ! { dg-options "-fbackslash" } ! ! PR fortran/103828 ! Check that we can C char with non-ASCII values, which are interoperable ! with both INTEGER(C_SIGNED_CHAR) and CHARACTER(C_CHAR). program test use, intrinsic :: iso_c_binding, only : c_signed_char, c_char implicit none interface ! In order to perform this test, we cheat and pretend to give each function ! the other one's prototype. It should still work, because all arguments ! are interoperable with C char. subroutine test1 (a) bind(c, name='test_int') import c_char character(kind=c_char, len=1), value :: a end subroutine test1 subroutine test2 (a) bind(c, name='test_char') import c_signed_char integer(kind=c_signed_char), value :: a end subroutine test2 end interface call test1('\xA3') call test2(-93_c_signed_char) end program test subroutine test_int (a) bind(c) use, intrinsic :: iso_c_binding, only : c_signed_char implicit none integer(c_signed_char), value :: a if (a /= iachar('\xA3', kind=c_signed_char)) stop 1 end subroutine subroutine test_char (a) bind(c) use, intrinsic :: iso_c_binding, only : c_char implicit none character(kind=c_char, len=1), value :: a if (a /= '\xA3') stop 101 end subroutine