xref: /llvm-project/llvm/test/tools/llvm-dwarfdump/X86/stats-scope-bytes-covered.yaml (revision c450e47a8c2d7f73ddeb370725e163d418e215e7)
13ff4d75cSOCHyams# RUN: yaml2obj %s | llvm-dwarfdump --statistics - | FileCheck %s
23ff4d75cSOCHyams
33ff4d75cSOCHyams## Check that coverage for variable locations which do not cover the parent
43ff4d75cSOCHyams## scope is tracked separately in "sum_all_variables(#bytes in any scope
53ff4d75cSOCHyams## covered by DW_AT_location)".
63ff4d75cSOCHyams##
73ff4d75cSOCHyams## The yaml represents this DWARF:
83ff4d75cSOCHyams##
93ff4d75cSOCHyams## DW_TAG_compile_unit
103ff4d75cSOCHyams##   DW_AT_low_pc	(0x0000000000000000)
113ff4d75cSOCHyams##   DW_AT_high_pc	(0x000000000000000b)
123ff4d75cSOCHyams##
133ff4d75cSOCHyams##   DW_TAG_subprogram
143ff4d75cSOCHyams##     DW_AT_low_pc	(0x0000000000000000)
153ff4d75cSOCHyams##     DW_AT_high_pc	(0x000000000000000b)
163ff4d75cSOCHyams##
173ff4d75cSOCHyams##     DW_TAG_lexical_block
183ff4d75cSOCHyams##       DW_AT_ranges	(0x00000000
193ff4d75cSOCHyams##          [0x0000000000000000, 0x0000000000000003)
203ff4d75cSOCHyams##          [0x0000000000000005, 0x0000000000000008))
213ff4d75cSOCHyams##
223ff4d75cSOCHyams##       // #bytes in parent scope: 6
233ff4d75cSOCHyams##       // #bytes in any scope covered by DW_AT_location: 6
243ff4d75cSOCHyams##       // #bytes in parent scope covered by DW_AT_location: 4
253ff4d75cSOCHyams##       DW_TAG_variable
263ff4d75cSOCHyams##         DW_AT_location	(0x00000000:
273ff4d75cSOCHyams##            [0x0000000000000000, 0x0000000000000006): DW_OP_reg5 RDI)
283ff4d75cSOCHyams##
293ff4d75cSOCHyams##       // #bytes in parent scope: 6
303ff4d75cSOCHyams##       // #bytes in any scope covered by DW_AT_location: 2
313ff4d75cSOCHyams##       // #bytes in parent scope covered by DW_AT_location: 0
323ff4d75cSOCHyams##       DW_TAG_variable
333ff4d75cSOCHyams##         DW_AT_location	(0x00000023:
343ff4d75cSOCHyams##            [0x0000000000000003, 0x0000000000000005): DW_OP_reg2 RCX)
353ff4d75cSOCHyams
36*c450e47aSdjtodoro# CHECK: "version": 9,
373ff4d75cSOCHyams# CHECK: "sum_all_variables(#bytes in parent scope)": 12,
383ff4d75cSOCHyams# CHECK: "sum_all_variables(#bytes in any scope covered by DW_AT_location)": 8
393ff4d75cSOCHyams# CHECK: "sum_all_variables(#bytes in parent scope covered by DW_AT_location)": 4
403ff4d75cSOCHyams
413ff4d75cSOCHyams--- !ELF
423ff4d75cSOCHyamsFileHeader:
433ff4d75cSOCHyams  Class:   ELFCLASS64
443ff4d75cSOCHyams  Data:    ELFDATA2LSB
453ff4d75cSOCHyams  Type:    ET_EXEC
463ff4d75cSOCHyams  Machine: EM_X86_64
473ff4d75cSOCHyamsSections:
483ff4d75cSOCHyams  - Name:         .debug_loc
493ff4d75cSOCHyams    Type:         SHT_PROGBITS
503ff4d75cSOCHyams    AddressAlign: 0x01
513ff4d75cSOCHyams    Content:      '00000000000000000600000000000000010055000000000000000000000000000000000300000000000000050000000000000001005200000000000000000000000000000000'
523ff4d75cSOCHyams  - Name:         .debug_ranges
533ff4d75cSOCHyams    Type:         SHT_PROGBITS
543ff4d75cSOCHyams    AddressAlign: 0x01
553ff4d75cSOCHyams    Content:      '000000000000000003000000000000000500000000000000080000000000000000000000000000000000000000000000'
563ff4d75cSOCHyamsDWARF:
573ff4d75cSOCHyams  debug_abbrev:
583ff4d75cSOCHyams    - Table:
593ff4d75cSOCHyams      - Code:     1
603ff4d75cSOCHyams        Tag:      DW_TAG_compile_unit
613ff4d75cSOCHyams        Children: DW_CHILDREN_yes
623ff4d75cSOCHyams        Attributes:
633ff4d75cSOCHyams          - Attribute: DW_AT_low_pc
643ff4d75cSOCHyams            Form:      DW_FORM_addr
653ff4d75cSOCHyams          - Attribute: DW_AT_high_pc
663ff4d75cSOCHyams            Form:      DW_FORM_data4
673ff4d75cSOCHyams      - Code:     2
683ff4d75cSOCHyams        Tag:      DW_TAG_subprogram
693ff4d75cSOCHyams        Children: DW_CHILDREN_yes
703ff4d75cSOCHyams        Attributes:
713ff4d75cSOCHyams          - Attribute: DW_AT_low_pc
723ff4d75cSOCHyams            Form:      DW_FORM_addr
733ff4d75cSOCHyams          - Attribute: DW_AT_high_pc
743ff4d75cSOCHyams            Form:      DW_FORM_data4
753ff4d75cSOCHyams      - Code:     3
763ff4d75cSOCHyams        Tag:      DW_TAG_lexical_block
773ff4d75cSOCHyams        Children: DW_CHILDREN_yes
783ff4d75cSOCHyams        Attributes:
793ff4d75cSOCHyams          - Attribute: DW_AT_ranges
803ff4d75cSOCHyams            Form:      DW_FORM_sec_offset
813ff4d75cSOCHyams      - Code:     4
823ff4d75cSOCHyams        Tag:      DW_TAG_variable
833ff4d75cSOCHyams        Children: DW_CHILDREN_no
843ff4d75cSOCHyams        Attributes:
853ff4d75cSOCHyams          - Attribute: DW_AT_location
863ff4d75cSOCHyams            Form:      DW_FORM_sec_offset
873ff4d75cSOCHyams  debug_info:
883ff4d75cSOCHyams    - Version:    4
893ff4d75cSOCHyams      AbbrOffset: 0x00
903ff4d75cSOCHyams      Entries:
913ff4d75cSOCHyams        - AbbrCode: 1 ## DW_TAG_compile_unit
923ff4d75cSOCHyams          Values:
933ff4d75cSOCHyams            - Value: 0x00 ## DW_AT_low_pc
943ff4d75cSOCHyams            - Value: 0x0b ## DW_AT_high_pc
953ff4d75cSOCHyams        - AbbrCode: 2 ## DW_TAG_subprogram
963ff4d75cSOCHyams          Values:
973ff4d75cSOCHyams            - Value: 0x00 ## DW_AT_low_pc
983ff4d75cSOCHyams            - Value: 0x0b ## DW_AT_high_pc
993ff4d75cSOCHyams        - AbbrCode: 3 ## DW_TAG_lexical_block
1003ff4d75cSOCHyams          Values:
1013ff4d75cSOCHyams            - Value: 0x00 ## DW_AT_ranges
1023ff4d75cSOCHyams        - AbbrCode: 4 ## DW_TAG_variable
1033ff4d75cSOCHyams          Values:
1043ff4d75cSOCHyams            - Value: 0x00 ## DW_AT_sec_offset
1053ff4d75cSOCHyams        - AbbrCode: 4 ## DW_TAG_variable
1063ff4d75cSOCHyams          Values:
1073ff4d75cSOCHyams            - Value: 0x23 ## DW_AT_sec_offset
1083ff4d75cSOCHyams        - AbbrCode: 0 ## NULL
1093ff4d75cSOCHyams        - AbbrCode: 0 ## NULL
1103ff4d75cSOCHyams        - AbbrCode: 0 ## NULL
111