Hi Jerry, thanks for the fast review. Committed as r244587.
Regards, Andre On Wed, 18 Jan 2017 09:38:40 -0800 Jerry DeLisle <jvdeli...@charter.net> wrote: > On 01/18/2017 04:26 AM, Andre Vehreschild wrote: > > Hi all, > > > > the patch I proposed for this pr unfortunately did not catch all errors. > > Dominique figured, that the original testcase was not resolved (thanks for > > that). > > > > This patch resolves the linker problem by putting the static token into the > > parent function's decl list. Furthermore does the patch beautify the > > retrieval of the symbol in gfc_get_tree_for_caf_expr () and remove the > > following assert which is unnecessary then, because the symbol is either > > already present or created. And gfc_get_symbol_decl () can not return NULL. > > > > Bootstrapped and regtested ok on x86_64-linux/f25 and x86-linux/f25 for > > trunk. Bootstrapped and regtested ok on x86_64-linux/f25 for gcc-6 > > (x86-linux has not been tested, because the VM is not that fast). > > > > Ok for trunk and gcc-6? > > > > Regards, > > Andre > > > > This one is OK, thanks. > > Jerry -- Andre Vehreschild * Email: vehre ad gmx dot de
Index: gcc/fortran/ChangeLog =================================================================== --- gcc/fortran/ChangeLog (Revision 244585) +++ gcc/fortran/ChangeLog (Arbeitskopie) @@ -1,3 +1,12 @@ +2017-01-17 Andre Vehreschild <ve...@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 <ve...@gcc.gnu.org> PR fortran/70697 Index: gcc/fortran/trans-decl.c =================================================================== --- gcc/fortran/trans-decl.c (Revision 244585) +++ gcc/fortran/trans-decl.c (Arbeitskopie) @@ -971,6 +971,8 @@ 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); } Index: gcc/fortran/trans-expr.c =================================================================== --- gcc/fortran/trans-expr.c (Revision 244585) +++ gcc/fortran/trans-expr.c (Arbeitskopie) @@ -1839,11 +1839,10 @@ } /* 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) Index: gcc/testsuite/ChangeLog =================================================================== --- gcc/testsuite/ChangeLog (Revision 244585) +++ gcc/testsuite/ChangeLog (Arbeitskopie) @@ -1,3 +1,8 @@ +2017-01-17 Andre Vehreschild <ve...@gcc.gnu.org> + + PR fortran/70696 + * gfortran.dg/coarray_event_1.f08: New test. + 2017-01-18 Jakub Jelinek <ja...@redhat.com> PR target/77416 Index: gcc/testsuite/gfortran.dg/coarray_event_1.f08 =================================================================== --- gcc/testsuite/gfortran.dg/coarray_event_1.f08 (nicht existent) +++ gcc/testsuite/gfortran.dg/coarray_event_1.f08 (Arbeitskopie) @@ -0,0 +1,15 @@ +! { dg-do compile } +! { dg-options "-fcoarray=lib -lcaf_single" } + +! Check that pr70696 is really fixed. + + use iso_fortran_env + type(event_type) :: x[*] + + ! exchange must not be called or the link problem before the patch + ! does not occur. +contains + subroutine exchange + event post (x[1]) + end subroutine +end