Re: [PATCH,fortran] Fix Bug 93814 - [13/14/15/16 Regression] ICE in build_entry_thunks ...

Paul Richard Thomas <[email protected]>
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <CAGkQGiLdie+7sThthGMUv4OSq5iuRn=-ep7y2rNK3mdSqHS77w@mail.gmail.com>
Hi Jerry,

Please accept my apologies. I became so obsessed with the final
wrinkle in PR120140 that I stopped the regression fixes in the middle
of processing PR93814. I have tested it and given it a good once over.
It is certainly ready for mainline; so please go ahead.

Regards

Paul

On Fri, 10 Apr 2026 at 22:23, Jerry D <[email protected]> wrote:
>
> Hi all,
>
> The attached patch from Christopher regression tested OK here.
>
> I also compared results to other compilers. I think it is OK.
>
> Tested on x86_64.
>
> OK to commit to mainline and backport later after things have settled a bit.
>
> Regards,
>
> Jerry
> ---
>
> fortran: Fix ICE in build_entry_thunks with CHARACTER bind(c)
>   ENTRY [PR93814]
>
> When a CHARACTER function with bind(c) has an ENTRY also with bind(c),
> the entry master function returns CHARACTER by reference (void return,
> result passed as pointer + length arguments), but the individual bind(c)
> entry thunks return CHARACTER(1) by value and have no such arguments.
>
> build_entry_thunks unconditionally forwarded result-reference arguments
> from the thunk's own parameter list to the master call.  For bind(c)
> CHARACTER thunks this accessed DECL_ARGUMENTS of a function with no
> arguments, causing a segfault.
>
> Create local temporaries for the result buffer and character length in
> the thunk when the master returns by reference but the thunk does not.
> After calling the master (which writes through the reference), load
> the character value from the local buffer and return it by value.
>
>         PR fortran/93814
>
> gcc/fortran/ChangeLog:
>
>         * trans-decl.cc (build_entry_thunks): Create local result buffer
>         and length temporaries for bind(c) CHARACTER entry thunks when the
>         master returns by reference but the thunk returns by value.
>
> gcc/testsuite/ChangeLog:
>
>         * gfortran.dg/pr93814.f90: New test.
>
> Signed-off-by: Christopher Albert <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.