From 28fccf2c731d82572b7b426a001a4897d51bd087 Mon Sep 17 00:00:00 2001 From: Paul Thomas Date: Wed, 7 Oct 2009 05:17:29 +0000 Subject: [PATCH] re PR fortran/41613 (ICE for gfortran.dg/dynamic_dispatch_*.f03 on powerpc-apple-darwin) 2009-10-07 Paul Thomas PR fortran/41613 * resolve.c (check_class_members): Reset compcall.assign. From-SVN: r152513 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/resolve.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 24891ab3835e..f833c20efe02 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2009-10-07 Paul Thomas + + PR fortran/41613 + * resolve.c (check_class_members): Reset compcall.assign. + 2009-10-05 Paul Thomas * trans-expr.c (select_class_proc): New function. diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 2f0972b04ebb..8acd58097b78 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -5132,6 +5132,11 @@ check_class_members (gfc_symbol *derived) e->value.compcall.tbp = tbp->n.tb; e->value.compcall.name = tbp->name; + /* Let the original expresssion catch the assertion in + resolve_compcall, since this flag does not appear to be reset or + copied in some systems. */ + e->value.compcall.assign = 0; + /* Do the renaming, PASSing, generic => specific and other good things for each class member. */ class_try = (resolve_compcall (e, fcn_flag) == SUCCESS)