| ! RUN: %flang_fc1 -fdebug-unparse %s 2>&1 | FileCheck %s |
| subroutine test_storage_size(n) |
| interface |
| function return_char(l) |
| integer :: l |
| character(l) :: return_char |
| end function |
| end interface |
| integer n |
| !CHECK: PRINT *, storage_size(return_char(n)) |
| print*, storage_size(return_char(n)) |
| !CHECK: PRINT *, sizeof(return_char(n)) |
| print*, sizeof(return_char(n)) |
| end subroutine |
| |
| module pdts |
| type t(l) |
| integer, len :: l |
| character(l) :: c |
| end type |
| contains |
| function return_pdt(n) |
| type(t(n)) :: return_pdt |
| end function |
| subroutine test(k) |
| ! NOTE: flang design for length parametrized derived type |
| ! is to use allocatables for the automatic components. Hence, |
| ! their size is independent from the length parameters and is |
| ! a compile time constant. |
| !CHECK: PRINT *, 192_4 |
| print *, storage_size(return_pdt(k)) |
| end subroutine |
| end module |