43 lines
1.1 KiB
Diff
43 lines
1.1 KiB
Diff
2014-08-15 Jakub Jelinek <jakub@redhat.com>
|
|
Tobias Burnus <burnus@net-b.de>
|
|
|
|
PR fortran/62131
|
|
* openmp.c (resolve_omp_atomic): Only complain if code->expr1's attr
|
|
is allocatable, rather than whenever var->attr.allocatable.
|
|
|
|
* gfortran.dg/gomp/pr62131.f90: New test.
|
|
|
|
--- gcc/fortran/openmp.c (revision 214010)
|
|
+++ gcc/fortran/openmp.c (revision 214011)
|
|
@@ -2744,7 +2744,7 @@ resolve_omp_atomic (gfc_code *code)
|
|
break;
|
|
}
|
|
|
|
- if (var->attr.allocatable)
|
|
+ if (gfc_expr_attr (code->expr1).allocatable)
|
|
{
|
|
gfc_error ("!$OMP ATOMIC with ALLOCATABLE variable at %L",
|
|
&code->loc);
|
|
--- gcc/testsuite/gfortran.dg/gomp/pr62131.f90 (revision 0)
|
|
+++ gcc/testsuite/gfortran.dg/gomp/pr62131.f90 (revision 214011)
|
|
@@ -0,0 +1,19 @@
|
|
+! PR fortran/62131
|
|
+! { dg-do compile }
|
|
+! { dg-options "-fopenmp" }
|
|
+
|
|
+program pr62131
|
|
+ integer,allocatable :: nerrs(:,:)
|
|
+ allocate(nerrs(10,10))
|
|
+ nerrs(:,:) = 0
|
|
+!$omp parallel do
|
|
+ do k=1,10
|
|
+ call uperrs(k,1)
|
|
+ end do
|
|
+contains
|
|
+ subroutine uperrs(i,io)
|
|
+ integer,intent(in) :: i,io
|
|
+!$omp atomic
|
|
+ nerrs(i,io)=nerrs(i,io)+1
|
|
+ end subroutine
|
|
+end
|