! { dg-do compile } ! ! PR fortran/38536 ! Accept as argument to C_LOC a subcomponent accessed through a pointer. USE ISO_C_BINDING IMPLICIT NONE TYPE test3 INTEGER, DIMENSION(5) :: b END TYPE test3 TYPE test2 TYPE(test3), DIMENSION(:), POINTER :: a END TYPE test2 TYPE test TYPE(test2), DIMENSION(2) :: c END TYPE test TYPE(test) :: chrScalar TYPE(C_PTR) :: f_ptr TYPE(test3), TARGET :: d(3) chrScalar%c(1)%a => d f_ptr = C_LOC(chrScalar%c(1)%a(1)%b(1)) end