Bug 78592 - [7 Regression] ICE in gfc_find_specific_dtio_proc, at fortran/interface.c:4939
Summary: [7 Regression] ICE in gfc_find_specific_dtio_proc, at fortran/interface.c:4939
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: fortran (show other bugs)
Version: 7.0
: P4 normal
Target Milestone: 7.0
Assignee: janus
URL:
Keywords: ice-on-invalid-code
Depends on:
Blocks:
 
Reported: 2016-11-29 18:43 UTC by Gerhard Steinmetz
Modified: 2016-12-18 11:04 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Known to work: 6.2.0
Known to fail: 7.0
Last reconfirmed: 2016-11-30 00:00:00


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Gerhard Steinmetz 2016-11-29 18:43:23 UTC
Affects version 7 (configured with --enable-checking=yes)
since about 20160904 :


$ cat z1.f90
program p
   type t
   end type
   type(t) :: z
   interface write(formatted)
      module procedure wf
   end interface
   print *, z
end


$ gfortran-7-20161127 z1.f90
z1.f90:6:23:

       module procedure wf
                       1
Error: Procedure 'wf' in generic interface '_dtio_formatted_write' at (1) is neither function nor subroutine
f951: internal compiler error: Segmentation fault
0xc4532f crash_signal
        ../../gcc/toplev.c:333
0x69ff6d gfc_find_specific_dtio_proc(gfc_symbol*, bool, bool)
        ../../gcc/fortran/interface.c:4939
0x6fa32b resolve_transfer
        ../../gcc/fortran/resolve.c:8973
0x6fa32b gfc_resolve_code(gfc_code*, gfc_namespace*)
        ../../gcc/fortran/resolve.c:11138
0x6f8c07 gfc_resolve_blocks(gfc_code*, gfc_namespace*)
        ../../gcc/fortran/resolve.c:9865
0x6f903b gfc_resolve_code(gfc_code*, gfc_namespace*)
        ../../gcc/fortran/resolve.c:10808
0x6fba22 resolve_codes
        ../../gcc/fortran/resolve.c:16025
0x6fbb1e gfc_resolve(gfc_namespace*)
        ../../gcc/fortran/resolve.c:16060
0x6e609a resolve_all_program_units
        ../../gcc/fortran/parse.c:5977
0x6e609a gfc_parse_file()
        ../../gcc/fortran/parse.c:6224
0x729ee2 gfc_be_parse_file
        ../../gcc/fortran/f95-lang.c:202
Comment 1 janus 2016-11-30 07:33:15 UTC
This is a regression. gfortran 6 does not support DTIO and shows no ICE.
Comment 2 janus 2016-11-30 09:50:36 UTC
Author: janus
Date: Wed Nov 30 09:50:04 2016
New Revision: 243005

URL: https://gcc.gnu.org/viewcvs?rev=243005&root=gcc&view=rev
Log:
2016-11-30  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/78592
	* interface.c (gfc_find_specific_dtio_proc): Rearrange code to avoid
	dereferencing a null pointer.

2016-11-30  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/78592
	* gfortran.dg/dtio_18.f90: New test case.

Added:
    trunk/gcc/testsuite/gfortran.dg/dtio_18.f90
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/interface.c
    trunk/gcc/testsuite/ChangeLog
Comment 3 janus 2016-11-30 09:53:55 UTC
Fixed with r243005. Closing.
Comment 4 janus 2016-12-18 11:04:16 UTC
Author: janus
Date: Sun Dec 18 11:03:41 2016
New Revision: 243783

URL: https://gcc.gnu.org/viewcvs?rev=243783&root=gcc&view=rev
Log:
2016-12-18  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/78592
	* interfac.c (gfc_find_specific_dtio_proc): Fixup for r243005, making
	sure that the generic list is followed through until the end.

2016-12-18  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/78592
	* gfortran.dg/dtio_21.f90: New test.

Added:
    trunk/gcc/testsuite/gfortran.dg/dtio_21.f90
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/interface.c
    trunk/gcc/testsuite/ChangeLog