From 31f74accb27dfe58e1926dbbcb0b9d57e55bde42 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 25 Jul 2005 09:51:12 +0200 Subject: re PR fortran/20063 (n*'xxxx' disables padding) PR fortran/20063 * data.c (gfc_assign_data_value_range): Call create_character_initializer if last_ts is a character type. * gfortran.fortran-torture/execute/data_4.f90: New test. From-SVN: r102349 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/data.c | 15 ++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) (limited to 'gcc/fortran') diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index c8e31bf..205c717 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2005-07-25 Jakub Jelinek + + PR fortran/20063 + * data.c (gfc_assign_data_value_range): Call + create_character_initializer if last_ts is a character type. + 2005-07-22 Manfred Hollstein * match.c (gfc_match_symbol): Fix uninitialised warnings. diff --git a/gcc/fortran/data.c b/gcc/fortran/data.c index 5eeee0c..d614db4 100644 --- a/gcc/fortran/data.c +++ b/gcc/fortran/data.c @@ -459,12 +459,17 @@ gfc_assign_data_value_range (gfc_expr * lvalue, gfc_expr * rvalue, last_con = con; } - /* We should never be overwriting an existing initializer. */ - gcc_assert (!init); + if (last_ts->type == BT_CHARACTER) + expr = create_character_intializer (init, last_ts, NULL, rvalue); + else + { + /* We should never be overwriting an existing initializer. */ + gcc_assert (!init); - expr = gfc_copy_expr (rvalue); - if (!gfc_compare_types (&lvalue->ts, &expr->ts)) - gfc_convert_type (expr, &lvalue->ts, 0); + expr = gfc_copy_expr (rvalue); + if (!gfc_compare_types (&lvalue->ts, &expr->ts)) + gfc_convert_type (expr, &lvalue->ts, 0); + } if (last_con == NULL) symbol->value = expr; -- cgit v1.1