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 PR70937


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)


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