From: Tobias Burnus Date: Wed, 13 Nov 2019 11:13:57 +0000 (+0000) Subject: PR fortran/92470 Fixes for CFI_address X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=46927ade0f5933c4eb22b049996fa15080b7f652;p=gcc.git PR fortran/92470 Fixes for CFI_address libgfortran/ PR fortran/92470 * runtime/ISO_Fortran_binding.c (CFI_establish): Set lower_bound to 0 also for CFI_attribute_other. gcc/testsuite/ PR fortran/92470 * gfortran.dg/ISO_Fortran_binding_1.c (establish_c): Add assert for lower_bound == 0. From-SVN: r278128 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 834c17a6d7f..1727bf0eac7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2019-11-13 Tobias Burnus + + PR fortran/92470 + * gfortran.dg/ISO_Fortran_binding_1.c (establish_c): Add assert for + lower_bound == 0. + 2019-11-13 Richard Sandiford * gcc.target/aarch64/sve/mask_struct_store_3.c: Add diff --git a/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_1.c b/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_1.c index 091e754d8f9..a5714593c52 100644 --- a/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_1.c +++ b/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_1.c @@ -109,6 +109,7 @@ int establish_c(CFI_cdesc_t * desc) CFI_attribute_pointer, CFI_type_struct, sizeof(t), 1, extent); + assert (desc->dim[0].lower_bound == 0); for (idx[0] = 0; idx[0] < extent[0]; idx[0]++) { res_addr = (t*)CFI_address (desc, idx); diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 1abdd6a4f24..0727ade0104 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2019-11-13 Tobias Burnus + + PR fortran/92470 + * runtime/ISO_Fortran_binding.c (CFI_establish): Set lower_bound to 0 + also for CFI_attribute_other. + 2019-11-12 Tobias Burnus PR fortran/92470 diff --git a/libgfortran/runtime/ISO_Fortran_binding.c b/libgfortran/runtime/ISO_Fortran_binding.c index 7ae2a9351da..91d9ae46d3d 100644 --- a/libgfortran/runtime/ISO_Fortran_binding.c +++ b/libgfortran/runtime/ISO_Fortran_binding.c @@ -387,13 +387,7 @@ int CFI_establish (CFI_cdesc_t *dv, void *base_addr, CFI_attribute_t attribute, for (int i = 0; i < rank; i++) { - /* If the C Descriptor is for a pointer then the lower bounds of every - * dimension are set to zero. */ - if (attribute == CFI_attribute_pointer) - dv->dim[i].lower_bound = 0; - else - dv->dim[i].lower_bound = 1; - + dv->dim[i].lower_bound = 0; dv->dim[i].extent = extents[i]; if (i == 0) dv->dim[i].sm = dv->elem_len;