Hi Paul,

I tried to "break" your patch, but I failed. (I tried having same function in
both modules with identical signature; but I do not get a symbol collision). So
to me the patch looks fine now. But you may want to give Harald some time for a
look.

Thanks for the patch,
        Andre

On Mon, 15 Jul 2024 10:41:45 +0100
Paul Richard Thomas <paul.richard.tho...@gmail.com> wrote:

> I've done it again! Patch duly added.
>
> Paul
>
> On Mon, 15 Jul 2024 at 09:21, Paul Richard Thomas <
> paul.richard.tho...@gmail.com> wrote:
>
> > Hi Harald,
> >
> > Thank you for the review and for the testing to destruction. Both issues
> > are fixed in the attached patch. Note the new function 'h', which both
> > tests that the namespace confusion is fixed and that the elemental-ness of
> > LEN_TRIM is respected.
> >
> > The patch continues to regtest OK. If I don't receive anymore
> > comments/corrections, I will commit tomorrow morning.
> >
> > Regards
> >
> > Paul
> >
> >
> > On Sun, 14 Jul 2024 at 19:50, Harald Anlauf <anl...@gmx.de> wrote:
> >
> >> Hi Paul,
> >>
> >> at first sight the patch seems to be the right approach, but
> >> it breaks for the following two variations:
> >>
> >> (1) LEN_TRIM is elemental, but the following is erroneously rejected:
> >>
> >>    function g(n) result(z)
> >>      integer,  intent(in) :: n
> >>      character, parameter :: d(3,3) = 'x'
> >>      character(len_trim(d(n,n))) :: z
> >>      z = d(n,n)
> >>    end
> >>
> >> This is fixed here by commenting/removing the line
> >>
> >>        expr->rank = 1;
> >>
> >> as the result shall have the same shape as the argument.
> >> Can you check?
> >>
> >> (2) The handling of namespaces is problematic: using the same name
> >> for a parameter within procedures in the same scope generates another
> >> ICE.  The following testcase demonstrates this:
> >>
> >> module m
> >>    implicit none
> >>    integer :: c
> >> contains
> >>    function f(n) result(z)
> >>      integer,  intent(in) :: n
> >>      character, parameter :: c(3) = ['x', 'y', 'z']
> >>      character(len_trim(c(n)))  :: z
> >>      z = c(n)
> >>    end
> >>    function h(n) result(z)
> >>      integer,  intent(in) :: n
> >>      character, parameter :: c(3,3) = 'x'
> >>      character(len_trim(c(n,n)))  :: z
> >>      z = c(n,n)
> >>    end
> >> end
> >> program p
> >>    use m
> >>    implicit none
> >>    print *, f(2)
> >>    print *, h(1)
> >> end
> >>
> >> I get:
> >>
> >> pr84868-z0.f90:22:15:
> >>
> >>     22 |   print *, h(1)
> >>        |               1
> >> internal compiler error: in gfc_conv_descriptor_stride_get, at
> >> fortran/trans-array.cc:483
> >> 0x243e156 internal_error(char const*, ...)
> >>          ../../gcc-trunk/gcc/diagnostic-global-context.cc:491
> >> 0x96dd70 fancy_abort(char const*, int, char const*)
> >>          ../../gcc-trunk/gcc/diagnostic.cc:1725
> >> 0x749d68 gfc_conv_descriptor_stride_get(tree_node*, tree_node*)
> >>          ../../gcc-trunk/gcc/fortran/trans-array.cc:483
> >> [rest of traceback elided]
> >>
> >> Renaming the parameter array in h solves the problem.
> >>
> >> Am 13.07.24 um 17:57 schrieb Paul Richard Thomas:
> >> > Hi All,
> >> >
> >> > Harald has pointed out that I attached the ChangeLog twice and the patch
> >> > not at all :-(
> >> >
> >> > Please find the patch duly attached.
> >> >
> >> > Paul
> >> >
> >> >
> >> > On Sat, 13 Jul 2024 at 10:58, Paul Richard Thomas <
> >> > paul.richard.tho...@gmail.com> wrote:
> >> >
> >> >> Hi All,
> >> >>
> >> >> After messing around with argument mapping, where I found and fixed
> >> >> another bug, I realised that the problem lay with simplification of
> >> >> len_trim with an argument that is the element of a parameter array.
> >> The fix
> >> >> was then a straightforward lift of existing code in expr.cc. The
> >> mapping
> >> >> bug is also fixed by supplying the se string length when building
> >> character
> >> >> typespecs.
> >> >>
> >> >> Regtests just fine. OK for mainline? I believe that this is safe for
> >> >> backporting to 14-branch before the 14.2 release - thoughts?
> >>
> >> If you manage to correct/fix the above issues, I am fine with
> >> backporting, as this appears a very reasonable fix.
> >>
> >> Thanks,
> >> Harald
> >>
> >> >> Regards
> >> >>
> >> >> Paul
> >> >>
> >> >
> >>
> >>


--
Andre Vehreschild * Email: vehre ad gmx dot de

Reply via email to