llvm/llvm/test/ExecutionEngine/JITLink/x86-64/COFF_comdat_associative_no_dead_strip.test

# RUN: yaml2obj %s -o %t
# RUN: llvm-jitlink -noexec \
# RUN: -slab-allocate 100Kb -slab-address 0xfff00000 -slab-page-size 4096 \
# RUN: -show-graphs='.*' -noexec %t 2>&1 | FileCheck %s
#
# Check a comdat child block connected by associative selection type is not dead strip when
# parent block is alive.
#
# CHECK: section child:
# CHECK-EMPTY:
# CHECK-NEXT: block 0xfff00000 size = 0x00000008, align = 4, alignment-offset = 0
# CHECK-NEXT:   symbols:
# CHECK-NEXT:     0xfff00000 (block + 0x00000000): size: 0x00000008, linkage: strong, scope: local, live  -   child
# CHECK-NEXT:   no edges

--- !COFF
header:
  Machine:         IMAGE_FILE_MACHINE_AMD64
  Characteristics: [  ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    Alignment:       16
    SectionData:     '0000000000000000'
    Relocations:
      - VirtualAddress:  0
        SymbolTableIndex: 2
        Type:            IMAGE_REL_AMD64_REL32
  - Name:            parent
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_LNK_COMDAT, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    Alignment:       16
    SectionData:     '0000000000000000'
  - Name:            child
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_LNK_COMDAT, IMAGE_SCN_MEM_READ ]
    Alignment:       4
    SectionData:     '0000000000000000'
symbols:
  - Name:            .text
    Value:           0
    SectionNumber:   1
    SimpleType:      IMAGE_SYM_TYPE_NULL
    ComplexType:     IMAGE_SYM_DTYPE_NULL
    StorageClass:    IMAGE_SYM_CLASS_STATIC
    SectionDefinition:
      Length:          8
      NumberOfRelocations: 0
      CheckSum:            0
      NumberOfLinenumbers: 0
      Number:          1
  - Name:            .text
    Value:           0
    SectionNumber:   2
    SimpleType:      IMAGE_SYM_TYPE_NULL
    ComplexType:     IMAGE_SYM_DTYPE_NULL
    StorageClass:    IMAGE_SYM_CLASS_STATIC
    SectionDefinition:
      Length:          8
      NumberOfRelocations: 0
      NumberOfLinenumbers: 0
      CheckSum:  0
      Number:          3
      Selection:       IMAGE_COMDAT_SELECT_ANY
  - Name:            func
    Value:           0
    SectionNumber:   2
    SimpleType:      IMAGE_SYM_TYPE_NULL
    ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
  - Name:            child
    Value:           0
    SectionNumber:   3
    SimpleType:      IMAGE_SYM_TYPE_NULL
    ComplexType:     IMAGE_SYM_DTYPE_NULL
    StorageClass:    IMAGE_SYM_CLASS_STATIC
    SectionDefinition:
      Length:          4
      NumberOfRelocations: 0
      NumberOfLinenumbers: 0
      Number:          2
      CheckSum:  0
      Selection:       IMAGE_COMDAT_SELECT_ASSOCIATIVE
  - Name:            main
    Value:           0
    SectionNumber:   1
    SimpleType:      IMAGE_SYM_TYPE_NULL
    ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
...