From: Janus Weil Date: Mon, 23 Sep 2013 07:40:39 +0000 (+0200) Subject: re PR fortran/58355 ([F03] ICE with TYPE, EXTENDS before parent TYPE defined) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=42e3d759b982c73b1ceb7606a25b3f368d8f3c78;p=gcc.git re PR fortran/58355 ([F03] ICE with TYPE, EXTENDS before parent TYPE defined) 2013-09-23 Janus Weil PR fortran/58355 * decl.c (check_extended_derived_type): Prevent segfault, modify error message. 2013-09-23 Janus Weil PR fortran/58355 * gfortran.dg/extends_15.f90: New. From-SVN: r202823 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 0e4d688f975..5b032d9a466 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2013-09-23 Janus Weil + + PR fortran/58355 + * decl.c (check_extended_derived_type): Prevent segfault, modify error + message. + 2013-09-20 Janus Weil PR fortran/58099 diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 152511962d9..3a8175f3ff2 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -7390,6 +7390,7 @@ syntax: /* Check a derived type that is being extended. */ + static gfc_symbol* check_extended_derived_type (char *name) { @@ -7401,14 +7402,15 @@ check_extended_derived_type (char *name) return NULL; } + extended = gfc_find_dt_in_generic (extended); + + /* F08:C428. */ if (!extended) { - gfc_error ("No such symbol in TYPE definition at %C"); + gfc_error ("Symbol '%s' at %C has not been previously defined", name); return NULL; } - extended = gfc_find_dt_in_generic (extended); - if (extended->attr.flavor != FL_DERIVED) { gfc_error ("'%s' in EXTENDS expression at %C is not a " diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2fc781a3e37..e17d519ffc7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-09-23 Janus Weil + + PR fortran/58355 + * gfortran.dg/extends_15.f90: New. + 2013-09-20 Paolo Carlini PR c++/58481 diff --git a/gcc/testsuite/gfortran.dg/extends_15.f90 b/gcc/testsuite/gfortran.dg/extends_15.f90 new file mode 100644 index 00000000000..06c31799a00 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/extends_15.f90 @@ -0,0 +1,16 @@ +! { dg-do compile } +! +! PR 58355: [4.7/4.8/4.9 Regression] [F03] ICE with TYPE, EXTENDS before parent TYPE defined +! +! Contributed by Andrew Benson + +module ct + public :: t1 + + type, extends(t1) :: t2 ! { dg-error "has not been previously defined" } + + type :: t1 + end type +end + +! { dg-final { cleanup-modules "ct" } }