| # RUN: yaml2obj %s | llvm-dwarfdump --statistics - | FileCheck %s |
| |
| ## Check that zero coverage was reported for inlined variable with |
| ## DW_AT_abstract_origin with no location attribute as well as |
| ## for the variable that has not been generated within the inlined subroutine. |
| ## |
| ## The yaml represents DWARF as: |
| ## |
| ## DW_TAG_compile_unit |
| ## DW_AT_low_pc (0x0000000000000000) |
| ## DW_TAG_subprogram <-- (0x00000014) |
| ## DW_AT_decl_file (0x01) |
| ## DW_AT_decl_line (1) |
| ## DW_AT_inline (DW_INL_inlined) |
| ## DW_TAG_formal_parameter <-- (0x00000018) |
| ## DW_AT_decl_file (0x01) |
| ## DW_AT_decl_line (1) |
| ## DW_TAG_formal_parameter <-- (0x0000001b) |
| ## DW_AT_decl_file (0x01) |
| ## DW_AT_decl_line (1) |
| ## DW_TAG_variable <-- (0x0000001e) |
| ## DW_AT_decl_file (0x01) |
| ## DW_AT_decl_line (1) |
| ## DW_TAG_subprogram |
| ## DW_AT_decl_file (0x01) |
| ## DW_AT_decl_line (1) |
| ## DW_AT_low_pc (0x0000000000000000) |
| ## DW_AT_high_pc (0x000000000000000b) |
| ## DW_TAG_inlined_subroutine |
| ## DW_AT_abstract_origin (0x00000014) |
| ## DW_AT_low_pc (0x0000000000000000) |
| ## DW_AT_high_pc (0x0000000000000007) |
| ## DW_AT_call_file (0x01) |
| ## DW_AT_call_line (1) |
| ## DW_AT_call_column (0x01) |
| ## DW_TAG_formal_parameter |
| ## DW_AT_abstract_origin (0x00000018) |
| ## DW_TAG_variable |
| ## DW_AT_abstract_origin (0x0000001e) |
| ## DW_AT_location () |
| ## DW_TAG_inlined_subroutine |
| ## DW_AT_abstract_origin (0x00000014) |
| ## DW_AT_low_pc (0x0000000000000000) |
| ## DW_AT_high_pc (0x0000000000000007) |
| ## DW_AT_call_file (0x01) |
| ## DW_AT_call_line (1) |
| ## DW_AT_call_column (0x01) |
| ## DW_TAG_formal_parameter |
| ## DW_AT_abstract_origin (0x00000018) |
| ## DW_AT_location () |
| ## DW_TAG_variable |
| ## DW_AT_abstract_origin (0x0000001e) |
| ## DW_AT_location () |
| ## DW_TAG_inlined_subroutine |
| ## DW_AT_abstract_origin (0x00000014) |
| ## DW_AT_low_pc (0x0000000000000000) |
| ## DW_AT_high_pc (0x0000000000000007) |
| ## DW_AT_call_file (0x01) |
| ## DW_AT_call_line (1) |
| ## DW_AT_call_column (0x01) |
| ## DW_TAG_inlined_subroutine |
| ## DW_AT_abstract_origin (0x00000014) |
| ## DW_AT_low_pc (0x0000000000000002) |
| ## DW_AT_high_pc (0x000000000000000a) |
| ## DW_AT_call_file (0x01) |
| ## DW_AT_call_line (3) |
| ## DW_AT_call_column (0x03) |
| ## DW_TAG_inlined_subroutine |
| ## DW_AT_abstract_origin (0x000000e5) |
| ## DW_AT_low_pc (0x0000000000000006) |
| ## DW_AT_high_pc (0x0000000000000010) |
| ## DW_AT_call_file (0x01) |
| ## DW_AT_call_line (3) |
| ## DW_AT_call_column (0x03) |
| ## DW_TAG_inlined_subroutine |
| ## DW_AT_abstract_origin (0x000000e5) |
| ## DW_AT_low_pc (0x0000000000000006) |
| ## DW_AT_high_pc (0x0000000000000010) |
| ## DW_AT_call_file (0x01) |
| ## DW_AT_call_line (3) |
| ## DW_AT_call_column (0x03) |
| ## DW_TAG_formal_parameter |
| ## DW_AT_abstract_origin (0x000000e9) |
| ## DW_AT_location () |
| ## DW_TAG_inlined_subroutine |
| ## DW_AT_abstract_origin (0x000000f0) |
| ## DW_AT_low_pc (0x0000000000000010) |
| ## DW_AT_high_pc (0x000000000000001a) |
| ## DW_AT_call_file (0x01) |
| ## DW_AT_call_line (3) |
| ## DW_AT_call_column (0x03) |
| ## DW_TAG_formal_parameter |
| ## DW_AT_abstract_origin (0x000000f4) |
| ## DW_TAG_lexical_block |
| ## DW_AT_low_pc (0x00000000000000bc) |
| ## DW_AT_high_pc (0x00000000000000bc) |
| ## DW_TAG_variable |
| ## DW_AT_abstract_origin (0x000000f8) |
| ## DW_TAG_subprogram <-- (0x000000e5) |
| ## DW_AT_decl_file (0x01) |
| ## DW_AT_decl_line (3) |
| ## DW_AT_inline (DW_INL_inlined) |
| ## DW_TAG_formal_parameter <-- (0x000000e9) |
| ## DW_AT_decl_file (0x01) |
| ## DW_AT_decl_line (1) |
| ## DW_TAG_variable <-- (0x000000be) |
| ## DW_AT_decl_file (0x01) |
| ## DW_AT_decl_line (1) |
| ## DW_TAG_subprogram <-- (0x000000f0) |
| ## DW_AT_decl_file (0x01) |
| ## DW_AT_decl_line (3) |
| ## DW_AT_inline (DW_INL_inlined) |
| ## DW_TAG_formal_parameter <--(0x000000f4) |
| ## DW_AT_decl_file (0x01) |
| ## DW_AT_decl_line (1) |
| ## DW_TAG_lexical_block |
| ## DW_TAG_variable <--(0x000000f8) |
| ## DW_AT_decl_file (0x01) |
| ## DW_AT_decl_line (1) |
| |
| # CHECK: "version": 7, |
| # CHECK: "#variables processed by location statistics": 15, |
| # CHECK: "#variables with 0% of parent scope covered by DW_AT_location": 11, |
| # CHECK: "#variables with 100% of parent scope covered by DW_AT_location": 4, |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_EXEC |
| Machine: EM_X86_64 |
| DWARF: |
| debug_abbrev: |
| - Table: |
| - Code: 1 |
| Tag: DW_TAG_compile_unit |
| Children: DW_CHILDREN_yes |
| Attributes: |
| - Attribute: DW_AT_low_pc |
| Form: DW_FORM_addr |
| - Code: 2 |
| Tag: DW_TAG_subprogram |
| Children: DW_CHILDREN_yes |
| Attributes: |
| - Attribute: DW_AT_decl_file |
| Form: DW_FORM_data1 |
| - Attribute: DW_AT_decl_line |
| Form: DW_FORM_data1 |
| - Attribute: DW_AT_inline |
| Form: DW_FORM_data1 |
| - Code: 3 |
| Tag: DW_TAG_formal_parameter |
| Children: DW_CHILDREN_no |
| Attributes: |
| - Attribute: DW_AT_decl_file |
| Form: DW_FORM_data1 |
| - Attribute: DW_AT_decl_line |
| Form: DW_FORM_data1 |
| - Code: 4 |
| Tag: DW_TAG_formal_parameter |
| Children: DW_CHILDREN_no |
| Attributes: |
| - Attribute: DW_AT_decl_file |
| Form: DW_FORM_data1 |
| - Attribute: DW_AT_decl_line |
| Form: DW_FORM_data1 |
| - Code: 5 |
| Tag: DW_TAG_variable |
| Children: DW_CHILDREN_no |
| Attributes: |
| - Attribute: DW_AT_decl_file |
| Form: DW_FORM_data1 |
| - Attribute: DW_AT_decl_line |
| Form: DW_FORM_data1 |
| - Code: 6 |
| Tag: DW_TAG_subprogram |
| Children: DW_CHILDREN_yes |
| Attributes: |
| - Attribute: DW_AT_decl_file |
| Form: DW_FORM_data1 |
| - Attribute: DW_AT_decl_line |
| Form: DW_FORM_data1 |
| - Attribute: DW_AT_low_pc |
| Form: DW_FORM_addr |
| - Attribute: DW_AT_high_pc |
| Form: DW_FORM_data4 |
| - Code: 7 |
| Tag: DW_TAG_inlined_subroutine |
| Children: DW_CHILDREN_yes |
| Attributes: |
| - Attribute: DW_AT_abstract_origin |
| Form: DW_FORM_ref4 |
| - Attribute: DW_AT_low_pc |
| Form: DW_FORM_addr |
| - Attribute: DW_AT_high_pc |
| Form: DW_FORM_data4 |
| - Attribute: DW_AT_call_file |
| Form: DW_FORM_data1 |
| - Attribute: DW_AT_call_line |
| Form: DW_FORM_data1 |
| - Attribute: DW_AT_call_column |
| Form: DW_FORM_data1 |
| - Code: 8 |
| Tag: DW_TAG_formal_parameter |
| Children: DW_CHILDREN_no |
| Attributes: |
| - Attribute: DW_AT_abstract_origin |
| Form: DW_FORM_ref4 |
| - Code: 9 |
| Tag: DW_TAG_variable |
| Children: DW_CHILDREN_no |
| Attributes: |
| - Attribute: DW_AT_abstract_origin |
| Form: DW_FORM_ref4 |
| - Attribute: DW_AT_location |
| Form: DW_FORM_exprloc |
| - Code: 10 |
| Tag: DW_TAG_formal_parameter |
| Children: DW_CHILDREN_no |
| Attributes: |
| - Attribute: DW_AT_abstract_origin |
| Form: DW_FORM_ref4 |
| - Attribute: DW_AT_location |
| Form: DW_FORM_exprloc |
| - Code: 11 |
| Tag: DW_TAG_subprogram |
| Children: DW_CHILDREN_yes |
| Attributes: |
| - Attribute: DW_AT_decl_file |
| Form: DW_FORM_data1 |
| - Attribute: DW_AT_decl_line |
| Form: DW_FORM_data1 |
| - Attribute: DW_AT_inline |
| Form: DW_FORM_data1 |
| - Code: 12 |
| Tag: DW_TAG_formal_parameter |
| Children: DW_CHILDREN_no |
| Attributes: |
| - Attribute: DW_AT_decl_file |
| Form: DW_FORM_data1 |
| - Attribute: DW_AT_decl_line |
| Form: DW_FORM_data1 |
| - Code: 13 |
| Tag: DW_TAG_lexical_block |
| Children: DW_CHILDREN_yes |
| - Code: 14 |
| Tag: DW_TAG_lexical_block |
| Children: DW_CHILDREN_yes |
| Attributes: |
| - Attribute: DW_AT_low_pc |
| Form: DW_FORM_addr |
| - Attribute: DW_AT_high_pc |
| Form: DW_FORM_data4 |
| - Code: 15 |
| Tag: DW_TAG_formal_parameter |
| Children: DW_CHILDREN_no |
| Attributes: |
| - Attribute: DW_AT_abstract_origin |
| Form: DW_FORM_ref4 |
| - Code: 16 |
| Tag: DW_TAG_variable |
| Children: DW_CHILDREN_no |
| Attributes: |
| - Attribute: DW_AT_abstract_origin |
| Form: DW_FORM_ref4 |
| debug_info: |
| - Version: 4 |
| AbbrOffset: 0x00 |
| Entries: |
| - AbbrCode: 1 ## DW_TAG_compile_unit |
| Values: |
| - Value: 0x00 ## DW_AT_producer |
| - AbbrCode: 2 ## DW_TAG_subprogram |
| Values: |
| - Value: 1 ## DW_AT_decl_file |
| - Value: 1 ## DW_AT_decl_line |
| - Value: 1 ## DW_AT_inline |
| - AbbrCode: 3 ## DW_TAG_formal_parameter |
| Values: |
| - Value: 1 ## DW_AT_decl_file |
| - Value: 1 ## DW_AT_decl_line |
| - AbbrCode: 4 ## DW_TAG_formal_parameter |
| Values: |
| - Value: 1 ## DW_AT_decl_file |
| - Value: 1 ## DW_AT_decl_line |
| - AbbrCode: 5 ## DW_TAG_variable |
| Values: |
| - Value: 1 ## DW_AT_decl_file |
| - Value: 1 ## DW_AT_decl_line |
| - AbbrCode: 0 ## NULL |
| - AbbrCode: 6 ## DW_TAG_subprogram |
| Values: |
| - Value: 1 ## DW_AT_decl_file |
| - Value: 1 ## DW_AT_decl_line |
| - Value: 0x00 ## DW_AT_low_pc |
| - Value: 0x0b ## DW_AT_high_pc |
| - AbbrCode: 7 ## DW_TAG_inlined_subroutine |
| Values: |
| - Value: 0x14 ## DW_AT_abstract_origin |
| - Value: 0x00 ## DW_AT_low_pc |
| - Value: 0x07 ## DW_AT_high_pc |
| - Value: 1 ## DW_AT_call_file |
| - Value: 1 ## DW_AT_call_line |
| - Value: 1 ## DW_AT_call_column |
| - AbbrCode: 8 ## DW_TAG_formal_parameter |
| Values: |
| - Value: 0x18 ## DW_AT_abstract_origin |
| - AbbrCode: 9 ## DW_TAG_formal_parameter |
| Values: |
| - Value: 0x1e ## DW_AT_abstract_origin |
| - Value: 0x0 ## DW_AT_location |
| - AbbrCode: 0 ## NULL |
| - AbbrCode: 7 ## DW_TAG_inlined_subroutine |
| Values: |
| - Value: 0x14 ## DW_AT_abstract_origin |
| - Value: 0x02 ## DW_AT_low_pc |
| - Value: 0x08 ## DW_AT_high_pc |
| - Value: 1 ## DW_AT_call_file |
| - Value: 2 ## DW_AT_call_line |
| - Value: 2 ## DW_AT_call_column |
| - AbbrCode: 10 ## DW_TAG_formal_parameter |
| Values: |
| - Value: 0x18 ## DW_AT_abstract_origin |
| - Value: 0x0 ## DW_AT_location |
| - AbbrCode: 9 ## DW_TAG_variable |
| Values: |
| - Value: 0x1e ## DW_AT_abstract_origin |
| - Value: 0x0 ## DW_AT_location |
| - AbbrCode: 0 ## NULL |
| - AbbrCode: 7 ## DW_TAG_inlined_subroutine |
| Values: |
| - Value: 0x14 ## DW_AT_abstract_origin |
| - Value: 0x02 ## DW_AT_low_pc |
| - Value: 0x08 ## DW_AT_high_pc |
| - Value: 1 ## DW_AT_call_file |
| - Value: 3 ## DW_AT_call_line |
| - Value: 3 ## DW_AT_call_column |
| - AbbrCode: 0 ## NULL |
| - AbbrCode: 7 ## DW_TAG_inlined_subroutine |
| Values: |
| - Value: 0xe5 ## DW_AT_abstract_origin |
| - Value: 0x06 ## DW_AT_low_pc |
| - Value: 0x0a ## DW_AT_high_pc |
| - Value: 1 ## DW_AT_call_file |
| - Value: 3 ## DW_AT_call_line |
| - Value: 3 ## DW_AT_call_column |
| - AbbrCode: 0 ## NULL |
| - AbbrCode: 7 ## DW_TAG_inlined_subroutine |
| Values: |
| - Value: 0xe5 ## DW_AT_abstract_origin |
| - Value: 0x06 ## DW_AT_low_pc |
| - Value: 0x0a ## DW_AT_high_pc |
| - Value: 1 ## DW_AT_call_file |
| - Value: 3 ## DW_AT_call_line |
| - Value: 3 ## DW_AT_call_column |
| - AbbrCode: 10 ## DW_TAG_formal_parameter |
| Values: |
| - Value: 0xe9 ## DW_AT_abstract_origin |
| - Value: 0x0 ## DW_AT_location |
| - AbbrCode: 0 ## NULL |
| - AbbrCode: 7 ## DW_TAG_inlined_subroutine |
| Values: |
| - Value: 0xf0 ## DW_AT_abstract_origin |
| - Value: 0x10 ## DW_AT_low_pc |
| - Value: 0x0a ## DW_AT_high_pc |
| - Value: 1 ## DW_AT_call_file |
| - Value: 3 ## DW_AT_call_line |
| - Value: 3 ## DW_AT_call_column |
| - AbbrCode: 15 ## DW_TAG_formal_parameter |
| Values: |
| - Value: 0xf4 ## DW_AT_abstract_origin |
| - AbbrCode: 14 ## DW_TAG_lexical_block |
| Values: |
| - Value: 0xbc ## DW_AT_low_pc |
| - Value: 0x0 ## DW_AT_high_pc |
| - AbbrCode: 16 ## DW_TAG_variable |
| Values: |
| - Value: 0xf8 ## DW_AT_abstract_origin |
| - AbbrCode: 0 ## NULL |
| - AbbrCode: 0 ## NULL |
| - AbbrCode: 0 ## NULL |
| - AbbrCode: 2 ## DW_TAG_subprogram |
| Values: |
| - Value: 1 ## DW_AT_decl_file |
| - Value: 3 ## DW_AT_decl_line |
| - Value: 1 ## DW_AT_inline |
| - AbbrCode: 3 ## DW_TAG_formal_parameter |
| Values: |
| - Value: 1 ## DW_AT_decl_file |
| - Value: 1 ## DW_AT_decl_line |
| - AbbrCode: 5 ## DW_TAG_variable |
| Values: |
| - Value: 1 ## DW_AT_decl_file |
| - Value: 1 ## DW_AT_decl_line |
| - AbbrCode: 0 ## NULL |
| - AbbrCode: 11 ## DW_TAG_subprogram |
| Values: |
| - Value: 1 ## DW_AT_decl_file |
| - Value: 3 ## DW_AT_decl_line |
| - Value: 1 ## DW_AT_inline |
| - AbbrCode: 3 ## DW_TAG_formal_parameter |
| Values: |
| - Value: 1 ## DW_AT_decl_file |
| - Value: 1 ## DW_AT_decl_line |
| - AbbrCode: 13 ## DW_TAG_lexical_block |
| - AbbrCode: 5 ## DW_TAG_variable |
| Values: |
| - Value: 1 ## DW_AT_decl_file |
| - Value: 1 ## DW_AT_decl_line |
| - AbbrCode: 0 ## NULL |
| - AbbrCode: 0 ## NULL |
| - AbbrCode: 0 ## NULL |