diff options
author | Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> | 2008-05-19 15:57:28 +0000 |
---|---|---|
committer | François-Xavier Coudert <fxcoudert@gcc.gnu.org> | 2008-05-19 15:57:28 +0000 |
commit | 16a55411b4b374fbd2274ca4f8a4d9a2127b120c (patch) | |
tree | 7f3c89b56ee917a3b75582814978b80e0823bad4 /gcc | |
parent | e7cb3dcf739c3524aa3b013c8310271fd09916a2 (diff) | |
download | gcc-16a55411b4b374fbd2274ca4f8a4d9a2127b120c.zip gcc-16a55411b4b374fbd2274ca4f8a4d9a2127b120c.tar.gz gcc-16a55411b4b374fbd2274ca4f8a4d9a2127b120c.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/trans-expr.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/char_length_11.f90 | 5 |
4 files changed, 22 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 3b1617e..4361428 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,5 +1,11 @@ 2008-05-19 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> + PR fortran/36265 + * trans-expr.c (gfc_conv_string_tmp): Pick the correct type for + the temporary variable. + +2008-05-19 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> + * simplify.c (gfc_simplify_dble, gfc_simplify_real): Initialize result variable to avoid warnings. 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); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e334077..8da6d5f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2008-05-19 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> + PR fortran/36265 + * gfortran.dg/char_length_11.f90: New test. + +2008-05-19 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> + * gfortran.dg/widechar_intrinsics_5.f90: Add dg-do directive and use -fbackslash option. diff --git a/gcc/testsuite/gfortran.dg/char_length_11.f90 b/gcc/testsuite/gfortran.dg/char_length_11.f90 new file mode 100644 index 0000000..e745c12 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/char_length_11.f90 @@ -0,0 +1,5 @@ +! { dg-do compile } + + character(len=*), parameter :: s = "foo" + write (*,*) adjustr(s(:)) +end |