Hi, I observed that gfortran 7.2 and 8.0 generate different debug info for dynamical array. Here is a case simplified from gdb test case gdb.fortran/vla-datatypes.f90
$ cat vla-datatypes.f90 program vla_primitives integer, allocatable :: intvla(:, :, :) logical :: l allocate (intvla (11,22,33)) l = allocated(intvla) ! vlas-allocated intvla(:,:,:) = 1 intvla(5,5,5) = 42 ! vlas-initialized end program vla_primitives In gcc 8.0, the intvla debug info is, <2><b2>: Abbrev Number: 10 (DW_TAG_variable) <b3> DW_AT_name : (indirect string, offset: 0xcb): intvla <b7> DW_AT_decl_file : 1 <b8> DW_AT_decl_line : 2 <b9> DW_AT_type : <0x127> <bd> DW_AT_location : 3 byte block: 91 e0 7e (DW_OP_fbreg: -160) <1><127>: Abbrev Number: 14 (DW_TAG_array_type) <128> DW_AT_ordering : 1 (column major) <129> DW_AT_data_location: 4 byte block: 97 23 8 6 (DW_OP_push_object_address; DW_OP_plus_uconst: 8; DW_OP_deref) <12e> DW_AT_allocated : 6 byte block: 97 23 8 6 30 2e (DW_OP_push_object_address; DW_OP_plus_uconst: 8; DW_OP_deref; DW_OP_lit0; DW_OP_ne) <135> DW_AT_type : <0x7b> <139> DW_AT_sibling : <0x174> <2><13d>: Abbrev Number: 15 (DW_TAG_subrange_type) <13e> DW_AT_lower_bound : 4 byte block: 97 23 28 6 (DW_OP_push_object_address; DW_OP_plus_uconst: 40; DW_OP_deref) <143> DW_AT_upper_bound : 4 byte block: 97 23 30 6 (DW_OP_push_object_address; DW_OP_plus_uconst: 48; DW_OP_deref) <148> DW_AT_byte_stride : 6 byte block: 97 23 20 6 34 1e (DW_OP_push_object_address; DW_OP_plus_uconst: 32; DW_OP_deref; DW_OP_lit4; DW_OP_mul) <2><14f>: Abbrev Number: 15 (DW_TAG_subrange_type) <150> DW_AT_lower_bound : 4 byte block: 97 23 40 6 (DW_OP_push_object_address; DW_OP_plus_uconst: 64; DW_OP_deref) <155> DW_AT_upper_bound : 4 byte block: 97 23 48 6 (DW_OP_push_object_address; DW_OP_plus_uconst: 72; DW_OP_deref) <15a> DW_AT_byte_stride : 6 byte block: 97 23 38 6 34 1e (DW_OP_push_object_address; DW_OP_plus_uconst: 56; DW_OP_deref; DW_OP_lit4; DW_OP_mul) <2><161>: Abbrev Number: 15 (DW_TAG_subrange_type) <162> DW_AT_lower_bound : 4 byte block: 97 23 58 6 (DW_OP_push_object_address; DW_OP_plus_uconst: 88; DW_OP_deref) <167> DW_AT_upper_bound : 4 byte block: 97 23 60 6 (DW_OP_push_object_address; DW_OP_plus_uconst: 96; DW_OP_deref) <16c> DW_AT_byte_stride : 6 byte block: 97 23 50 6 34 1e (DW_OP_push_object_address; DW_OP_plus_uconst: 80; DW_OP_deref; DW_OP_lit4; DW_OP_mul) <2><173>: Abbrev Number: 0 In gcc 7.2, it is, <2><b2>: Abbrev Number: 10 (DW_TAG_variable) <b3> DW_AT_name : (indirect string, offset: 0x12): intvla <b7> DW_AT_decl_file : 1 <b8> DW_AT_decl_line : 2 <b9> DW_AT_type : <0x127> <bd> DW_AT_location : 3 byte block: 91 e0 7e (DW_OP_fbreg: -160) <1><127>: Abbrev Number: 14 (DW_TAG_array_type) <128> DW_AT_ordering : 1 (column major) <129> DW_AT_data_location: 2 byte block: 97 6 (DW_OP_push_object_address; DW_OP_deref) <12c> DW_AT_allocated : 4 byte block: 97 6 30 2e (DW_OP_push_object_address; DW_OP_deref; DW_OP_lit0; DW_OP_ne) <131> DW_AT_type : <0x7b> <135> DW_AT_sibling : <0x170> <2><139>: Abbrev Number: 15 (DW_TAG_subrange_type) <13a> DW_AT_lower_bound : 4 byte block: 97 23 20 6 (DW_OP_push_object_address; DW_OP_plus_uconst: 32; DW_OP_deref) <13f> DW_AT_upper_bound : 4 byte block: 97 23 28 6 (DW_OP_push_object_address; DW_OP_plus_uconst: 40; DW_OP_deref) <144> DW_AT_byte_stride : 6 byte block: 97 23 18 6 34 1e (DW_OP_push_object_address; DW_OP_plus_uconst: 24; DW_OP_deref; DW_OP_lit4; DW_OP_mul) <2><14b>: Abbrev Number: 15 (DW_TAG_subrange_type) <14c> DW_AT_lower_bound : 4 byte block: 97 23 38 6 (DW_OP_push_object_address; DW_OP_plus_uconst: 56; DW_OP_deref) <151> DW_AT_upper_bound : 4 byte block: 97 23 40 6 (DW_OP_push_object_address; DW_OP_plus_uconst: 64; DW_OP_deref) <156> DW_AT_byte_stride : 6 byte block: 97 23 30 6 34 1e (DW_OP_push_object_address; DW_OP_plus_uconst: 48; DW_OP_deref; DW_OP_lit4; DW_OP_mul) <2><15d>: Abbrev Number: 15 (DW_TAG_subrange_type) <15e> DW_AT_lower_bound : 4 byte block: 97 23 50 6 (DW_OP_push_object_address; DW_OP_plus_uconst: 80; DW_OP_deref) <163> DW_AT_upper_bound : 4 byte block: 97 23 58 6 (DW_OP_push_object_address; DW_OP_plus_uconst: 88; DW_OP_deref) <168> DW_AT_byte_stride : 6 byte block: 97 23 48 6 34 1e (DW_OP_push_object_address; DW_OP_plus_uconst: 72; DW_OP_deref; DW_OP_lit4; DW_OP_mul) <2><16f>: Abbrev Number: Attributes DW_AT_data_location and DW_AT_allocated are different. There is an extra "DW_OP_plus_uconst: 8" generated by gcc 8.0. Is it intended or expected? gfortran 8.0 causes many gdb.fotran vla-related tests fail, but gfortran 7.2 doesn't. That is why I took a look at the debug information. -- Yao (齐尧)