[Patch, fortran] PR34640 - ICE when assigning item of a derived-component to a pointer

Thomas Koenig tkoenig@netcologne.de
Tue Jul 11 18:13:00 GMT 2017


Am 11.07.2017 um 16:48 schrieb Jerry DeLisle:

> Somewhere in the threads on this, there was mentioned ABI breakage/change.

That was me.

> Does it really do this?

Yes. Look at this part:

Index: libgfortran/libgfortran.h
===================================================================
*** libgfortran/libgfortran.h    (revision 250082)
--- libgfortran/libgfortran.h    (working copy)
*************** struct {\
*** 339,344 ****
--- 339,345 ----
     type *base_addr;\
     size_t offset;\
     index_type dtype;\
+   index_type span;\
     descriptor_dimension dim[r];\
   }

 > If the significant change is in the descriptor and you
 > just added the span on the end of the structure, I am not convinced 
this is an
 > issue. (I have not studied the patch at all, I would rather not bump 
library
 > version)

Unless I am mistaken, we only build the required dimensions for
an array descriptor. Putting it on the end would not work
unless we changed that behavior.

But we are doing something wrong with the array descriptors anyway. See
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68649#c7 for a description.
Other comments in the same PR have some suggestions, but nothing that
works (or so I think).

So, if we do break the ABI, we could try to fix the remaining
issues with the array descriptors - not with this patch, but
before 8.1 is released. Flexible array members come to mind.

Regards

	Thomas



More information about the Gcc-patches mailing list