This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix FMT= with CHARACTER arrays (PR fortran/39865, take 2)


On Tue, May 12, 2009 at 05:44:32PM +0200, Jakub Jelinek wrote:
> On Tue, May 12, 2009 at 03:14:14PM +0200, Jakub Jelinek wrote:
> > The following patch attempts to fix it at least partially, for packed
> > arrays.  The size computation should be correct even for non-packed arrays,
> > but in that case we'd need to allocate a temporary and concatenate the array
> > elements into it, possibly with a runtime check whether the temporary needs
> > to be allocated and populated/freed.
> 
> And this updated patch instead should fix it fully, take care of the needed
> packing if the array is not packed.
> To avoid code duplication, I'm using gfc_conv_array_parameter function
> which does almost what we want, except that it doesn't compute the array
> size and the return value in se->expr isn't something from which it could be
> computed.  So the patch adds an optional size outgoing argument, if
> non-NULL, the size will be computed, all older callers just pass NULL.
> 
> Ok for trunk if testing succeeds?

OK, with 2 comments below.

> +
> +static void
> +gfc_array_parameter_size (tree desc, gfc_expr *expr, tree *size)

I don't know if this conforms to the Gnu Code Standard, but by
convention the gfortran guys normally do not use the gfc_ 
prefix on static functions.  Yes, there is an inconsistent
adherence to this rule in other code. 

>    /* Deallocate the allocatable components of structures that are
> --- gcc/fortran/trans-io.c.jj	2009-05-04 16:46:12.000000000 +0200
> +++ gcc/fortran/trans-io.c	2009-05-12 17:29:32.000000000 +0200
(snip)

> +  if (0 && e->expr_type == EXPR_VARIABLE
> +      && e->ref->u.ar.type == AR_FULL
> +      && e->symtree
> +      && e->symtree->n.sym->backend_decl
> +      && GFC_DECL_PACKED_ARRAY (e->symtree->n.sym->backend_decl))

Why the '0' in the above?

-- 
Steve


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]