On Tue, Dec 13, 2022 at 5:29 PM Tobias Burnus <tob...@codesourcery.com> wrote: > > This is a 12/13 regression as come changes to fix the GFC/CFI descriptor > that went into GCC 12 fail with the (bogus) descriptor passed via by a > GCC-11-compiled program. > > As later GCC 12 changes moved the descriptor to the front end, those > functions are only in libgomp.so to cater for old program. Richard > suggested in the PR that the best way is to move to the GCC 11 version, > such that libgfortran.so won't regress. > > I now did so - except for three fixes (cf. changelog). See also > PR: https://gcc.gnu.org/PR108056 > > There is no testcase as it needs to be compiled by GCC <= 11 and then > run with linking (dynamically) to a GCC 12 or 13 libgfortran. > > OK for mainline and GCC 12?
OK for the branch if approved for trunk. Richard. > * * * > > Note: It is strongly recommended to use GCC 12 (or 13) with array-descriptor > C interop as many issues were fixed. Like for the testcase in the PR; in GCC > 11 > the type arriving in libgomp is BT_ASSUME ('type(*)'). But as the effective > argument is passed as array descriptor through out, the 'float' (real(4)) type > info is actually preservable (as GCC 12 cf. testcase of comment 0 and my > comment > in the PR for the C part of the testcase).(*) > > Tobias > > ((*) This is not possible if using a scalar 'type(*)' or a > non-array-descriptor > array in between. I think GCC 12 uses 'CFI_other' in the information-is-lost > case.) > ----------------- > Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 > München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas > Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht > München, HRB 106955