Commit 3083fc56 by Andre Vehreschild

re PR fortran/70696 ([Coarray] ICE on EVENT POST of host-associated EVENT_TYPE coarray)

gcc/fortran/ChangeLog:

2017-01-17  Andre Vehreschild  <vehre@gcc.gnu.org>

	PR fortran/70696
	Missed some parts, 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.

gcc/testsuite/ChangeLog:

2017-01-17  Andre Vehreschild  <vehre@gcc.gnu.org>

	PR fortran/70696
	* gfortran.dg/coarray_event_1.f08: New test.

From-SVN: r244587
parent 9bca63d4
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> 2017-01-13 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/70697 PR fortran/70697
......
...@@ -971,6 +971,8 @@ gfc_build_qualified_array (tree decl, gfc_symbol * sym) ...@@ -971,6 +971,8 @@ gfc_build_qualified_array (tree decl, gfc_symbol * sym)
DECL_CONTEXT (token) = sym->ns->proc_name->backend_decl; DECL_CONTEXT (token) = sym->ns->proc_name->backend_decl;
gfc_module_add_decl (cur_module, token); gfc_module_add_decl (cur_module, token);
} }
else if (sym->attr.host_assoc)
gfc_add_decl_to_parent_function (token);
else else
gfc_add_decl_to_function (token); gfc_add_decl_to_function (token);
} }
......
...@@ -1839,11 +1839,10 @@ gfc_get_tree_for_caf_expr (gfc_expr *expr) ...@@ -1839,11 +1839,10 @@ gfc_get_tree_for_caf_expr (gfc_expr *expr)
} }
/* Make sure the backend_decl is present before accessing it. */ /* Make sure the backend_decl is present before accessing it. */
if (expr->symtree->n.sym->backend_decl == NULL_TREE) caf_decl = expr->symtree->n.sym->backend_decl == NULL_TREE
expr->symtree->n.sym->backend_decl ? gfc_get_symbol_decl (expr->symtree->n.sym)
= gfc_get_symbol_decl (expr->symtree->n.sym); : expr->symtree->n.sym->backend_decl;
caf_decl = expr->symtree->n.sym->backend_decl;
gcc_assert (caf_decl);
if (expr->symtree->n.sym->ts.type == BT_CLASS) if (expr->symtree->n.sym->ts.type == BT_CLASS)
{ {
if (expr->ref && expr->ref->type == REF_ARRAY) if (expr->ref && expr->ref->type == REF_ARRAY)
......
2017-01-17 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/70696
* gfortran.dg/coarray_event_1.f08: New test.
2017-01-18 Jakub Jelinek <jakub@redhat.com> 2017-01-18 Jakub Jelinek <jakub@redhat.com>
PR target/77416 PR target/77416
......
! { 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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment