The following program causes a fault in the compiler: c_loc_prob.f:0: internal compiler error: Segmentation fault: 11 This is the reduced program:
PROGRAM c_loc_prob USE, INTRINSIC :: ISO_C_BINDING, ONLY: C_LOC ! USE, INTRINSIC :: ISO_C_BINDING, ONLY: C_PTR, C_LOC END PROGRAM c_loc_prob Additional information: - Options for optimization and warnings seem to not affect the errot. - If C_PTR is declared prior to C_LOC (as in the comment), the compiler doesn't fault. - In the original programs (from which this example is extracted, the declaration of C_PTR prior to C_LOC causes the compiler to erroneously diagnose various other constructs Workarounds: At least two workaounds for this problem work in the other (much larger) programs: - Avoid use of ONLY: qualifier to ISO_C_BINDING, e.g., USE, INTRINSIC :: ISO_C_BINDING - Replace C_LOC with LOC at the invocation and C_PTR with C_LONG at the INTERFACE declaration. -- Summary: USE of ISO_C_BINDING, ONLY: C_LOC causes compiler seg fault Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: sysmaint at contek dot com GCC build triplet: same GCC host triplet: gfortran - 386-portbld-freebsd6.2 - 4.3.0 20070713 (experimental GCC target triplet: same http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32801