[Patch, fortran] PR79382 - DTIO ICE
Jerry DeLisle
jvdelisle@charter.net
Thu Feb 16 18:38:00 GMT 2017
On 02/16/2017 03:31 AM, Paul Richard Thomas wrote:
> Dear All,
>
> The fix for the original bug is tested in dtio_24.f90. It is triggered
> by the PRIVATE statement in the module and occurs because there is no
> such generic interface in the module. Note, however, that there is a
> typebound generic interface, which should not be affected by the
> PRIVATE statement. The fix looks for the interface and issues an error
> if it is not present.
>
> It was found that the absence of a DTIO procedure in a formatted
> transfer, where a DT descriptor is present, caused a segfault. The fix
> in transfer.c was to check if a reference to the DTIO procedure is
> present and to issue an error if it is not. Unfortunately, since
> trans-io.c transfers the components of derived types, in the absence
> of a DTIO procedure, this negates the type check and requires that the
> test in dtio_10.f90 be changed. I think that it would be a good idea
> in the future to flag passing of components so that the type test can
> be recovered. For this reason, I have left the calls in place.
>
> Bootstrapped and regtested on FC23/x86_64 - OK for trunk and 6-branch?
OK for trunk. Not applicable for 6-branch
>
> I am building up a backlog of approved patches: Including this one (if
> approved :-) ), PRs79402, 79434 & 79447. Would it be OK to commit
> these to trunk, even though it is in stage 4?
Yes OK as long as we are not in freeze.
>
> Paul
>
> 2017-02-16 Paul Thomas <pault@gcc.gnu.org>
>
> PR fortran/79382
> * decl.c (access_attr_decl): Test for presence of generic DTIO
> interface and emit error if not present.
> (gfc_match_end): Catch case where a procedure is contained in
> a module procedure and ensure that 'end procedure' is the
> correct termination.
>
> 2017-02-16 Paul Thomas <pault@gcc.gnu.org>
>
> PR fortran/79382
> * io/transfer.c (check_dtio_proc): New function.
> (formatted_transfer_scalar_read): Use it.
> (formatted_transfer_scalar_write): ditto.
>
> 2017-02-16 Paul Thomas <pault@gcc.gnu.org>
>
> PR fortran/79382
> * gfortran.dg/dtio_10.f90 : Change test of error message.
> * gfortran.dg/dtio_23.f90 : New test.
> * gfortran.dg/dtio_24.f90 : New test.
>
More information about the Fortran
mailing list