aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorJanus Weil <janus@gcc.gnu.org>2010-05-22 12:21:32 +0200
committerJanus Weil <janus@gcc.gnu.org>2010-05-22 12:21:32 +0200
commit7c9b8fb912cdbac53aab302ab0e6b1b0831036df (patch)
tree16d810c6e5b483bfbb839527ee681b103d9622fc /gcc/fortran
parent277e2873445daf04f771eacf8636ba15671dfeda (diff)
downloadgcc-7c9b8fb912cdbac53aab302ab0e6b1b0831036df.zip
gcc-7c9b8fb912cdbac53aab302ab0e6b1b0831036df.tar.gz
gcc-7c9b8fb912cdbac53aab302ab0e6b1b0831036df.tar.bz2
re PR fortran/44213 (ICE when extending abstract type)
2010-05-22 Janus Weil <janus@gcc.gnu.org> PR fortran/44213 * resolve.c (ensure_not_abstract): Allow abstract types with non-abstract ancestors. 2010-05-22 Janus Weil <janus@gcc.gnu.org> PR fortran/44213 * gfortran.dg/abstract_type_7.f03: New. From-SVN: r159695
Diffstat (limited to 'gcc/fortran')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/resolve.c5
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index fc99619..9e4702e 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2010-05-22 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/44213
+ * resolve.c (ensure_not_abstract): Allow abstract types with
+ non-abstract ancestors.
+
2010-05-21 Steven Bosscher <steven@gcc.gnu.org>
* trans-const.c: Include realmpfr.h.
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index e5a46fa..f08e198 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -10541,7 +10541,10 @@ ensure_not_abstract (gfc_symbol* sub, gfc_symbol* ancestor)
This is not the most efficient way to do this, but it should be ok and is
clearer than something sophisticated. */
- gcc_assert (ancestor && ancestor->attr.abstract && !sub->attr.abstract);
+ gcc_assert (ancestor && !sub->attr.abstract);
+
+ if (!ancestor->attr.abstract)
+ return SUCCESS;
/* Walk bindings of this ancestor. */
if (ancestor->f2k_derived)