On Wed, Jan 23, 2019 at 07:43:48PM +0000, Paul Richard Thomas wrote:
> 
> Bootstrapped and regtested on FC28/x86_64 - OK for trunk?
> 

Yes with minor fixes.


> Index: gcc/fortran/trans-array.c
> ===================================================================
> *** gcc/fortran/trans-array.c (revision 268193)
> --- gcc/fortran/trans-array.c (working copy)
> *************** gfc_conv_descriptor_rank (tree desc)
> *** 293,298 ****
> --- 293,314 ----
>   

Can you put a brief comment here that describes what the
function is doing?

>   tree
> + gfc_conv_descriptor_elem_len (tree desc)
> + {
> +   tree tmp;
> +   tree dtype;
> + 
> +   dtype = gfc_conv_descriptor_dtype (desc);
> +   tmp = gfc_advance_chain (TYPE_FIELDS (TREE_TYPE (dtype)),
> +                        GFC_DTYPE_ELEM_LEN);
> +   gcc_assert (tmp!= NULL_TREE

space after tmp

> *************** gfc_conv_gfc_desc_to_cfi_desc (gfc_se *p
> *** 4950,4958 ****
>         /* All the temporary descriptors are marked as DECL_ARTIFICIAL. If
>        the expression type is different from the descriptor type, then
>        the offset must be found (eg. to a component ref or substring)
> !      and the dtype updated.  */
> !       type = gfc_typenode_for_spec (&e->ts);
> !       if (DECL_ARTIFICIAL (parmse->expr)
>         && type != gfc_get_element_type (TREE_TYPE (parmse->expr)))
>       {
>         /* Obtain the offset to the data.  */
> --- 4952,4965 ----
>         /* All the temporary descriptors are marked as DECL_ARTIFICIAL. If
>        the expression type is different from the descriptor type, then
>        the offset must be found (eg. to a component ref or substring)
> !      and the dtype updated.  Assumed type entities are only allowed
> !      to be dummies in fortran. They therefore lack the  decl specific
> !      appendiges and so must be treated differently from other fortran
> !      entities passed to CFI descriptors in the interface decl.  */

fortran is normally spelled as Fortran.
Extra space in "lack the  decl"

> + 
> +       /* Intent in requires a temporary for the data. Assumed types do not
> +      work with the standard temporary generation schemes. */

I would prefer INTENT(IN) here.  Your call.

> +       if (e->expr_type == EXPR_VARIABLE && fsym->attr.intent == INTENT_IN)
> +     {

-- 
Steve

Reply via email to