aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/data.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2005-07-25 09:51:12 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2005-07-25 09:51:12 +0200
commit31f74accb27dfe58e1926dbbcb0b9d57e55bde42 (patch)
treef2941d00c497cee2722fe86e247561fbdf30c097 /gcc/fortran/data.c
parent044ed7ecf6f07beb86a90f7d79b3f5b9424764db (diff)
downloadgcc-31f74accb27dfe58e1926dbbcb0b9d57e55bde42.zip
gcc-31f74accb27dfe58e1926dbbcb0b9d57e55bde42.tar.gz
gcc-31f74accb27dfe58e1926dbbcb0b9d57e55bde42.tar.bz2
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
Diffstat (limited to 'gcc/fortran/data.c')
-rw-r--r--gcc/fortran/data.c15
1 files changed, 10 insertions, 5 deletions
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;