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