| ! { dg-do compile } |
| ! { dg-options "-Wtarget-lifetime" } |
| ! |
| ! PR fortran/54301 |
| ! |
| function f () result (ptr) |
| integer, pointer :: ptr(:) |
| integer, allocatable, target :: a(:) |
| allocate(a(5)) |
| |
| ptr => a ! { dg-warning "Pointer at .1. in pointer assignment might outlive the pointer target" } |
| a = [1,2,3,4,5] |
| end function |
| |
| |
| subroutine foo() |
| integer, pointer :: ptr(:) |
| call bar () |
| contains |
| subroutine bar () |
| integer, target :: tgt(5) |
| ptr => tgt ! { dg-warning "Pointer at .1. in pointer assignment might outlive the pointer target" } |
| end subroutine bar |
| end subroutine foo |
| |
| function foo3(tgt) |
| integer, target :: tgt |
| integer, pointer :: foo3 |
| foo3 => tgt |
| end function |
| |
| subroutine sub() |
| implicit none |
| integer, pointer :: ptr |
| integer, target :: tgt |
| ptr => tgt |
| |
| block |
| integer, pointer :: p2 |
| integer, target :: tgt2 |
| p2 => tgt2 |
| p2 => tgt |
| ptr => p2 |
| ptr => tgt |
| ptr => tgt2 ! { dg-warning "Pointer at .1. in pointer assignment might outlive the pointer target" } |
| end block |
| end subroutine sub |