Message ID | CAHqFgjX+HHp3X-S6hw5Xfr3p=gTqSBVg4cZhVPDtBm1E8MfBOQ@mail.gmail.com |
---|---|
State | New |
Headers | show |
* PING * 2016-02-20 18:25 GMT+01:00 Alessandro Fanfarillo <fanfarillo.gcc@gmail.com>: > Dear all, > > currently, the compiler doesn't pass the right size to the > registration routine of OpenCoarrays for event variables: > > size.15 = 0; > > ev.data = (void * restrict) _gfortran_caf_register (MAX_EXPR <size.15, > 1>, 6, &ev.token, 0B, 0B, 0); > > The attached patch solves the problem. > > I don't understand the following block in trans-types.c: > > if (flag_coarray != GFC_FCOARRAY_LIB > && derived->from_intmod == INTMOD_ISO_FORTRAN_ENV > && derived->intmod_sym_id == ISOFORTRAN_EVENT_TYPE) > return gfc_get_int_type (gfc_default_integer_kind); > > Why should an event variable be different from a lock variable when > LIBCAF_SINGLE is used? > > The patch has been built and regtested on x86_64-pc-linux-gnu. > > Ok for trunk and gcc-5-branch?
Hi Allessandro,
> * PING *
Looks obvious and simple enough for me.
OK.
Thanks for the patch!
Thomas
Dear Alessandro, Seconded! I saw your ping on my phone and was going to respond..... well, now :-) Thanks for the patch Paul On 26 February 2016 at 18:29, Thomas Koenig <tkoenig@netcologne.de> wrote: > Hi Allessandro, > >> * PING * > > > Looks obvious and simple enough for me. > > OK. > > Thanks for the patch! > > Thomas >
Thanks! Patch committed as revision 233779 on trunk and as revision 233780 on gcc-5-branch. 2016-02-26 19:14 GMT+01:00 Paul Richard Thomas <paul.richard.thomas@gmail.com>: > Dear Alessandro, > > Seconded! I saw your ping on my phone and was going to respond..... > well, now :-) > > Thanks for the patch > > Paul > > On 26 February 2016 at 18:29, Thomas Koenig <tkoenig@netcologne.de> wrote: >> Hi Allessandro, >> >>> * PING * >> >> >> Looks obvious and simple enough for me. >> >> OK. >> >> Thanks for the patch! >> >> Thomas >> > > > > -- > The difference between genius and stupidity is; genius has its limits. > > Albert Einstein
diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c index f3d0841..a71cf0b 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 e71430b..c6688d3 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));