https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92006
--- Comment #1 from urbanjost at comcast dot net --- I expect the following call to storage_size() to return the value 80 whether called from within a select or not. I did not see the same issue with any other type, including a type such as type string character(len=10) :: chars enddtype string program testit use iso_c_binding implicit none character(len=10) :: string='abcdefghij' call psize(string) contains subroutine psize(chars) class(*) :: chars select type(chars) type is(character(len=*)) write(*,*)'in select ',chars,storage_size(chars) end select write(*,*)'not in select',storage_size(chars) end subroutine psize end program testit Results: $ ./a.exe in select abcdefghij 80 not in select 8