mirror of git://gcc.gnu.org/git/gcc.git
re PR fortran/70696 ([Coarray] ICE on EVENT POST of host-associated EVENT_TYPE coarray)
gcc/testsuite/ChangeLog: 2017-01-13 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/70696 * gfortran.dg/coarray/event_3.f08: New test. gcc/fortran/ChangeLog: 2017-01-13 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/70696 * trans-expr.c (gfc_get_tree_for_caf_expr): Ensure the backend_decl is valid before accessing it. libgfortran/ChangeLog: 2017-01-13 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/70696 * caf/single.c (_gfortran_caf_register): Allocate enough memory for the event counter. From-SVN: r244407
This commit is contained in:
parent
d8f43ee6d0
commit
4ccff88b71
|
|
@ -1,3 +1,9 @@
|
||||||
|
2017-01-13 Andre Vehreschild <vehre@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR fortran/70696
|
||||||
|
* trans-expr.c (gfc_get_tree_for_caf_expr): Ensure the backend_decl
|
||||||
|
is valid before accessing it.
|
||||||
|
|
||||||
2017-01-09 Jakub Jelinek <jakub@redhat.com>
|
2017-01-09 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
PR translation/79019
|
PR translation/79019
|
||||||
|
|
|
||||||
|
|
@ -1838,6 +1838,10 @@ gfc_get_tree_for_caf_expr (gfc_expr *expr)
|
||||||
"component at %L is not supported", &expr->where);
|
"component at %L is not supported", &expr->where);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 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;
|
caf_decl = expr->symtree->n.sym->backend_decl;
|
||||||
gcc_assert (caf_decl);
|
gcc_assert (caf_decl);
|
||||||
if (expr->symtree->n.sym->ts.type == BT_CLASS)
|
if (expr->symtree->n.sym->ts.type == BT_CLASS)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2017-01-13 Andre Vehreschild <vehre@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR fortran/70696
|
||||||
|
* gfortran.dg/coarray/event_3.f08: New test.
|
||||||
|
|
||||||
2017-01-13 Richard Biener <rguenther@suse.de>
|
2017-01-13 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
PR tree-optimization/77283
|
PR tree-optimization/77283
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
! { dg-do run }
|
||||||
|
!
|
||||||
|
! Check PR fortran/70696 is fixed.
|
||||||
|
|
||||||
|
program global_event
|
||||||
|
use iso_fortran_env , only : event_type
|
||||||
|
implicit none
|
||||||
|
type(event_type) :: x[*]
|
||||||
|
|
||||||
|
call exchange
|
||||||
|
contains
|
||||||
|
subroutine exchange
|
||||||
|
integer :: cnt
|
||||||
|
event post(x[1])
|
||||||
|
event post(x[1])
|
||||||
|
call event_query(x, cnt)
|
||||||
|
if (cnt /= 2) error stop 1
|
||||||
|
event wait(x, until_count=2)
|
||||||
|
end subroutine
|
||||||
|
end
|
||||||
|
|
@ -1,3 +1,9 @@
|
||||||
|
2017-01-13 Andre Vehreschild <vehre@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR fortran/70696
|
||||||
|
* caf/single.c (_gfortran_caf_register): Allocate enough memory for
|
||||||
|
the event counter.
|
||||||
|
|
||||||
2017-01-07 Andre Vehreschild <vehre@gcc.gnu.org>
|
2017-01-07 Andre Vehreschild <vehre@gcc.gnu.org>
|
||||||
|
|
||||||
PR fortran/78781
|
PR fortran/78781
|
||||||
|
|
|
||||||
|
|
@ -141,9 +141,12 @@ _gfortran_caf_register (size_t size, caf_register_t type, caf_token_t *token,
|
||||||
caf_single_token_t single_token;
|
caf_single_token_t single_token;
|
||||||
|
|
||||||
if (type == CAF_REGTYPE_LOCK_STATIC || type == CAF_REGTYPE_LOCK_ALLOC
|
if (type == CAF_REGTYPE_LOCK_STATIC || type == CAF_REGTYPE_LOCK_ALLOC
|
||||||
|| type == CAF_REGTYPE_CRITICAL || type == CAF_REGTYPE_EVENT_STATIC
|
|| type == CAF_REGTYPE_CRITICAL)
|
||||||
|| type == CAF_REGTYPE_EVENT_ALLOC)
|
|
||||||
local = calloc (size, sizeof (bool));
|
local = calloc (size, sizeof (bool));
|
||||||
|
else if (type == CAF_REGTYPE_EVENT_STATIC || type == CAF_REGTYPE_EVENT_ALLOC)
|
||||||
|
/* In the event_(wait|post) function the counter for events is a uint32,
|
||||||
|
so better allocate enough memory here. */
|
||||||
|
local = calloc (size, sizeof (uint32_t));
|
||||||
else if (type == CAF_REGTYPE_COARRAY_ALLOC_REGISTER_ONLY)
|
else if (type == CAF_REGTYPE_COARRAY_ALLOC_REGISTER_ONLY)
|
||||||
local = NULL;
|
local = NULL;
|
||||||
else
|
else
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue