[Patch, fortran] PR58618 - Wrong code with character substring and ASSOCIATE

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[Patch, fortran] PR58618 - Wrong code with character substring and ASSOCIATE

Paul Richard Thomas
This problem concerned associate targets being substrings. It turns
out that they are returned as pointer types (with a different cast for
unity based substrings ***sigh***) and so can be assigned directly to
the associate name. The patch quite simply removed the condition that
such targets be allocatable, pointer or dummy.

I noticed in the course of working up the testcase that
    character (:), pointer :: ptr => NULL()
    character (6), target :: tgt = 'lmnopq'
    ptr => tgt
    print *, len (ptr), ptr
end
ICEs on the NULL initialization of the pointer but works fine if this
is removed. Has this already been posted as a PR?

Bootstrapped and regtested on FC28/x86_64 - OK for trunk?

Paul

2018-10-17  Paul Thomas  <[hidden email]>

    PR fortran/58618
    * trans-stmt.c (trans_associate_var): All strings that return
    as pointer types can be assigned directly to the associate
    name so remove 'attr' and the condition that uses it.

2018-10-17  Paul Thomas  <[hidden email]>

    PR fortran/58618
    * gfortran.dg/associate_45.f90 : New test.

submit.diff (3K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [Patch, fortran] PR58618 - Wrong code with character substring and ASSOCIATE

Tobias Burnus
Hi Paul,

Paul Richard Thomas wrote:

> This problem concerned associate targets being substrings. It turns
> out that they are returned as pointer types (with a different cast for
> unity based substrings ***sigh***) and so can be assigned directly to
> the associate name. The patch quite simply removed the condition that
> such targets be allocatable, pointer or dummy.
> I noticed in the course of working up the testcase that
>      character (:), pointer :: ptr => NULL()
>      character (6), target :: tgt = 'lmnopq'
>      ptr => tgt
>      print *, len (ptr), ptr
> end
> ICEs on the NULL initialization of the pointer but works fine if this
> is removed. Has this already been posted as a PR?

I leave it to Dominique to search for a PR; otherwise, I believe the
attach patch fixes the issue. – It just needs someone to package it with
a test case, regtest and commit it.


> Bootstrapped and regtested on FC28/x86_64 - OK for trunk?

OK – thanks for the fix.

Tobias

> 2018-10-17  Paul Thomas  <[hidden email]>
>
>      PR fortran/58618
>      * trans-stmt.c (trans_associate_var): All strings that return
>      as pointer types can be assigned directly to the associate
>      name so remove 'attr' and the condition that uses it.
>
> 2018-10-17  Paul Thomas  <[hidden email]>
>
>      PR fortran/58618
>      * gfortran.dg/associate_45.f90 : New test.

null-init.diff (872 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [Patch, fortran] PR58618 - Wrong code with character substring and ASSOCIATE

Paul Richard Thomas
Patch for the PR70149 regression committed as revision 265263.

Likewise the patch for PR58618 has been committed as revision 265264.

Cheers

Paul

On Wed, 17 Oct 2018 at 22:17, Tobias Burnus <[hidden email]> wrote:

>
> Hi Paul,
>
> Paul Richard Thomas wrote:
> > This problem concerned associate targets being substrings. It turns
> > out that they are returned as pointer types (with a different cast for
> > unity based substrings ***sigh***) and so can be assigned directly to
> > the associate name. The patch quite simply removed the condition that
> > such targets be allocatable, pointer or dummy.
> > I noticed in the course of working up the testcase that
> >      character (:), pointer :: ptr => NULL()
> >      character (6), target :: tgt = 'lmnopq'
> >      ptr => tgt
> >      print *, len (ptr), ptr
> > end
> > ICEs on the NULL initialization of the pointer but works fine if this
> > is removed. Has this already been posted as a PR?
>
>
> I leave it to Dominique to search for a PR; otherwise, I believe the
> attach patch fixes the issue. – It just needs someone to package it with
> a test case, regtest and commit it.
>
>
> > Bootstrapped and regtested on FC28/x86_64 - OK for trunk?
>
> OK – thanks for the fix.
>
> Tobias
>
> > 2018-10-17  Paul Thomas  <[hidden email]>
> >
> >      PR fortran/58618
> >      * trans-stmt.c (trans_associate_var): All strings that return
> >      as pointer types can be assigned directly to the associate
> >      name so remove 'attr' and the condition that uses it.
> >
> > 2018-10-17  Paul Thomas  <[hidden email]>
> >
> >      PR fortran/58618
> >      * gfortran.dg/associate_45.f90 : New test.



--
"If you can't explain it simply, you don't understand it well enough"
- Albert Einstein