Dear Andre, Committed as revision 229303 with extra comments and tests for PR61819 and PR61830. I'll see what I can do to backport the fix for the latter, since it is a revision.
Thanks for the review Paul On 25 October 2015 at 16:47, Andre Vehreschild <ve...@gmx.de> wrote: > Hi Paul, > > I had a look at your patch, especially at the allocate() specific part > and have nothing serious to complain about. I would love to see more > comments to help beginners find there way in the code, but that's a > thing I will never get. :-) > > Therefore, from my perspective ok for trunk and thanks for the patch. > > Regards, > Andre > > On Sat, 24 Oct 2015 15:08:30 +0200 > Paul Richard Thomas <paul.richard.tho...@gmail.com> wrote: > >> Dear All, >> >> This patch does four things: >> (i) On deallocating class components, the vptr is set to point to the >> vtable of the declared type; >> (ii) When digging out the last class reference, a NULL is returned if >> the allocatable component is to the right of a part reference with >> non-zero rank, so that the resulting ICE is removed. The previous >> modification takes care of these cases for gfc_reset_vptr and >> gfc_reset_len; >> (iii) gfc_reset_vptr has been simplified by the use of >> gfc_get_vptr_from_expr; and >> (iv) All variable expressions for the source are passed to >> gfc_trans-assignment, so that array sections work correctly. >> >> I see that Andre has already reserved the testcase >> allocate_with_source_10, for the pending patch that I undertook to >> review, so I will change this to #12 on submission >> >> OK for trunk? >> >> Cheers >> >> Paul >> >> 2015-01-24 Paul Thomas <pa...@gcc.gnu.org> >> >> PR fortran/67171 >> * trans-array.c (structure_alloc_comps): On deallocation of >> class components, reset the vptr to the declared type vtable >> and reset the _len field of unlimited polymorphic components. >> *trans-expr.c (gfc_find_and_cut_at_last_class_ref): Bail out on >> allocatable component references to the right of part reference >> with non-zero rank and return NULL. >> (gfc_reset_vptr): Simplify this function by using the function >> gfc_get_vptr_from_expr. Return if the vptr is NULL_TREE. >> (gfc_reset_len): If gfc_find_and_cut_at_last_class_ref returns >> NULL return. >> * trans-stmt.c (gfc_trans_allocate): Rely on the use of >> gfc_trans_assignment if expr3 is a variable expression since >> this deals correctly with array sections. >> >> 2015-01-24 Paul Thomas <pa...@gcc.gnu.org> >> >> PR fortran/67171 >> * gfortran.dg/allocate_with_source_10.f03: New test > > > -- > Andre Vehreschild * Email: vehre ad gmx dot de -- Outside of a dog, a book is a man's best friend. Inside of a dog it's too dark to read. Groucho Marx