# RUN: rm -rf %t.dir && mkdir -p %t.dir # RUN: yaml2obj %s -o %t.dir/pack.o # RUN: dsymutil --linker classic -y %p/Inputs/dwarflinker-template-parameter-pack.map -oso-prepend-path=%t.dir -f -o - | llvm-dwarfdump -a - | FileCheck %s # RUN: dsymutil --linker parallel -y %p/Inputs/dwarflinker-template-parameter-pack.map -oso-prepend-path=%t.dir -f -o - | llvm-dwarfdump -a - | FileCheck %s ## A DW_TAG_GNU_template_parameter_pack with three identical ## DW_TAG_template_type_parameter children (all referring to the same ## int base type) must be preserved as three separate child DIEs after ## linking. Before the parallel linker registered the pack tag with ## SyntheticTypeNameBuilder, pack children received no ordered synthetic ## key and TypePool deduplicated the three siblings down to one. # CHECK: DW_TAG_structure_type # CHECK: DW_AT_name {{.*}}"Pack" # CHECK: DW_TAG_GNU_template_parameter_pack # CHECK: DW_AT_name {{.*}}"Ts" # CHECK: DW_TAG_template_type_parameter # CHECK: DW_AT_type {{.*}}"int" # CHECK: DW_TAG_template_type_parameter # CHECK: DW_AT_type {{.*}}"int" # CHECK: DW_TAG_template_type_parameter # CHECK: DW_AT_type {{.*}}"int" # CHECK-NOT: DW_TAG_template_type_parameter --- !mach-o FileHeader: magic: 0xFEEDFACF cputype: 0x01000007 cpusubtype: 0x00000003 filetype: 0x00000001 ncmds: 2 sizeofcmds: 376 flags: 0x00002000 reserved: 0x00000000 LoadCommands: - cmd: LC_SEGMENT_64 cmdsize: 232 segname: '' vmaddr: 0x00 vmsize: 0x300 fileoff: 0x300 filesize: 0x300 maxprot: 7 initprot: 7 nsects: 2 flags: 0 Sections: - sectname: __debug_abbrev segname: __DWARF addr: 0x000000000000000F size: 0x37 offset: 0x00000380 align: 0 reloff: 0x00000000 nreloc: 0 flags: 0x02000000 reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 - sectname: __debug_info segname: __DWARF addr: 0x000000000000100 size: 0x44 offset: 0x000003B7 align: 0 reloff: 0x00000600 nreloc: 1 flags: 0x02000000 reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 relocations: - address: 0x000001FC symbolnum: 1 pcrel: true length: 3 extern: true type: 0 scattered: false value: 0 - cmd: LC_SYMTAB cmdsize: 24 symoff: 0x700 nsyms: 1 stroff: 0x710 strsize: 10 LinkEditData: NameList: - n_strx: 1 n_type: 0x0F n_sect: 1 n_desc: 0 n_value: 0 StringTable: - '' - '__Z3foov' - '' DWARF: debug_abbrev: - Table: - Tag: DW_TAG_compile_unit Children: DW_CHILDREN_yes Attributes: - Attribute: DW_AT_producer Form: DW_FORM_string - Attribute: DW_AT_language Form: DW_FORM_data2 - Tag: DW_TAG_structure_type Children: DW_CHILDREN_yes Attributes: - Attribute: DW_AT_name Form: DW_FORM_string - Tag: DW_TAG_GNU_template_parameter_pack Children: DW_CHILDREN_yes Attributes: - Attribute: DW_AT_name Form: DW_FORM_string - Tag: DW_TAG_template_type_parameter Children: DW_CHILDREN_no Attributes: - Attribute: DW_AT_type Form: DW_FORM_ref_addr - Tag: DW_TAG_base_type Children: DW_CHILDREN_no Attributes: - Attribute: DW_AT_name Form: DW_FORM_string - Tag: DW_TAG_variable Children: DW_CHILDREN_no Attributes: - Attribute: DW_AT_name Form: DW_FORM_string - Attribute: DW_AT_const_value Form: DW_FORM_data4 - Attribute: DW_AT_type Form: DW_FORM_ref_addr debug_info: - Version: 4 Entries: ## 0x0b: DW_TAG_compile_unit - AbbrCode: 1 Values: - CStr: by_hand - Value: 0x04 ## 0x16: DW_TAG_structure_type "Pack" - AbbrCode: 2 Values: - CStr: Pack ## 0x1c: DW_TAG_GNU_template_parameter_pack "Ts" - AbbrCode: 3 Values: - CStr: Ts ## 0x20: DW_TAG_template_type_parameter -> int - AbbrCode: 4 Values: - Value: 0x00000031 ## 0x25: DW_TAG_template_type_parameter -> int - AbbrCode: 4 Values: - Value: 0x00000031 ## 0x2a: DW_TAG_template_type_parameter -> int - AbbrCode: 4 Values: - Value: 0x00000031 ## 0x2f: NULL (close pack) - AbbrCode: 0 ## 0x30: NULL (close structure) - AbbrCode: 0 ## 0x31: DW_TAG_base_type "int" - AbbrCode: 5 Values: - CStr: int ## 0x36: DW_TAG_variable "var" -> Pack - AbbrCode: 6 Values: - CStr: var - Value: 0x000000ff - Value: 0x00000016 ## 0x43: NULL (close CU) - AbbrCode: 0 ...