https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103496
Bug ID: 103496 Summary: [F2018][TS29113] C_SIZEOF – rejects now valid args with 'must be an interoperable data entity' Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: rejects-valid Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: burnus at gcc dot gnu.org Target Milestone: --- The following should now be fine – using an array descriptor as defined in TS29113 / F2018: 8 | print *, c_sizeof(a(:)) | 1 Error: ‘x’ argument of ‘c_sizeof’ intrinsic at (1) must be an interoperable data entity: Only whole-arrays are interoperable 12 | print *, c_sizeof(p) | 1 Error: ‘x’ argument of ‘c_sizeof’ intrinsic at (1) must be an interoperable data entity: Only explicit-size and assumed-size arrays are interoperable ---------------------- use iso_c_binding implicit none integer :: a(6) integer, pointer :: p(:) print *, c_sizeof(a) ! 6*4 - OK print *, c_sizeof(a(1)) ! 4 - OK print *, c_sizeof(a(:)) ! 6*4 - OK, rejected print *, c_sizeof(a(2::2)) ! 3*4 - rejected allocate(p(5)) print *, c_sizeof(p) ! 5*4 - rejected print *, c_sizeof(p(1)) ! 4 - OK print *, c_sizeof(p(:)) ! 5*4 - rejected print *, c_sizeof(p(2::2)) ! 2*4 - rejected end