www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 21156] New: DWARF: member functions are not represented as

https://issues.dlang.org/show_bug.cgi?id=21156

          Issue ID: 21156
           Summary: DWARF: member functions are not represented as
                    children of the aggregate, struct or class
           Product: D
           Version: D2
          Hardware: All
                OS: Linux
            Status: NEW
          Severity: minor
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: lucien.perregaux gmail.com

program:
---
module bar;


void main()
{
        Bar b = Bar();
        b.foo();
}

struct Bar
{
        void foo()
        {

        }
}
---

DMD:
---
0x0000007b:   DW_TAG_structure_type
                DW_AT_name      ("bar.Bar")
                DW_AT_byte_size (0x00)


0x000000c1:   DW_TAG_subprogram
                DW_AT_sibling   (0x0000010c)
                DW_AT_name      ("bar.Bar.foo")
                DW_AT_MIPS_linkage_name ("_D3bar3Bar3fooMFZv")
                DW_AT_decl_file
("/home/lucien/Documents/Programmation/D/b9800/src/main.d")
                DW_AT_decl_line (12)
                DW_AT_external  (0x01)
                DW_AT_low_pc    (0x000000000003f6b8)
                DW_AT_high_pc   (0x000000000003f6c6)
                DW_AT_frame_base        (0x0000004c: 
                   [0x000000000003f6b8, 0x000000000003f6b9): DW_OP_breg7 RSP+8
                   [0x000000000003f6b9, 0x000000000003f6bb): DW_OP_breg7 RSP+16
                   [0x000000000003f6bb, 0x000000000003f6c6): DW_OP_breg6
RBP+16)

0x000000fd:     DW_TAG_formal_parameter
                  DW_AT_name    ("this")
                  DW_AT_type    (0x000000bc "bar.Bar&")
                  DW_AT_artificial      (0x00)
                  DW_AT_location        (DW_OP_fbreg -24)

0x0000010b:     NULL
---

LDC:
---
0x0000005c:     DW_TAG_structure_type
                  DW_AT_name    ("Bar")
                  DW_AT_byte_size       (0x01)
                  DW_AT_decl_file       ("src/main.d")
                  DW_AT_decl_line       (10)
                  DW_AT_alignment       (1)

0x00000065:       DW_TAG_subprogram
                    DW_AT_low_pc        (0x0000000000000800)
                    DW_AT_high_pc       (0x0000000000000806)
                    DW_AT_frame_base    (DW_OP_reg6 RBP)
                    DW_AT_object_pointer        (0x00000082)
                    DW_AT_linkage_name  ("_D3bar3Bar3fooMFZv")
                    DW_AT_name  ("foo")
                    DW_AT_decl_file     ("src/main.d")
                    DW_AT_decl_line     (12)
                    DW_AT_external      (true)

0x00000082:         DW_TAG_formal_parameter
                      DW_AT_location    (DW_OP_breg5 RDI+0)
                      DW_AT_name        ("this")
                      DW_AT_decl_file   ("src/main.d")
                      DW_AT_decl_line   (12)
                      DW_AT_type        (0x000000d9 "Bar*")
                      DW_AT_artificial  (true)

0x00000090:         NULL

0x00000091:       NULL
---

--
Aug 13 2020