Commit 310e4472 by Jakub Jelinek Committed by Jakub Jelinek

re PR fortran/43339 (Incorrect output for pgm checking data sharing attributes)

	PR fortran/43339
	* openmp.c (gfc_resolve_do_iterator): Only make iteration vars for
	sequential loops private in the innermost containing task region.

	* gfortran.dg/gomp/sharing-2.f90: Adjust for iteration vars
	of sequential loops being private only in the innermost containing
	task region.

From-SVN: r158528
parent fd2e4e99
2010-04-19 Jakub Jelinek <jakub@redhat.com>
PR fortran/43339
* openmp.c (gfc_resolve_do_iterator): Only make iteration vars for
sequential loops private in the innermost containing task region.
2010-04-18 Eric Botcazou <ebotcazou@adacore.com> 2010-04-18 Eric Botcazou <ebotcazou@adacore.com>
* f95-lang.c (gfc_init_decl_processing): Remove second argument in call * f95-lang.c (gfc_init_decl_processing): Remove second argument in call
......
/* OpenMP directive matching and resolving. /* OpenMP directive matching and resolving.
Copyright (C) 2005, 2006, 2007, 2008 Copyright (C) 2005, 2006, 2007, 2008, 2010
Free Software Foundation, Inc. Free Software Foundation, Inc.
Contributed by Jakub Jelinek Contributed by Jakub Jelinek
...@@ -1367,7 +1367,6 @@ gfc_resolve_omp_parallel_blocks (gfc_code *code, gfc_namespace *ns) ...@@ -1367,7 +1367,6 @@ gfc_resolve_omp_parallel_blocks (gfc_code *code, gfc_namespace *ns)
void void
gfc_resolve_do_iterator (gfc_code *code, gfc_symbol *sym) gfc_resolve_do_iterator (gfc_code *code, gfc_symbol *sym)
{ {
struct omp_context *ctx;
int i = omp_current_do_collapse; int i = omp_current_do_collapse;
gfc_code *c = omp_current_do_code; gfc_code *c = omp_current_do_code;
...@@ -1386,21 +1385,21 @@ gfc_resolve_do_iterator (gfc_code *code, gfc_symbol *sym) ...@@ -1386,21 +1385,21 @@ gfc_resolve_do_iterator (gfc_code *code, gfc_symbol *sym)
c = c->block->next; c = c->block->next;
} }
for (ctx = omp_current_ctx; ctx; ctx = ctx->previous) if (omp_current_ctx == NULL)
{ return;
if (pointer_set_contains (ctx->sharing_clauses, sym))
continue;
if (! pointer_set_insert (ctx->private_iterators, sym)) if (pointer_set_contains (omp_current_ctx->sharing_clauses, sym))
{ return;
gfc_omp_clauses *omp_clauses = ctx->code->ext.omp_clauses;
gfc_namelist *p;
p = gfc_get_namelist (); if (! pointer_set_insert (omp_current_ctx->private_iterators, sym))
p->sym = sym; {
p->next = omp_clauses->lists[OMP_LIST_PRIVATE]; gfc_omp_clauses *omp_clauses = omp_current_ctx->code->ext.omp_clauses;
omp_clauses->lists[OMP_LIST_PRIVATE] = p; gfc_namelist *p;
}
p = gfc_get_namelist ();
p->sym = sym;
p->next = omp_clauses->lists[OMP_LIST_PRIVATE];
omp_clauses->lists[OMP_LIST_PRIVATE] = p;
} }
} }
......
2010-04-19 Jakub Jelinek <jakub@redhat.com> 2010-04-19 Jakub Jelinek <jakub@redhat.com>
PR fortran/43339
* gfortran.dg/gomp/sharing-2.f90: Adjust for iteration vars
of sequential loops being private only in the innermost containing
task region.
PR middle-end/43337 PR middle-end/43337
* gfortran.dg/gomp/pr43337.f90: New test. * gfortran.dg/gomp/pr43337.f90: New test.
......
...@@ -28,10 +28,10 @@ ...@@ -28,10 +28,10 @@
end do end do
!$omp end single !$omp end single
!$omp end parallel !$omp end parallel
!$omp parallel default (none) shared (a) !$omp parallel default (none) shared (a) ! { dg-error "enclosing parallel" }
i = 1 i = 1 ! { dg-error "not specified in" }
j = 1 j = 1 ! { dg-error "not specified in" }
k = 1 k = 1 ! { dg-error "not specified in" }
!$omp parallel default (none) shared (a) !$omp parallel default (none) shared (a)
i = 1 i = 1
j = 1 j = 1
...@@ -68,8 +68,8 @@ ...@@ -68,8 +68,8 @@
a(i, 1) = i + 1 a(i, 1) = i + 1
end do end do
!$omp end parallel !$omp end parallel
!$omp parallel default (none) shared (a) !$omp parallel default (none) shared (a) ! { dg-error "enclosing parallel" }
i = 1 i = 1 ! { dg-error "not specified in" }
!$omp parallel default (none) shared (a, i) !$omp parallel default (none) shared (a, i)
i = 2 i = 2
!$omp parallel default (none) shared (a) !$omp parallel default (none) shared (a)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment