diff options
author | Harald Anlauf <anlauf@gmx.de> | 2021-09-14 20:23:27 +0200 |
---|---|---|
committer | Harald Anlauf <anlauf@gmx.de> | 2021-09-14 20:23:27 +0200 |
commit | b305ec979d9dfc8153859a62a8ab9dd43c3bfc73 (patch) | |
tree | 9ce3c507b282916c447c92648f9313f5d31ccbd1 /gcc/fortran/resolve.c | |
parent | c89d805397f1f09b1a58f01d5cb90211c85a9abc (diff) | |
download | gcc-b305ec979d9dfc8153859a62a8ab9dd43c3bfc73.zip gcc-b305ec979d9dfc8153859a62a8ab9dd43c3bfc73.tar.gz gcc-b305ec979d9dfc8153859a62a8ab9dd43c3bfc73.tar.bz2 |
Fortran - fix ICE during error recovery checking entry characteristics
gcc/fortran/ChangeLog:
PR fortran/102311
* resolve.c (resolve_entries): Attempt to recover cleanly after
rejecting mismatched function entries.
gcc/testsuite/ChangeLog:
PR fortran/102311
* gfortran.dg/entry_25.f90: New test.
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 8e5ed1c..30b96b2 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -811,7 +811,7 @@ resolve_entries (gfc_namespace *ns) gfc_error ("Function %s at %L has entry %s with mismatched " "characteristics", ns->entries->sym->name, &ns->entries->sym->declared_at, el->sym->name); - return; + goto cleanup; } else if (ts->type == BT_CHARACTER && ts->u.cl && fts->u.cl && (((ts->u.cl->length && !fts->u.cl->length) @@ -917,6 +917,8 @@ resolve_entries (gfc_namespace *ns) } } } + +cleanup: proc->attr.access = ACCESS_PRIVATE; proc->attr.entry_master = 1; |