diff options
author | Janus Weil <janus@gcc.gnu.org> | 2013-09-23 09:40:39 +0200 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2013-09-23 09:40:39 +0200 |
commit | 42e3d759b982c73b1ceb7606a25b3f368d8f3c78 (patch) | |
tree | 9a4cf80f0b185958cd3fd4429e1c44f984ee20cb /gcc/fortran | |
parent | fb635b112339db93acd6054b464473ea94dd195f (diff) | |
download | gcc-42e3d759b982c73b1ceb7606a25b3f368d8f3c78.zip gcc-42e3d759b982c73b1ceb7606a25b3f368d8f3c78.tar.gz gcc-42e3d759b982c73b1ceb7606a25b3f368d8f3c78.tar.bz2 |
re PR fortran/58355 ([F03] ICE with TYPE, EXTENDS before parent TYPE defined)
2013-09-23 Janus Weil <janus@gcc.gnu.org>
PR fortran/58355
* decl.c (check_extended_derived_type): Prevent segfault, modify error
message.
2013-09-23 Janus Weil <janus@gcc.gnu.org>
PR fortran/58355
* gfortran.dg/extends_15.f90: New.
From-SVN: r202823
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/decl.c | 8 |
2 files changed, 11 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 0e4d688..5b032d9 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2013-09-23 Janus Weil <janus@gcc.gnu.org> + + PR fortran/58355 + * decl.c (check_extended_derived_type): Prevent segfault, modify error + message. + 2013-09-20 Janus Weil <janus@gcc.gnu.org> PR fortran/58099 diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 1525119..3a8175f 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 " |