diff options
author | Janus Weil <janus@gcc.gnu.org> | 2013-07-25 10:26:36 +0200 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2013-07-25 10:26:36 +0200 |
commit | 67b1d0046b856e95b9c2086be14d1af0d91d8f90 (patch) | |
tree | 5af2ae989df28500809d588e175112778cd329e2 /gcc/fortran/simplify.c | |
parent | 690688b3a055de125642e79d3bff8b0291d1f8cb (diff) | |
download | gcc-67b1d0046b856e95b9c2086be14d1af0d91d8f90.zip gcc-67b1d0046b856e95b9c2086be14d1af0d91d8f90.tar.gz gcc-67b1d0046b856e95b9c2086be14d1af0d91d8f90.tar.bz2 |
re PR fortran/57639 ([OOP] ICE with polymorphism (and illegal code))
2013-07-25 Janus Weil <janus@gcc.gnu.org>
PR fortran/57639
* interface.c (compare_parameter): Check for class_ok.
* simplify.c (gfc_simplify_same_type_as): Ditto.
2013-07-25 Janus Weil <janus@gcc.gnu.org>
PR fortran/57639
* gfortran.dg/unlimited_polymorphic_9.f90: New.
From-SVN: r201239
Diffstat (limited to 'gcc/fortran/simplify.c')
-rw-r--r-- | gcc/fortran/simplify.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index 32b8332..dca9b7e 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -2300,7 +2300,8 @@ gfc_simplify_same_type_as (gfc_expr *a, gfc_expr *b) /* Return .false. if the dynamic type can never be the same. */ - if ((a->ts.type == BT_CLASS || b->ts.type == BT_CLASS) + if (((a->ts.type == BT_CLASS && gfc_expr_attr (a).class_ok) + || (b->ts.type == BT_CLASS && gfc_expr_attr (b).class_ok)) && !gfc_type_compatible (&a->ts, &b->ts) && !gfc_type_compatible (&b->ts, &a->ts)) return gfc_get_logical_expr (gfc_default_logical_kind, &a->where, false); |