diff options
author | Steven G. Kargl <kargl@gcc.gnu.org> | 2018-06-04 15:54:48 +0000 |
---|---|---|
committer | Steven G. Kargl <kargl@gcc.gnu.org> | 2018-06-04 15:54:48 +0000 |
commit | 20ce6adefb26f000e84b92cc3206e0ac85011a24 (patch) | |
tree | c54a1826abfacb95752f85aa19275d2f4bd33f8f /gcc/fortran/resolve.c | |
parent | 37cca345b487d1e43c99ade1caf76994e50f0045 (diff) | |
download | gcc-20ce6adefb26f000e84b92cc3206e0ac85011a24.zip gcc-20ce6adefb26f000e84b92cc3206e0ac85011a24.tar.gz gcc-20ce6adefb26f000e84b92cc3206e0ac85011a24.tar.bz2 |
re PR fortran/85981 (ICE in gfc_trans_string_copy, at fortran/trans-expr.c:6539)
2018-06-04 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/85981
* resolve.c (resolve_allocate_deallocate): Check errmsg is default
character kind.
2018-06-04 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/85981
* gfortran.dg/allocate_alloc_opt_14.f90: New test.
* gfortran.dg/allocate_alloc_opt_1.f90: Update error string.
* gfortran.dg/allocate_stat_2.f90: Ditto.
* gfortran.dg/deallocate_alloc_opt_1.f90: Ditto.
From-SVN: r261154
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 3a0ff80..3d53ce5 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -7767,12 +7767,17 @@ resolve_allocate_deallocate (gfc_code *code, const char *fcn) gfc_check_vardef_context (errmsg, false, false, false, _("ERRMSG variable")); + /* F18:R928 alloc-opt is ERRMSG = errmsg-variable + F18:R930 errmsg-variable is scalar-default-char-variable + F18:R906 default-char-variable is variable + F18:C906 default-char-variable shall be default character. */ if ((errmsg->ts.type != BT_CHARACTER && !(errmsg->ref && (errmsg->ref->type == REF_ARRAY || errmsg->ref->type == REF_COMPONENT))) - || errmsg->rank > 0 ) - gfc_error ("Errmsg-variable at %L must be a scalar CHARACTER " + || errmsg->rank > 0 + || errmsg->ts.kind != gfc_default_character_kind) + gfc_error ("ERRMSG variable at %L shall be a scalar default CHARACTER " "variable", &errmsg->where); for (p = code->ext.alloc.list; p; p = p->next) |