Message ID | CAKwh3qj=0bxBeRODLuJVuFSM0gnhauZdtzEHiFymj64ZCMUfTA@mail.gmail.com |
---|---|
State | New |
Headers | show |
Janus Weil wrote: > here is a small patch to fix a problem with class-array-valued > functions, where the rank was not determined properly. Regtestes on > x86_64-unknown-linux-gnu. Ok for trunk? > > [Note: This patch only fixes the rejects-valid problem of comment 0/1, > but not the ICE of comment 2/3, which is a completely separate issue.] Looks good to me. Thanks for the patch! Tobias > 2013-12-07 Janus Weil <janus@gcc.gnu.org> > > PR fortran/59414 > * resolve.c (resolve_specific_f0): Handle CLASS-valued functions. > > 2013-12-07 Janus Weil <janus@gcc.gnu.org> > > PR fortran/59414 > * gfortran.dg/class_result_2.f90: New.
2013/12/7 Tobias Burnus <burnus@net-b.de>: > Janus Weil wrote: >> >> here is a small patch to fix a problem with class-array-valued >> functions, where the rank was not determined properly. Regtestes on >> x86_64-unknown-linux-gnu. Ok for trunk? >> >> [Note: This patch only fixes the rejects-valid problem of comment 0/1, >> but not the ICE of comment 2/3, which is a completely separate issue.] > > > Looks good to me. Thanks for the patch! Thanks for the review. Committed as r205785. Cheers, Janus
Index: gcc/fortran/resolve.c =================================================================== --- gcc/fortran/resolve.c (revision 205782) +++ gcc/fortran/resolve.c (working copy) @@ -2616,7 +2616,9 @@ found: expr->ts = sym->ts; expr->value.function.name = sym->name; expr->value.function.esym = sym; - if (sym->as != NULL) + if (sym->ts.type == BT_CLASS && CLASS_DATA (sym)->as) + expr->rank = CLASS_DATA (sym)->as->rank; + else if (sym->as != NULL) expr->rank = sym->as->rank; return MATCH_YES;