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

            Bug ID: 78375
           Summary: Fortran, pointer to structure, data_member_location
           Product: gcc
           Version: 6.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: debug
          Assignee: unassigned at gcc dot gnu.org
          Reporter: bernhard.heckel at intel dot com
  Target Milestone: ---

Created attachment 40052
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40052&action=edit
Pointer to struct example

According to DWARF4 & 5, DW_AT_data_member_location is referring to the
beginning of the containing entity. 
If a pointer has a target type of a struct, it means the pointer has first 
to be dereferenced (address of the containing entity) 
before the location of the member types can be resolved. 
Fortran specifies pointers but it doesn't specify a dereference operator. 

Rather then explicitly using a pointer type with a structure as a target type,
I suggest to use a structure type with the DW_AT_associated attribute (Pointer
attribute) 
This approach would be similar to how array pointers are implemented at the
moment. 

>From my point of view, DW_AT_associated (pointer) attribute should be preferred
over all rather then using pointer types.
Advantage I see:
- Less debug overhead, just one attribute compared to an additional tag +
attributes
- Similar approach to example "D.2.4 Fortran Dynamic Type Example" in DWARF 5
- No additional explicit dereferencing needed to get target value


I added a small example for the pointer to struct use-case.

Reply via email to