Hi Jerry and Thomas, As Thomas noted, the span field is added in the middle of the descriptor because the caf token field makes the descriptor variable length. This is reflected in the change in libgfortran.h.
It has crossed my mind in the last twenty four hours that I should add some more fields, for example by expanding the dtype field, which would then allow us to bump up the maximum number of dimensions for example. However, I seem, temporarily I hope, to be completely blown out of the water. We had a rainstorm this afternoon, which caused a glitch in the mains. Now, neither of my workstations seem to work any more. I have tried everything but both remain totally unresponsive. As to anything to do with lto, I am sorry but it is beyond my pay grade. I got caught with lto in implementing the submodule patch. I got lucky in that I found the fix more or less by trying things at random. That said, I'll take a look at p68649 once my blood pressure has dropped. It seems to me that the gurus have provided more than enough clues. Regards Paul On 11 July 2017 at 19:12, Thomas Koenig <tkoe...@netcologne.de> wrote: > 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 -- "If you can't explain it simply, you don't understand it well enough" - Albert Einstein