aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-openmp.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2006-06-09 23:18:42 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2006-06-09 23:18:42 +0200
commitcd75853e1d1279a99afc0e5dc46b30edca64e6f4 (patch)
tree530c2e857eb28361de2db9d88b30a1ef04da4efb /gcc/fortran/trans-openmp.c
parent1c90c6f9c03360da9f6b01ef0ec28e309a0bb892 (diff)
downloadgcc-cd75853e1d1279a99afc0e5dc46b30edca64e6f4.zip
gcc-cd75853e1d1279a99afc0e5dc46b30edca64e6f4.tar.gz
gcc-cd75853e1d1279a99afc0e5dc46b30edca64e6f4.tar.bz2
re PR fortran/27916 (Problem with allocatable arrays inside OpenMP do loop)
PR fortran/27916 * trans-openmp.c (gfc_omp_clause_default_ctor): New function. * trans.h (gfc_omp_clause_default_ctor): New prototype. * f95-lang.c (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Define. * testsuite/libgomp.fortran/pr27916-1.f90: New test. * testsuite/libgomp.fortran/pr27916-2.f90: New test. From-SVN: r114520
Diffstat (limited to 'gcc/fortran/trans-openmp.c')
-rw-r--r--gcc/fortran/trans-openmp.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc/fortran/trans-openmp.c b/gcc/fortran/trans-openmp.c
index b7c6f9e..76124ac 100644
--- a/gcc/fortran/trans-openmp.c
+++ b/gcc/fortran/trans-openmp.c
@@ -94,6 +94,29 @@ gfc_omp_predetermined_sharing (tree decl)
return OMP_CLAUSE_DEFAULT_UNSPECIFIED;
}
+
+/* Return code to initialize DECL with its default constructor, or
+ NULL if there's nothing to do. */
+
+tree
+gfc_omp_clause_default_ctor (tree clause ATTRIBUTE_UNUSED, tree decl)
+{
+ tree type = TREE_TYPE (decl);
+ stmtblock_t block;
+
+ if (! GFC_DESCRIPTOR_TYPE_P (type))
+ return NULL;
+
+ /* Allocatable arrays in PRIVATE clauses need to be set to
+ "not currently allocated" allocation status. */
+ gfc_init_block (&block);
+
+ gfc_conv_descriptor_data_set (&block, decl, null_pointer_node);
+
+ return gfc_finish_block (&block);
+}
+
+
/* Return true if DECL's DECL_VALUE_EXPR (if any) should be
disregarded in OpenMP construct, because it is going to be
remapped during OpenMP lowering. SHARED is true if DECL