From 93e4b86e016229cd98357f6ce1eeafac58520e5a Mon Sep 17 00:00:00 2001 From: afanfa Date: Sat, 27 Feb 2016 11:57:16 +0000 Subject: [PATCH] Right size for events git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@233779 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 7 +++++++ gcc/fortran/trans-types.c | 3 ++- gcc/fortran/trans.c | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 661479302f48..5f1bc4f497f4 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2016-02-27 Alessandro Fanfarillo + + * trans.c (gfc_allocate_allocatable): size conversion + from byte to number of elements for event variables. + * trans-types.c (gfc_get_derived_type): event variables + represented as a pointer (like lock variable). + 2016-02-23 Jerry DeLisle PR fortran/61156 diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c index f3d084194de1..a71cf0bcd27a 100644 --- a/gcc/fortran/trans-types.c +++ b/gcc/fortran/trans-types.c @@ -2370,7 +2370,8 @@ gfc_get_derived_type (gfc_symbol * derived) if (derived->attr.unlimited_polymorphic || (flag_coarray == GFC_FCOARRAY_LIB && derived->from_intmod == INTMOD_ISO_FORTRAN_ENV - && derived->intmod_sym_id == ISOFORTRAN_LOCK_TYPE)) + && (derived->intmod_sym_id == ISOFORTRAN_LOCK_TYPE + || derived->intmod_sym_id == ISOFORTRAN_EVENT_TYPE))) return ptr_type_node; if (flag_coarray != GFC_FCOARRAY_LIB diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c index e71430baeb88..c6688d351a79 100644 --- a/gcc/fortran/trans.c +++ b/gcc/fortran/trans.c @@ -820,7 +820,7 @@ gfc_allocate_allocatable (stmtblock_t * block, tree mem, tree size, tree token, the FE only passes the pointer around and leaves the actual representation to the library. Hence, we have to convert back to the number of elements. */ - if (lock_var) + if (lock_var || event_var) size = fold_build2_loc (input_location, TRUNC_DIV_EXPR, size_type_node, size, TYPE_SIZE_UNIT (ptr_type_node)); -- 2.47.3