From 16a55411b4b374fbd2274ca4f8a4d9a2127b120c Mon Sep 17 00:00:00 2001 From: Francois-Xavier Coudert Date: Mon, 19 May 2008 15:57:28 +0000 Subject: re PR fortran/36265 (character issue with gfortran) PR fortran/36265 * trans-expr.c (gfc_conv_string_tmp): Pick the correct type for the temporary variable. * gfortran.dg/char_length_11.f90: New test. From-SVN: r135576 --- gcc/fortran/trans-expr.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'gcc/fortran/trans-expr.c') diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 482e8b1..6deaad6 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -977,7 +977,12 @@ gfc_conv_string_tmp (gfc_se * se, tree type, tree len) tmp = fold_build2 (MINUS_EXPR, gfc_charlen_type_node, len, build_int_cst (gfc_charlen_type_node, 1)); tmp = build_range_type (gfc_array_index_type, gfc_index_zero_node, tmp); - tmp = build_array_type (TREE_TYPE (TREE_TYPE (type)), tmp); + + if (TREE_CODE (TREE_TYPE (type)) == ARRAY_TYPE) + tmp = build_array_type (TREE_TYPE (TREE_TYPE (type)), tmp); + else + tmp = build_array_type (TREE_TYPE (type), tmp); + var = gfc_create_var (tmp, "str"); var = gfc_build_addr_expr (type, var); } -- cgit v1.1