diff options
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/fortran/trans-decl.c | 2 | ||||
-rw-r--r-- | gcc/fortran/trans-expr.c | 9 |
3 files changed, 15 insertions, 5 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 191bfc8..a10444c 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,12 @@ +2017-01-17 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/70696 + Missed some cases, here they are: + * trans-decl.c (gfc_build_qualified_array): Add static tokens to the + parent function's scope. + * trans-expr.c (gfc_get_tree_for_caf_expr): Shorten code. Remove + unnecessary assert. + 2017-01-13 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/70697 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index fffb492..51c23e8 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -971,6 +971,8 @@ gfc_build_qualified_array (tree decl, gfc_symbol * sym) DECL_CONTEXT (token) = sym->ns->proc_name->backend_decl; gfc_module_add_decl (cur_module, token); } + else if (sym->attr.host_assoc) + gfc_add_decl_to_parent_function (token); else gfc_add_decl_to_function (token); } diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 01b7dd2..ee8e15d 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -1839,11 +1839,10 @@ gfc_get_tree_for_caf_expr (gfc_expr *expr) } /* Make sure the backend_decl is present before accessing it. */ - if (expr->symtree->n.sym->backend_decl == NULL_TREE) - expr->symtree->n.sym->backend_decl - = gfc_get_symbol_decl (expr->symtree->n.sym); - caf_decl = expr->symtree->n.sym->backend_decl; - gcc_assert (caf_decl); + caf_decl = expr->symtree->n.sym->backend_decl == NULL_TREE + ? gfc_get_symbol_decl (expr->symtree->n.sym) + : expr->symtree->n.sym->backend_decl; + if (expr->symtree->n.sym->ts.type == BT_CLASS) { if (expr->ref && expr->ref->type == REF_ARRAY) |