http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56845
Bug #: 56845 Summary: [OOP] _vptr not set to declared type for CLASS + SAVE Classification: Unclassified Product: gcc Version: 4.9.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: fortran AssignedTo: unassig...@gcc.gnu.org ReportedBy: bur...@gcc.gnu.org CC: ja...@gcc.gnu.org The program below fails at run time. Unallocated the class should match the declared type - but it is never set with SAVE. The dump of the following program shows: static struct __class_m_T_a y = {}; Expected: static struct __class_m_T_a y = { ._data = 0B, ._vptr = &__vtab_m_T}; module m type t integer ::a end type t contains subroutine sub type(t), save, allocatable :: x class(t), save,allocatable :: y if (.not. same_type_as(x,y)) call abort() end subroutine sub subroutine sub2 type(t), save, allocatable :: a(:) class(t), save,allocatable :: b(:) if (.not. same_type_as(a,b)) call abort() end subroutine sub2 end module m use m call sub() call sub2() end