diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 6 |
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 7ba7814..91c57e0 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2017-11-28 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/83021 + * resolve.c (resolve_component): Only escape for use assciated + vtypes if the current namespace has no proc_name and is most + particularly block data. + 2017-11-28 Jakub Jelinek <jakub@redhat.com> * trans-decl.c (gfc_trans_entry_master_switch): Build SWITCH_EXPR diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 9a81401..fe2f43a 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -13502,7 +13502,11 @@ resolve_component (gfc_component *c, gfc_symbol *sym) if (c->attr.artificial) return true; - if (sym->attr.vtype && sym->attr.use_assoc) + /* Do not allow vtype components to be resolved in nameless namespaces + such as block data because the procedure pointers will cause ICEs + and vtables are not needed in these contexts. */ + if (sym->attr.vtype && sym->attr.use_assoc + && sym->ns->proc_name == NULL) return true; /* F2008, C442. */ |