https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81093
--- Comment #3 from Dominique d'Humieres <dominiq at lps dot ens.fr> --- > ! wrong result > write(*,*) gen_data%mydata(:)%data1(1), gen_data%mydata(:)%data1(2) As said before I am not sure this is valid (a data_type2 object printed a data_type1 one). If it is, the output may depend upon the memory layout of the data_type2 objects. write(*,*) gen_data%mydata(1)%data1(1), gen_data%mydata(1)%data1(2) write(*,*) gen_data%mydata(2)%data1(1), gen_data%mydata(2)%data1(2) outputs 1 2 1 2