aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-openmp.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/fortran/trans-openmp.cc')
-rw-r--r--gcc/fortran/trans-openmp.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/fortran/trans-openmp.cc b/gcc/fortran/trans-openmp.cc
index e1c9d46..4d56a771 100644
--- a/gcc/fortran/trans-openmp.cc
+++ b/gcc/fortran/trans-openmp.cc
@@ -5536,9 +5536,12 @@ gfc_trans_omp_depobj (gfc_code *code)
gcc_assert (POINTER_TYPE_P (TREE_TYPE (var)));
}
else if ((n->sym->attr.allocatable || n->sym->attr.pointer)
- && n->sym->attr.optional)
+ && n->sym->attr.dummy)
var = build_fold_indirect_ref (var);
- else if (!POINTER_TYPE_P (TREE_TYPE (var)))
+ else if (!POINTER_TYPE_P (TREE_TYPE (var))
+ || (n->sym->ts.f90_type == BT_VOID
+ && !POINTER_TYPE_P (TREE_TYPE (TREE_TYPE (var)))
+ && !GFC_ARRAY_TYPE_P (TREE_TYPE (TREE_TYPE (var)))))
{
TREE_ADDRESSABLE (var) = 1;
var = gfc_build_addr_expr (NULL, var);