1! { dg-do compile } 2! { dg-options "-fdump-tree-original" } 3! 4! PR 80983: [F03] memory leak when calling procedure-pointer component with allocatable result 5! 6! Contributed by Janus Weil <janus@gcc.gnu.org> 7 8program test 9 implicit none 10 11 type :: concrete_type 12 procedure (alloc_integer), pointer, nopass :: alloc 13 end type 14 15 procedure (alloc_integer), pointer :: pp 16 17 type(concrete_type) :: concrete 18 19 print *, alloc_integer() ! case #1: plain function 20 21 pp => alloc_integer 22 print *, pp() ! case #2: procedure pointer 23 24 concrete % alloc => alloc_integer 25 print *, concrete % alloc() ! case #3: procedure-pointer component 26 27contains 28 29 function alloc_integer() result(res) 30 integer, allocatable :: res 31 allocate(res, source=13) 32 end function 33 34end 35 36! { dg-final { scan-tree-dump-times "__builtin_free" 3 "original" } } 37