From: Alessandro Fanfarillo Date: Sat, 27 Feb 2016 11:57:16 +0000 (-0700) Subject: Right size for events X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=83aa73e7f8ee23726c2da4c2b0b7805ff524dcd9;p=gcc.git Right size for events From-SVN: r233779 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 661479302f4..5f1bc4f497f 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 f3d084194de..a71cf0bcd27 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 e71430baeb8..c6688d351a7 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));