https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77278
--- Comment #12 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- In libgfortran, we have #define GFC_ARRAY_DESCRIPTOR(type) \ struct {\ type *base_addr;\ size_t offset;\ dtype_type dtype;\ index_type span;\ descriptor_dimension dim[];\ } and then later typedef GFC_ARRAY_DESCRIPTOR (GFC_INTEGER_4) gfc_array_i4; so the array descriptors expected by the libgfotran routines have a flexible array members. If, in the front end, we have the equivalent of (the type name isn't exactly what the front end generates) typedef struct { GFC_INTEGER_4 *base_addr;\ size_t offset;\ dtype_type dtype;\ index_type span;\ descriptor_dimension dim[3];\ } _array03_integer_4_descriptor; _array03_integer_4_descriptor my_descriptor; and a pointer type that corresponds to what the library expects, we should then be able to call minloc_... ((gfc_array_i4 *) &my_descriptor, ..) right? I think this should probably be restricted to calling the library, I would feel nervous touching use code with this.