On Thu, 6 Aug 2015 14:00:56 +0200
Mikael Morin <mikael.mo...@sfr.fr> wrote:

> Le 06/08/2015 12:53, Andre Vehreschild a écrit :
> > Dear all,
> >
> > the attached patch fixes a regression introduced by my patches for the
> > F2008-style allocate(). In this case a function returning an array of
> > BT_CLASS objects can not be conv'ed using conv_expr_descriptor, but needs
> > to be conv_expr_reference()'ed, because the _data component has the
> > descriptor already and just needs to be addressed correctly.
> >
> > Bootstraps and regtests ok on x86_64-linux-gnu/f21.
> >
> > Ok for trunk?
> >
> > Regards,
> >     Andre
> >
> > pr66927_1.patch
> >
> > diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c
> > index 6409f7f..3f90b76 100644
> > --- a/gcc/fortran/trans-stmt.c
> > +++ b/gcc/fortran/trans-stmt.c
> > @@ -5187,9 +5187,14 @@ gfc_trans_allocate (gfc_code * code)
> >       /* In all other cases evaluate the expr3.  */
> >       symbol_attribute attr;
> >       /* Get the descriptor for all arrays, that are not allocatable or
> > -        pointer, because the latter are descriptors already.  */
> > +        pointer, because the latter are descriptors already.
> > +        The exception are function calls returning a class object:
> > +        For those conv_expr_descriptor does not work.  */
> 
> So, it is gfc_conv_expr_descriptor that should be fixed?
> Let me have a look at it.

Er, yes, and now. gfc_conv_expr_descriptor would need a fix, but that fix is
only needed for allocate() all other callers must not be affected. That's why I
did not try to fix it in gfc_conv_expr_descriptor().

- Andre
-- 
Andre Vehreschild * Email: vehre ad gmx dot de 

Reply via email to