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
This commit is contained in:
parent
fd2e4e99d8
commit
310e447210
@ -1,3 +1,9 @@
|
||||
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>
|
||||
|
||||
* f95-lang.c (gfc_init_decl_processing): Remove second argument in call
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* OpenMP directive matching and resolving.
|
||||
Copyright (C) 2005, 2006, 2007, 2008
|
||||
Copyright (C) 2005, 2006, 2007, 2008, 2010
|
||||
Free Software Foundation, Inc.
|
||||
Contributed by Jakub Jelinek
|
||||
|
||||
@ -1367,7 +1367,6 @@ gfc_resolve_omp_parallel_blocks (gfc_code *code, gfc_namespace *ns)
|
||||
void
|
||||
gfc_resolve_do_iterator (gfc_code *code, gfc_symbol *sym)
|
||||
{
|
||||
struct omp_context *ctx;
|
||||
int i = omp_current_do_collapse;
|
||||
gfc_code *c = omp_current_do_code;
|
||||
|
||||
@ -1386,21 +1385,21 @@ gfc_resolve_do_iterator (gfc_code *code, gfc_symbol *sym)
|
||||
c = c->block->next;
|
||||
}
|
||||
|
||||
for (ctx = omp_current_ctx; ctx; ctx = ctx->previous)
|
||||
if (omp_current_ctx == NULL)
|
||||
return;
|
||||
|
||||
if (pointer_set_contains (omp_current_ctx->sharing_clauses, sym))
|
||||
return;
|
||||
|
||||
if (! pointer_set_insert (omp_current_ctx->private_iterators, sym))
|
||||
{
|
||||
if (pointer_set_contains (ctx->sharing_clauses, sym))
|
||||
continue;
|
||||
gfc_omp_clauses *omp_clauses = omp_current_ctx->code->ext.omp_clauses;
|
||||
gfc_namelist *p;
|
||||
|
||||
if (! pointer_set_insert (ctx->private_iterators, sym))
|
||||
{
|
||||
gfc_omp_clauses *omp_clauses = ctx->code->ext.omp_clauses;
|
||||
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;
|
||||
}
|
||||
p = gfc_get_namelist ();
|
||||
p->sym = sym;
|
||||
p->next = omp_clauses->lists[OMP_LIST_PRIVATE];
|
||||
omp_clauses->lists[OMP_LIST_PRIVATE] = p;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,10 @@
|
||||
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
|
||||
* gfortran.dg/gomp/pr43337.f90: New test.
|
||||
|
||||
|
@ -28,10 +28,10 @@
|
||||
end do
|
||||
!$omp end single
|
||||
!$omp end parallel
|
||||
!$omp parallel default (none) shared (a)
|
||||
i = 1
|
||||
j = 1
|
||||
k = 1
|
||||
!$omp parallel default (none) shared (a) ! { dg-error "enclosing parallel" }
|
||||
i = 1 ! { dg-error "not specified in" }
|
||||
j = 1 ! { dg-error "not specified in" }
|
||||
k = 1 ! { dg-error "not specified in" }
|
||||
!$omp parallel default (none) shared (a)
|
||||
i = 1
|
||||
j = 1
|
||||
@ -68,8 +68,8 @@
|
||||
a(i, 1) = i + 1
|
||||
end do
|
||||
!$omp end parallel
|
||||
!$omp parallel default (none) shared (a)
|
||||
i = 1
|
||||
!$omp parallel default (none) shared (a) ! { dg-error "enclosing parallel" }
|
||||
i = 1 ! { dg-error "not specified in" }
|
||||
!$omp parallel default (none) shared (a, i)
|
||||
i = 2
|
||||
!$omp parallel default (none) shared (a)
|
||||
|
Loading…
Reference in New Issue
Block a user