From: Janus Weil Date: Sat, 2 Nov 2013 15:56:35 +0000 (+0100) Subject: backport: re PR fortran/58355 ([F03] ICE with TYPE, EXTENDS before parent TYPE defined) X-Git-Tag: releases/gcc-4.7.4~420 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cb1491c553a107f908a29b54901da5bdd2e047db;p=thirdparty%2Fgcc.git backport: re PR fortran/58355 ([F03] ICE with TYPE, EXTENDS before parent TYPE defined) 2013-11-02 Janus Weil Backport from mainline 2013-09-23 Janus Weil PR fortran/58355 * decl.c (check_extended_derived_type): Prevent segfault, modify error message. 2013-11-02 Janus Weil Backport from mainline 2013-09-23 Janus Weil PR fortran/58355 * gfortran.dg/extends_15.f90: New. From-SVN: r204320 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index ba8b8d03deb2..a42b4500b55b 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,12 @@ +2013-11-02 Janus Weil + + Backport from mainline + 2013-09-23 Janus Weil + + PR fortran/58355 + * decl.c (check_extended_derived_type): Prevent segfault, modify error + message. + 2013-08-11 Janus Weil Backport from trunk: diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 3e9bc18eda6e..3e7c6e618aa9 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -7301,6 +7301,7 @@ syntax: /* Check a derived type that is being extended. */ + static gfc_symbol* check_extended_derived_type (char *name) { @@ -7312,14 +7313,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 076c34129a5a..0ffba700f776 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2013-11-02 Janus Weil + + Backport from mainline + 2013-09-23 Janus Weil + + PR fortran/58355 + * gfortran.dg/extends_15.f90: New. + 2013-10-28 Tom de Vries * gcc.target/arm/require-pic-register-loc.c: New test. diff --git a/gcc/testsuite/gfortran.dg/extends_15.f90 b/gcc/testsuite/gfortran.dg/extends_15.f90 new file mode 100644 index 000000000000..06c31799a00e --- /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" } }