re PR fortran/71014 (associate statement inside omp parallel do appears to disable default private attribute for inner loop indices)
PR fortran/71014 * resolve.c (gfc_resolve): For ns->construct_entities don't save, clear and restore omp state around the resolving. * testsuite/libgomp.fortran/pr71014.f90: New test. From-SVN: r239620
This commit is contained in:
parent
fbdbd4b6d7
commit
1cad928453
4 changed files with 33 additions and 2 deletions
|
@ -1,5 +1,9 @@
|
|||
2016-08-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR fortran/71014
|
||||
* resolve.c (gfc_resolve): For ns->construct_entities don't save, clear
|
||||
and restore omp state around the resolving.
|
||||
|
||||
PR fortran/69281
|
||||
* trans-openmp.c (gfc_trans_omp_parallel, gfc_trans_omp_task,
|
||||
gfc_trans_omp_target): Wrap gfc_trans_omp_code result in an extra
|
||||
|
|
|
@ -15587,7 +15587,8 @@ gfc_resolve (gfc_namespace *ns)
|
|||
/* As gfc_resolve can be called during resolution of an OpenMP construct
|
||||
body, we should clear any state associated to it, so that say NS's
|
||||
DO loops are not interpreted as OpenMP loops. */
|
||||
gfc_omp_save_and_clear_state (&old_omp_state);
|
||||
if (!ns->construct_entities)
|
||||
gfc_omp_save_and_clear_state (&old_omp_state);
|
||||
|
||||
resolve_types (ns);
|
||||
component_assignment_level = 0;
|
||||
|
@ -15599,5 +15600,6 @@ gfc_resolve (gfc_namespace *ns)
|
|||
|
||||
gfc_run_passes (ns);
|
||||
|
||||
gfc_omp_restore_state (&old_omp_state);
|
||||
if (!ns->construct_entities)
|
||||
gfc_omp_restore_state (&old_omp_state);
|
||||
}
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2016-08-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR fortran/71014
|
||||
* testsuite/libgomp.fortran/pr71014.f90: New test.
|
||||
|
||||
2016-08-18 Chung-Lin Tang <cltang@codesourcery.com>
|
||||
|
||||
PR middle-end/70895
|
||||
|
|
20
libgomp/testsuite/libgomp.fortran/pr71014.f90
Normal file
20
libgomp/testsuite/libgomp.fortran/pr71014.f90
Normal file
|
@ -0,0 +1,20 @@
|
|||
! PR fortran/71014
|
||||
! { dg-do run }
|
||||
! { dg-additional-options "-O0" }
|
||||
|
||||
program pr71014
|
||||
implicit none
|
||||
integer :: i, j
|
||||
integer, parameter :: t = 100*101/2
|
||||
integer :: s(16)
|
||||
s(:) = 0
|
||||
!$omp parallel do
|
||||
do j = 1, 16
|
||||
associate (k => j)
|
||||
do i = 1, 100
|
||||
s(j) = s(j) + i
|
||||
end do
|
||||
end associate
|
||||
end do
|
||||
if (any(s /= t)) call abort
|
||||
end program pr71014
|
Loading…
Add table
Reference in a new issue