2017-02-20 Paul Thomas <pault@gcc.gnu.org>
[official-gcc.git] / gcc / testsuite / gfortran.dg / bind_c_usage_8.f03
blob04812422eadf35cf86181750f355a86eb7d8053c
1 ! { dg-do compile }
2 ! { dg-options "-Wc-binding-type" }
3 ! { dg-require-visibility "" }
4 ! This should compile, though there is a warning about the type of len
5 ! (return variable of strlen()) for being implicit.
6 ! PR fortran/32797
8 MODULE ISO_C_UTILITIES
9    USE ISO_C_BINDING
10    implicit none
11    CHARACTER(C_CHAR), DIMENSION(1), SAVE, TARGET, PRIVATE :: dummy_string="?"
12 CONTAINS
13    FUNCTION C_F_STRING(CPTR) RESULT(FPTR)
14      use, intrinsic :: iso_c_binding
15       TYPE(C_PTR), INTENT(IN) :: CPTR ! The C address
16       CHARACTER(KIND=C_CHAR), DIMENSION(:), POINTER :: FPTR
17       INTERFACE
18          FUNCTION strlen(string) RESULT(len) BIND(C,NAME="strlen") ! { dg-warning "Implicitly declared" }
19             USE ISO_C_BINDING
20             TYPE(C_PTR), VALUE :: string ! A C pointer
21          END FUNCTION
22       END INTERFACE
23       CALL C_F_POINTER(FPTR=FPTR, CPTR=CPTR, SHAPE=[strlen(CPTR)])
24    END FUNCTION
25 END MODULE ISO_C_UTILITIES