[PATCH] PR fortran/87851 - [9/10/11/12 Regression] Wrong return type for len_trim
Harald Anlauf
anlauf@gmx.de
Mon Nov 22 18:17:51 GMT 2021
Am 21.11.21 um 12:46 schrieb Mikael Morin:
> Le 19/11/2021 à 20:47, Harald Anlauf via Fortran a écrit :
>> Dear Fortranners,
>>
>> scalariziation of the elemental intrinsic LEN_TRIM was ICEing
>> when the optional KIND argument was present.
>>
>> The cleanest solution is to use the infrastructure added by
>> Mikael's fix for PR97896. In that case it is a 1-liner. :-)
>>
>> That fix is available on mainline and on 11-branch only, though.
>> My suggestion is to fix the current PR only for the same branches,
>> leaving the regression unfixed for older ones.
>>
>> Regtested on x86_64-pc-linux-gnu. OK for mainline and 11-branch?
>>
> Your change itself is fine.
> The PR was originally about a type mismatch between the gfortran library
> and the call generated by the front-end.
The supposed type mismatch was due to Janne's commit r8-5772:
commit f622221ab42c4ca550059add89ffda00ed2b3c03
Author: Janne Blomqvist <jb@gcc.gnu.org>
Date: Fri Jan 5 21:01:12 2018 +0200
PR 78534 Change character length from int to size_t
In order to handle large character lengths on (L)LP64 targets, switch
the GFortran character length from an int to a size_t.
This is an ABI change, as procedures with character arguments take
hidden arguments with the character length.
[...]
LEN_TRIM is of course of type default integer, which is handled fine
in gfc_resolve_len_trim, setting f->ts.kind, the same way as it is
done in gfc_resolve_index_func or elsewhere, and conversions are
properly taken care of as far as I can tell.
Things work(ed) fine for the "scalar" version of LEN_TRIM, even if the
optional KIND argument was present, before the above commit. But not
the elemental version working on rank>=1 with KIND present. That did
not change. See PR87711.
Thinking again, the patch primarily addresses PR87711 (for 11/12) and
fixes some of the comments in PR87851. We'd need to find out what
exactly is left from the latter.
The dump-tree of the testcase looks fine to me, even when compiling
with -fdefault-integer-8, and I do not see any conversion warnings.
> As the code generated contains a cast, I think it’s fine as well.
Well, LEN_TRIM is of default integer, unless KIND is given.
> But please give Thomas (bug reporter) one more day to comment on this.
Sure.
> Then I think you can proceed.
>
> Thanks.
>
Thanks,
Harald
More information about the Gcc-patches
mailing list