Message ID | CAKwh3qjUncH9b_qqbNAQ-xEFpXS=v5-yDd7NYNJZz5Rmb9WV3A@mail.gmail.com |
---|---|
State | New |
Headers | show |
On 10/07/2011 12:18 PM, Janus Weil wrote: > Regtested successfully on x86_64-unknown-linux-gnu (except for failure > on entry_4 and select_type_12, which are known middle-end > regressions). Ok for trunk and 4.6? OK. Thanks for the patch - and for telling me that select_type_12 is a middle end regression (PR 50640); I already wondered why my being worked-on patch showed all of a sudden that failure. (I had self-caused select type failures before; thus, I didn't think of a ME problem.) Tobias > 2011-10-07 Janus Weil<janus@gcc.gnu.org> > > PR fortran/50625 > * class.c (gfc_build_class_symbol): Fix whitespace. > * module.c (mio_symbol): Set 'class_ok' attribute. > * trans-decl.c (gfc_get_symbol_decl): Make sure the backend_decl has > been built for class symbols. > > > 2011-10-07 Janus Weil<janus@gcc.gnu.org> > > PR fortran/50625 > * gfortran.dg/class_46.f03: New.
>> Regtested successfully on x86_64-unknown-linux-gnu (except for failure >> on entry_4 and select_type_12, which are known middle-end >> regressions). Ok for trunk and 4.6? > > OK. Thanks for the patch Thanks for the review. Committed to trunk as r179660. > - and for telling me that select_type_12 is a > middle end regression (PR 50640); I already wondered why my being worked-on > patch showed all of a sudden that failure. (I had self-caused select type > failures before; thus, I didn't think of a ME problem.) Yeah, at first I also thought that my local modifications were to blame. But then I noticed that it only fails with optimization (which is usually a very reliable sign for a middle-end problem) and that Dominique had already filed a PR. Cheers, Janus >> 2011-10-07 Janus Weil<janus@gcc.gnu.org> >> >> PR fortran/50625 >> * class.c (gfc_build_class_symbol): Fix whitespace. >> * module.c (mio_symbol): Set 'class_ok' attribute. >> * trans-decl.c (gfc_get_symbol_decl): Make sure the backend_decl >> has >> been built for class symbols. >> >> >> 2011-10-07 Janus Weil<janus@gcc.gnu.org> >> >> PR fortran/50625 >> * gfortran.dg/class_46.f03: New. > >
2011/10/7 Janus Weil <janus@gcc.gnu.org>: >>> Regtested successfully on x86_64-unknown-linux-gnu (except for failure >>> on entry_4 and select_type_12, which are known middle-end >>> regressions). Ok for trunk and 4.6? >> >> OK. Thanks for the patch > > Thanks for the review. Committed to trunk as r179660. ... and to the 4.6 branch as r179696. Cheers, Janus >>> 2011-10-07 Janus Weil<janus@gcc.gnu.org> >>> >>> PR fortran/50625 >>> * class.c (gfc_build_class_symbol): Fix whitespace. >>> * module.c (mio_symbol): Set 'class_ok' attribute. >>> * trans-decl.c (gfc_get_symbol_decl): Make sure the backend_decl >>> has >>> been built for class symbols. >>> >>> >>> 2011-10-07 Janus Weil<janus@gcc.gnu.org> >>> >>> PR fortran/50625 >>> * gfortran.dg/class_46.f03: New. >> >> >
Index: gcc/fortran/class.c =================================================================== --- gcc/fortran/class.c (revision 179647) +++ gcc/fortran/class.c (working copy) @@ -188,7 +188,7 @@ gfc_build_class_symbol (gfc_typespec *ts, symbol_a /* Class container has already been built. */ return SUCCESS; - attr->class_ok = attr->dummy || attr->pointer || attr->allocatable; + attr->class_ok = attr->dummy || attr->pointer || attr->allocatable; if (!attr->class_ok) /* We can not build the class container yet. */ Index: gcc/fortran/module.c =================================================================== --- gcc/fortran/module.c (revision 179647) +++ gcc/fortran/module.c (working copy) @@ -3608,6 +3608,8 @@ mio_symbol (gfc_symbol *sym) mio_symbol_attribute (&sym->attr); mio_typespec (&sym->ts); + if (sym->ts.type == BT_CLASS) + sym->attr.class_ok = 1; if (iomode == IO_OUTPUT) mio_namespace_ref (&sym->formal_ns); Index: gcc/fortran/trans-decl.c =================================================================== --- gcc/fortran/trans-decl.c (revision 179647) +++ gcc/fortran/trans-decl.c (working copy) @@ -1179,7 +1179,10 @@ gfc_get_symbol_decl (gfc_symbol * sym) { gfc_component *c = CLASS_DATA (sym); if (!c->ts.u.derived->backend_decl) - gfc_find_derived_vtab (c->ts.u.derived); + { + gfc_find_derived_vtab (c->ts.u.derived); + gfc_get_derived_type (sym->ts.u.derived); + } } /* All deferred character length procedures need to retain the backend