+2018-07-02 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/82969
+ PR fortran/86242
+ * trans-array.c (structure_alloc_comps): Do not explicitly copy
+ procedure pointer components.
+
2018-07-02 Paul Thomas <pault@gcc.gnu.org>
PR fortran/45305
--- /dev/null
+! { dg-do compile }
+!
+! Test the fix for PR86242, in which the procedure pointer in 'tester'
+! was being copied as if it were an allocatable class component.
+!
+! Contributed by <cfd@mnet-mail.de>
+!
+module test
+
+ implicit none
+
+ private
+ public :: tester
+
+ type :: wrapper
+ integer(4) :: n
+ end type wrapper
+
+ type :: output
+ real(8) :: dummy
+ end type output
+
+ type :: tester
+ class(wrapper), allocatable :: wrap
+ procedure(proc1), pointer :: ptr => null()
+ end type tester
+
+ abstract interface
+ function proc1(self) result(uc)
+ import :: tester, output
+ class(tester), intent(in) :: self
+ class(output), allocatable :: uc
+ end function proc1
+ end interface
+
+end module test
+
+! Comment #2 from Janus Weil <janus@gcc.gnu.org>
+module test1
+
+ implicit none
+
+ type :: output
+ end type
+
+ type :: tester
+ integer, allocatable :: wrap
+ procedure(proc1), pointer, nopass :: ptr
+ end type
+
+ interface ! Originally abstract
+ function proc1() result(uc)
+ import :: output
+ class(output), allocatable :: uc ! Works if a pointer
+ end function
+ end interface
+
+! PR82969 from Gerhard Steinmetz <gscfq@t-online.de>
+ type t
+ real, allocatable :: x(:)
+ procedure(f), nopass, pointer :: g
+ end type
+contains
+ function f() result(z)
+ class(t), allocatable :: z
+ end
+
+end module test1