diff options
author | Tobias Burnus <burnus@net-b.de> | 2013-10-16 22:46:33 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2013-10-16 22:46:33 +0200 |
commit | a8267f8d58e17be205e1147de957f059db88c739 (patch) | |
tree | 33f03339be8340a034cb8d2a9c2eac39e8775fb3 /gcc/fortran/interface.c | |
parent | 931519141b20dceeb5397281ed7fdead3e613213 (diff) | |
download | gcc-a8267f8d58e17be205e1147de957f059db88c739.zip gcc-a8267f8d58e17be205e1147de957f059db88c739.tar.gz gcc-a8267f8d58e17be205e1147de957f059db88c739.tar.bz2 |
re PR fortran/58652 (ICE with move_alloc and unlimited polymorphic)
2013-10-16 Tobias Burnus <burnus@net-b.de>
PR fortran/58652
* interface.c (compare_parameter): Accept passing CLASS(*)
to CLASS(*).
2013-10-16 Tobias Burnus <burnus@net-b.de>
PR fortran/58652
* gfortran.dg/unlimited_polymorphic_12.f90: New.
From-SVN: r203720
Diffstat (limited to 'gcc/fortran/interface.c')
-rw-r--r-- | gcc/fortran/interface.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c index b878644..b3ddf5f 100644 --- a/gcc/fortran/interface.c +++ b/gcc/fortran/interface.c @@ -1990,8 +1990,9 @@ compare_parameter (gfc_symbol *formal, gfc_expr *actual, if (!gfc_expr_attr (actual).class_ok) return 0; - if (!gfc_compare_derived_types (CLASS_DATA (actual)->ts.u.derived, - CLASS_DATA (formal)->ts.u.derived)) + if ((!UNLIMITED_POLY (formal) || !UNLIMITED_POLY(actual)) + && !gfc_compare_derived_types (CLASS_DATA (actual)->ts.u.derived, + CLASS_DATA (formal)->ts.u.derived)) { if (where) gfc_error ("Actual argument to '%s' at %L must have the same " |