aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/openmp.c
diff options
context:
space:
mode:
authorTobias Burnus <burnus@gcc.gnu.org>2019-09-20 18:05:06 +0200
committerTobias Burnus <burnus@gcc.gnu.org>2019-09-20 18:05:06 +0200
commitac4a783640162ed734c538ce1ff516b40431834b (patch)
tree58758d89b2d10fe43f3ce6b8d6b20db15be992a3 /gcc/fortran/openmp.c
parent76c93295f3b3fec8f34fccbb2c5d574c1362752a (diff)
downloadgcc-ac4a783640162ed734c538ce1ff516b40431834b.zip
gcc-ac4a783640162ed734c538ce1ff516b40431834b.tar.gz
gcc-ac4a783640162ed734c538ce1ff516b40431834b.tar.bz2
re PR fortran/78260 (ICE in gimplify_expr, at gimplify.c:11939)
2019-09-20 Tobias Burnus <tobias@codesourcery.com> PR fortran/78260 * openmp.c (gfc_resolve_oacc_declare): Reject all non variables but accept function result variables. * trans-openmp.c (gfc_trans_omp_clauses): Handle function-result variables for remaing cases. 2019-09-20 Tobias Burnus <tobias@codesourcery.com> PR fortran/78260 * gfortran.dg/goacc/parameter.f95: Change dg-error as it is now detected earlier. * gfortran.dg/goacc/pr85701.f90: Modify to use a separate result variable. * gfortran.dg/goacc/pr78260.f90: New. * gfortran.dg/goacc/pr78260-2.f90: New. * gfortran.dg/gomp/pr78260.f90: New. * gfortran.dg/gomp/pr78260-2.f90: New. * gfortran.dg/gomp/pr78260-3.f90: New. From-SVN: r276002
Diffstat (limited to 'gcc/fortran/openmp.c')
-rw-r--r--gcc/fortran/openmp.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/gcc/fortran/openmp.c b/gcc/fortran/openmp.c
index 44fcb9d..bda7f28 100644
--- a/gcc/fortran/openmp.c
+++ b/gcc/fortran/openmp.c
@@ -6048,18 +6048,14 @@ gfc_resolve_oacc_declare (gfc_namespace *ns)
for (n = oc->clauses->lists[list]; n; n = n->next)
{
n->sym->mark = 0;
- if (n->sym->attr.function || n->sym->attr.subroutine)
+ if (n->sym->attr.flavor != FL_VARIABLE
+ && (n->sym->attr.flavor != FL_PROCEDURE
+ || n->sym->result != n->sym))
{
gfc_error ("Object %qs is not a variable at %L",
n->sym->name, &oc->loc);
continue;
}
- if (n->sym->attr.flavor == FL_PARAMETER)
- {
- gfc_error ("PARAMETER object %qs is not allowed at %L",
- n->sym->name, &oc->loc);
- continue;
- }
if (n->expr && n->expr->ref->type == REF_ARRAY)
{