aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/interface.c
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2013-10-16 22:46:33 +0200
committerTobias Burnus <burnus@gcc.gnu.org>2013-10-16 22:46:33 +0200
commita8267f8d58e17be205e1147de957f059db88c739 (patch)
tree33f03339be8340a034cb8d2a9c2eac39e8775fb3 /gcc/fortran/interface.c
parent931519141b20dceeb5397281ed7fdead3e613213 (diff)
downloadgcc-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.c5
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 "