diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2018-12-23 17:35:13 +0000 |
---|---|---|
committer | Paul Thomas <pault@gcc.gnu.org> | 2018-12-23 17:35:13 +0000 |
commit | 18246c420fd53a12be68b4ddfcfebf1e80056435 (patch) | |
tree | 7712c58d4bd1cef990d916718af0885e33701c5e /gcc/fortran/resolve.c | |
parent | b71bbbe2b22460ff9200613784e631496fcfc054 (diff) | |
download | gcc-18246c420fd53a12be68b4ddfcfebf1e80056435.zip gcc-18246c420fd53a12be68b4ddfcfebf1e80056435.tar.gz gcc-18246c420fd53a12be68b4ddfcfebf1e80056435.tar.bz2 |
re PR fortran/77703 (ICE on assignment to pointer function)
2018-12-23 Paul Thomas <pault@gcc.gnu.org>
PR fortran/77703
* resolve.c (get_temp_from_expr): Use the string length of
constant character expressions.
2018-12-23 Paul Thomas <pault@gcc.gnu.org>
PR fortran/77703
* gfortran.dg/ptr_func_assign_5.f08 : New test.
From-SVN: r267379
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 9ce01c7..ec8070f 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -10637,6 +10637,11 @@ get_temp_from_expr (gfc_expr *e, gfc_namespace *ns) gfc_get_sym_tree (name, ns, &tmp, false); gfc_add_type (tmp->n.sym, &e->ts, NULL); + if (e->expr_type == EXPR_CONSTANT && e->ts.type == BT_CHARACTER) + tmp->n.sym->ts.u.cl->length = gfc_get_int_expr (gfc_charlen_int_kind, + NULL, + e->value.character.length); + as = NULL; ref = NULL; aref = NULL; |