From: janus Date: Mon, 10 Sep 2018 21:25:33 +0000 (+0000) Subject: fix PR 85395 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c41ff96925c4a923d0d53f9f9c073f8781e53c36;p=thirdparty%2Fgcc.git fix PR 85395 2018-09-10 Janus Weil PR fortran/85395 * decl.c (match_binding_attributes): Use correct default accessibility for procedure pointer components. 2018-09-10 Janus Weil PR fortran/85395 * gfortran.dg/proc_ptr_comp_52.f90: New test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264196 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 7cfb94ee1152..97d97e845bd2 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2018-09-10 Janus Weil + + PR fortran/85395 + * decl.c (match_binding_attributes): Use correct default accessibility + for procedure pointer components. + 2018-09-03 Jerry DeLisle * simplify.c (gfc_simplify_modulo): Re-arrange code to test whether diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 03298833c98d..3d19ad479e5d 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -10570,7 +10570,8 @@ match_binding_attributes (gfc_typebound_proc* ba, bool generic, bool ppc) done: if (ba->access == ACCESS_UNKNOWN) - ba->access = gfc_typebound_default_access; + ba->access = ppc ? gfc_current_block()->component_access + : gfc_typebound_default_access; if (ppc && !seen_ptr) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0c038441a8c5..dd0f878abc59 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-09-10 Janus Weil + + PR fortran/85395 + * gfortran.dg/proc_ptr_comp_52.f90: New test case. + 2018-09-08 Marek Polacek PR c++/87150 - wrong ctor with maybe-rvalue semantics. diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_comp_52.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_comp_52.f90 new file mode 100644 index 000000000000..631c0180753c --- /dev/null +++ b/gcc/testsuite/gfortran.dg/proc_ptr_comp_52.f90 @@ -0,0 +1,33 @@ +! { dg-do compile } +! +! PR 85395: [F03] private clause contained in derived type acquires spurious scope +! +! Contributed by + +module defs + implicit none + + type :: base + contains + private + end type + + type :: options + procedure(), pointer, nopass :: ptr + end type + + type :: t + private + procedure(), pointer, nopass, public :: ptr + end type +end module + + +program p + use defs + implicit none + type(options) :: self + type(t) :: dt + self%ptr => null() + dt%ptr => null() +end