This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug debug/84131] New: [8 REGRESSION] FORTRAN dynamical array debug info


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84131

            Bug ID: 84131
           Summary: [8 REGRESSION] FORTRAN dynamical array debug info
           Product: gcc
           Version: 8.0.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: debug
          Assignee: unassigned at gcc dot gnu.org
          Reporter: qiyao at gcc dot gnu.org
  Target Milestone: ---

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 gfortran 8.0.1 20180130, 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.1.  This difference
causes many gdb.fortran tests fail.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]