aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-array.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-05-02 08:27:54 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-05-02 08:27:54 +0000
commitc83e6ebf120438b41dd1b2a5f8b64ba9699c7992 (patch)
treec37271e52ad39661f4b85395eeff0afe91eb9883 /gcc/fortran/trans-array.c
parent7555e8b225e370e0ef7f42c0e58c03ae626d9c3b (diff)
downloadgcc-c83e6ebf120438b41dd1b2a5f8b64ba9699c7992.zip
gcc-c83e6ebf120438b41dd1b2a5f8b64ba9699c7992.tar.gz
gcc-c83e6ebf120438b41dd1b2a5f8b64ba9699c7992.tar.bz2
trans-array.c (gfc_trans_create_temp_array): Properly create a DECL_EXPR for the anonymous VLA array type.
2016-05-02 Richard Biener <rguenther@suse.de> fortran/ * trans-array.c (gfc_trans_create_temp_array): Properly create a DECL_EXPR for the anonymous VLA array type. From-SVN: r235705
Diffstat (limited to 'gcc/fortran/trans-array.c')
-rw-r--r--gcc/fortran/trans-array.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c
index 825dfb8..7be301d 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)));