diff options
| author | janus <janus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-08-19 09:03:20 +0000 |
|---|---|---|
| committer | janus <janus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-08-19 09:03:20 +0000 |
| commit | 837c3aa399e5ddbbb088600589977c6bc47344f8 (patch) | |
| tree | 6c69f7ce6afb817c81d25c3af67151b38c3fb9f6 /gcc | |
| parent | 379ed41fece71eeae6a2f043a0fd17deb839166b (diff) | |
| download | ppe42-gcc-837c3aa399e5ddbbb088600589977c6bc47344f8.tar.gz ppe42-gcc-837c3aa399e5ddbbb088600589977c6bc47344f8.zip | |
2013-08-19 Janus Weil <janus@gcc.gnu.org>
PR fortran/46271
* openmp.c (resolve_omp_clauses): Bugfix for procedure pointers.
2013-08-19 Janus Weil <janus@gcc.gnu.org>
PR fortran/46271
* gfortran.dg/gomp/proc_ptr_1.f90: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@201835 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
| -rw-r--r-- | gcc/fortran/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/fortran/openmp.c | 4 | ||||
| -rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/testsuite/gfortran.dg/gomp/proc_ptr_1.f90 | 28 |
4 files changed, 39 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index ba34ac1c5ab..53e446e0015 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2013-08-19 Janus Weil <janus@gcc.gnu.org> + + PR fortran/46271 + * openmp.c (resolve_omp_clauses): Bugfix for procedure pointers. + 2013-08-12 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/56666 diff --git a/gcc/fortran/openmp.c b/gcc/fortran/openmp.c index 865f8365cfc..6c4dccbed10 100644 --- a/gcc/fortran/openmp.c +++ b/gcc/fortran/openmp.c @@ -847,7 +847,7 @@ resolve_omp_clauses (gfc_code *code) for (n = omp_clauses->lists[list]; n; n = n->next) { n->sym->mark = 0; - if (n->sym->attr.flavor == FL_VARIABLE) + if (n->sym->attr.flavor == FL_VARIABLE || n->sym->attr.proc_pointer) continue; if (n->sym->attr.flavor == FL_PROCEDURE && n->sym->result == n->sym @@ -876,8 +876,6 @@ resolve_omp_clauses (gfc_code *code) if (el) continue; } - if (n->sym->attr.proc_pointer) - continue; } gfc_error ("Object '%s' is not a variable at %L", n->sym->name, &code->loc); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 659ce71168d..d0eee3f8fc4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-08-19 Janus Weil <janus@gcc.gnu.org> + + PR fortran/46271 + * gfortran.dg/gomp/proc_ptr_1.f90: New. + 2013-08-18 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/58006 diff --git a/gcc/testsuite/gfortran.dg/gomp/proc_ptr_1.f90 b/gcc/testsuite/gfortran.dg/gomp/proc_ptr_1.f90 new file mode 100644 index 00000000000..952c31491ed --- /dev/null +++ b/gcc/testsuite/gfortran.dg/gomp/proc_ptr_1.f90 @@ -0,0 +1,28 @@ +! { dg-do compile } +! +! PR 46271: [F03] OpenMP default(none) and procedure pointers +! +! Contributed by Marco Restelli <mrestelli@gmail.com> + +program test + implicit none + integer :: i + real :: s(1000) + procedure(f), pointer :: pf + + pf => f + + !$omp parallel do schedule(static) private(i) shared(s,pf) default(none) + do i=1,1000 + call pf(real(i),s(i)) + enddo + !$omp end parallel do + + write(*,*) 'Sum ',sum(s) +contains + pure subroutine f(x,y) + real, intent(in) :: x + real, intent(out) :: y + y = sin(x)*cos(x) + end subroutine +end |

