This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix PR70937
- From: Richard Biener <rguenther at suse dot de>
- To: gcc-patches at gcc dot gnu dot org
- Cc: fortran at gcc dot gnu dot org
- Date: Fri, 6 May 2016 13:29:08 +0200 (CEST)
- Subject: Re: [PATCH] Fix PR70937
- Authentication-results: sourceware.org; auth=none
- References: <alpine dot LSU dot 2 dot 11 dot 1605061318100 dot 13384 at t29 dot fhfr dot qr>
On Fri, 6 May 2016, Richard Biener wrote:
>
> The following patch fixes another case of missing DECL_EXPR in the FE.
>
> Bootstrapped on x86_64-unknown-linux-gnu, testing in progress.
>
> Ok for trunk?
Dominique noticed a FAIL early which is fixed by adjusting the patch
to only handle TYPE_DECL TYPE_NAME like so:
Index: gcc/fortran/trans-decl.c
===================================================================
--- gcc/fortran/trans-decl.c (revision 235945)
+++ gcc/fortran/trans-decl.c (working copy)
@@ -3818,6 +3818,12 @@ gfc_trans_vla_type_sizes (gfc_symbol *sy
}
gfc_trans_vla_type_sizes_1 (type, body);
+ /* gfc_build_qualified_array may have built this type but left
TYPE_NAME
+ pointing to the original type whose type sizes we need to expose to
+ the gimplifier unsharing. */
+ if (TYPE_NAME (type)
+ && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL)
+ gfc_add_expr_to_block (body, build1 (DECL_EXPR, type, TYPE_NAME
(type)));
}
I've re-started testing.
Ok with that change?
Thanks,
Richard.
> Thanks,
> Richard.
>
> 2016-05-06 Richard Biener <rguenther@suse.de>
>
> PR fortran/70937
> * trans-decl.c (gfc_trans_vla_type_sizes): Add a DECL_EXPR for
> the TYPE_DECL as well.
>
> * gfortran.dg/pr70937.f90: New testcase.
>
> Index: gcc/fortran/trans-decl.c
> ===================================================================
> *** gcc/fortran/trans-decl.c (revision 235945)
> --- gcc/fortran/trans-decl.c (working copy)
> *************** gfc_trans_vla_type_sizes (gfc_symbol *sy
> *** 3818,3823 ****
> --- 3818,3828 ----
> }
>
> gfc_trans_vla_type_sizes_1 (type, body);
> + /* gfc_build_qualified_array may have built this type but left TYPE_NAME
> + pointing to the original type whose type sizes we need to expose to
> + the gimplifier unsharing. */
> + if (TYPE_NAME (type))
> + gfc_add_expr_to_block (body, build1 (DECL_EXPR, type, TYPE_NAME (type)));
> }
>
>
> Index: gcc/testsuite/gfortran.dg/pr70937.f90
> ===================================================================
> *** gcc/testsuite/gfortran.dg/pr70937.f90 (revision 0)
> --- gcc/testsuite/gfortran.dg/pr70937.f90 (working copy)
> ***************
> *** 0 ****
> --- 1,10 ----
> + ! { dg-do compile }
> + ! { dg-options "-flto" }
> + SUBROUTINE dbcsr_test_read_args(narg, args)
> + CHARACTER(len=*), DIMENSION(:), &
> + INTENT(out) :: args
> + CHARACTER(len=80) :: line
> + DO
> + args(narg) = line
> + ENDDO
> + END SUBROUTINE dbcsr_test_read_args
>
--
Richard Biener <rguenther@suse.de>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)