| ! { dg-do compile } |
| ! { dg-options "-O2 -fdump-tree-optimized" } |
| ! |
| ! PR fortran/47266 |
| ! |
| ! Check whether the private procedure "priv" is optimized away |
| ! |
| module m |
| implicit none |
| private :: priv |
| private :: export1, export2 |
| public :: pub |
| contains |
| integer function priv() |
| priv = 44 |
| end function priv |
| integer function export1() |
| export1 = 45 |
| end function export1 |
| function export2() bind(C) ! { dg-warning "is marked PRIVATE" } |
| use iso_c_binding, only: c_int |
| integer(c_int) :: export2 |
| export2 = 46 |
| end function export2 |
| subroutine pub(a,b) |
| integer :: a |
| procedure(export1), pointer :: b |
| a = priv() |
| b => export1 |
| end subroutine pub |
| end module m |
| ! { dg-final { scan-tree-dump-times "priv" 0 "optimized" } } |
| ! { dg-final { scan-tree-dump-times "export1 \\(\\)" 1 "optimized" } } |
| ! { dg-final { scan-tree-dump-times "export2 \\(\\)" 1 "optimized" } } |