aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessandro Fanfarillo <fanfarillo.gcc@gmail.com>2016-02-27 04:57:16 -0700
committerAlessandro Fanfarillo <afanfa@gcc.gnu.org>2016-02-27 04:57:16 -0700
commit83aa73e7f8ee23726c2da4c2b0b7805ff524dcd9 (patch)
tree07c158d42233921a9f190d43a9742094ba449fff
parentbd522678f0bb10849e24c10391d8a244b5098815 (diff)
downloadgcc-83aa73e7f8ee23726c2da4c2b0b7805ff524dcd9.zip
gcc-83aa73e7f8ee23726c2da4c2b0b7805ff524dcd9.tar.gz
gcc-83aa73e7f8ee23726c2da4c2b0b7805ff524dcd9.tar.bz2
Right size for events
From-SVN: r233779
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/trans-types.c3
-rw-r--r--gcc/fortran/trans.c2
3 files changed, 10 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 6614793..5f1bc4f 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,10 @@
+2016-02-27 Alessandro Fanfarillo <fanfarillo.gcc@gmail.com>
+
+ * 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 <jvdelisle@gcc.gnu.org>
PR fortran/61156
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));