From: Richard Biener Date: Mon, 2 May 2016 08:27:54 +0000 (+0000) Subject: trans-array.c (gfc_trans_create_temp_array): Properly create a DECL_EXPR for the... X-Git-Tag: basepoints/gcc-8~7244 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c83e6ebf120438b41dd1b2a5f8b64ba9699c7992;p=thirdparty%2Fgcc.git trans-array.c (gfc_trans_create_temp_array): Properly create a DECL_EXPR for the anonymous VLA array type. 2016-05-02 Richard Biener fortran/ * trans-array.c (gfc_trans_create_temp_array): Properly create a DECL_EXPR for the anonymous VLA array type. From-SVN: r235705 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 6a6b85ea1fcc..115586c5dae2 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2016-05-02 Richard Biener + + * trans-array.c (gfc_trans_create_temp_array): Properly + create a DECL_EXPR for the anonymous VLA array type. + 2016-04-29 Cesar Philippidis PR middle-end/70626 diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 825dfb822af5..7be301ddab8c 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -1094,6 +1094,16 @@ gfc_trans_create_temp_array (stmtblock_t * pre, stmtblock_t * post, gfc_ss * ss, info->descriptor = desc; size = gfc_index_one_node; + /* Emit a DECL_EXPR for the variable sized array type in + GFC_TYPE_ARRAY_DATAPTR_TYPE so the gimplification of its type + sizes works correctly. */ + tree arraytype = TREE_TYPE (GFC_TYPE_ARRAY_DATAPTR_TYPE (type)); + if (! TYPE_NAME (arraytype)) + TYPE_NAME (arraytype) = build_decl (UNKNOWN_LOCATION, TYPE_DECL, + NULL_TREE, arraytype); + gfc_add_expr_to_block (pre, build1 (DECL_EXPR, + arraytype, TYPE_NAME (arraytype))); + /* Fill in the array dtype. */ tmp = gfc_conv_descriptor_dtype (desc); gfc_add_modify (pre, tmp, gfc_get_dtype (TREE_TYPE (desc)));