diff options
author | Tobias Burnus <burnus@net-b.de> | 2011-12-15 16:18:33 +0100 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2011-12-15 16:18:33 +0100 |
commit | 0c5c7b003e8dec16f3cb887aa08c7f5241ee6fcc (patch) | |
tree | 4c0b4bee0841fb6d8c38be6a94642ea26b78a058 /gcc | |
parent | 492792ed9b7a3b6ce5f595b2dc848eb2dae8116f (diff) | |
download | gcc-0c5c7b003e8dec16f3cb887aa08c7f5241ee6fcc.zip gcc-0c5c7b003e8dec16f3cb887aa08c7f5241ee6fcc.tar.gz gcc-0c5c7b003e8dec16f3cb887aa08c7f5241ee6fcc.tar.bz2 |
re PR fortran/51550 (ICE in gfc_get_derived_type, at fortran/trans-types.c:2401)
2011-12-15 Tobias Burnus <burnus@net-b.de>
PR fortran/51550
PR fortran/47545
PR fortran/49050
PR fortran/51075
* resolve.c (resolve_fl_derived0): Print not-implemented error
for deferred-length character components.
From-SVN: r182372
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 8 |
2 files changed, 17 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 1f00326..5175e41 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,5 +1,14 @@ 2011-12-15 Tobias Burnus <burnus@net-b.de> + PR fortran/51550 + PR fortran/47545 + PR fortran/49050 + PR fortran/51075 + * resolve.c (resolve_fl_derived0): Print not-implemented error + for deferred-length character components. + +2011-12-15 Tobias Burnus <burnus@net-b.de> + * primary.c (gfc_match_varspec): Match array spec for polymorphic coarrays. (gfc_match_rvalue): If a symbol of unknown flavor has a diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index b4a9d1c..b12efe0 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -11432,6 +11432,14 @@ resolve_fl_derived0 (gfc_symbol *sym) for (c = sym->components; c != NULL; c = c->next) { + /* See PRs 51550, 47545, 48654, 49050, 51075 - and 45170. */ + if (c->ts.type == BT_CHARACTER && c->ts.deferred) + { + gfc_error ("Deferred-length character component '%s' at %L is not " + "yet supported", c->name, &c->loc); + return FAILURE; + } + /* F2008, C442. */ if ((!sym->attr.is_class || c != sym->components) && c->attr.codimension |