The following reduced example, based on http://www.lrz-muenchen.de/services/software/mathematik/gsl/fortran/, gives an segmentation fault:
fgsl.f90: In function 'fgsl_multifit_fdfsolver_jac': fgsl.f90:24: internal compiler error: Segmentation fault valgrind shows: ==21413== Invalid read of size 2 ==21413== at 0x49810A: gfc_trans_structure_assign (trans-expr.c:3179) tmp = build3 (COMPONENT_REF, TREE_TYPE (field), dest, field, NULL_TREE); ==21413== by 0x497FF3: gfc_trans_subcomponent_assign (trans-expr.c:3139) ==21413== by 0x498142: gfc_trans_structure_assign (trans-expr.c:3180) ==21413== by 0x4982FE: gfc_conv_structure (trans-expr.c:3207) ==21413== by 0x494EA0: gfc_trans_assignment_1 (trans-expr.c:4020) ==21413== by 0x49501B: gfc_trans_assignment (trans-expr.c:4171) ==21413== by 0x4791CA: gfc_trans_code (trans.c:577) The crash occurs because field = NULL, which fails when using "TREE_TYPE(field)". module fgsl use, intrinsic :: iso_c_binding implicit none type, public :: fgsl_matrix private type(c_ptr) :: gsl_matrix = c_null_ptr end type fgsl_matrix type, public :: fgsl_multifit_fdfsolver private type(c_ptr) :: gsl_multifit_fdfsolver = c_null_ptr end type fgsl_multifit_fdfsolver interface function gsl_multifit_fdfsolver_jac(s) bind(c) import :: c_ptr type(c_ptr), value :: s type(c_ptr) :: gsl_multifit_fdfsolver_jac end function gsl_multifit_fdfsolver_jac end interface contains function fgsl_multifit_fdfsolver_jac(s) type(fgsl_multifit_fdfsolver), intent(in) :: s type(fgsl_matrix) :: fgsl_multifit_fdfsolver_jac fgsl_multifit_fdfsolver_jac%gsl_matrix = & gsl_multifit_fdfsolver_jac(s%gsl_multifit_fdfsolver) end function fgsl_multifit_fdfsolver_jac end module fgsl -- Summary: ICE in gfc_trans_structure_assign Product: gcc Version: 4.3.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: burnus at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33040