static void gfortran_7_or_less_array_descriptor_info(_size_t *size, _size_t *align, int rank) { _size_t base_addr_size = CURRENT_CONFIGURATION->type_environment->sizeof_pointer; _size_t base_addr_align = CURRENT_CONFIGURATION->type_environment->alignof_pointer; _size_t offset_size = type_get_size(CURRENT_CONFIGURATION->type_environment->type_of_sizeof()); _size_t offset_align = type_get_alignment(CURRENT_CONFIGURATION->type_environment->type_of_sizeof()); _size_t dtype_size = type_get_size(CURRENT_CONFIGURATION->type_environment->type_of_ptrdiff_t()); _size_t dtype_align = type_get_alignment(CURRENT_CONFIGURATION->type_environment->type_of_ptrdiff_t()); _size_t descriptor_dimension_size = 3 * type_get_size(CURRENT_CONFIGURATION->type_environment->type_of_ptrdiff_t()); _size_t descriptor_dimension_align = type_get_alignment(CURRENT_CONFIGURATION->type_environment->type_of_ptrdiff_t()); _size_t dim_size = rank * descriptor_dimension_size; _size_t dim_align = descriptor_dimension_align; *size = base_addr_size + offset_size + dtype_size + dim_size; *align = MAX(base_addr_align, MAX(offset_align, MAX(dtype_align, MAX(dim_align, 0)))); }
int Type::get_alignment_of() { return type_get_alignment(this->_type_info); }