nvptx, libgfortran: Switch out of "minimal" mode
[official-gcc.git] / gcc / testsuite / gfortran.dg / ISO_Fortran_binding_6.f90
bloba5b34be62d8639a523d5c488ee6239ea1e4b2182
1 ! { dg-do run }
2 ! { dg-additional-sources ISO_Fortran_binding_6.c }
4 ! Test fix of PR89366.
6 ! Contributed by Reinhold Bader <Bader@lrz.de>
8 program assumed_length_01
9 use, intrinsic :: iso_c_binding
10 implicit none
11 integer, parameter :: strlen = 12
12 integer(c_int) :: ierr(3)
13 character(kind=c_char,len=strlen) :: s1
14 character(kind=c_char,len=:), allocatable :: s2
15 character(kind=c_char,len=:), pointer :: s3
17 ! invoke a C function that processes an assumed length string
18 interface
19 subroutine process_string(this, ierr) BIND(C)
20 import :: c_char, c_int
21 character(kind=c_char,len=*), intent(in) :: this(..)
22 integer(c_int), intent(inout) :: ierr
23 end subroutine process_string
24 end interface
27 ierr = 0
28 s1 = c_char_'wrzlprmft' // c_null_char
29 call process_string(s1, ierr(1))
30 if (ierr(1) /= 0) stop 1
31 s2 = c_char_'wrzlprmft' // c_null_char
32 allocate(s3, source=trim(s1))
33 call process_string(s2, ierr(2))
34 if (ierr(2) /= 0) stop 2
35 call process_string(s3, ierr(3))
36 if (ierr(3) /= 0) stop 3
37 if (sum(abs(ierr)) == 0) write(*,*) 'OK'
39 deallocate(s2,s3)
41 end program assumed_length_01