File: associative-comdat.s

package info (click to toggle)
llvm-toolchain-13 1%3A13.0.1-11
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,418,840 kB
  • sloc: cpp: 5,290,826; ansic: 996,570; asm: 544,593; python: 188,212; objc: 72,027; lisp: 30,291; f90: 25,395; sh: 24,898; javascript: 9,780; pascal: 9,398; perl: 7,484; ml: 5,432; awk: 3,523; makefile: 2,913; xml: 953; cs: 573; fortran: 539
file content (48 lines) | stat: -rw-r--r-- 1,664 bytes parent folder | download | duplicates (27)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# REQUIRES: x86
# RUN: llvm-mc -triple=x86_64-windows-msvc %s -filetype=obj -o %t1.obj
# RUN: llvm-mc -triple=x86_64-windows-msvc %S/Inputs/associative-comdat-2.s -filetype=obj -o %t2.obj

# RUN: lld-link -entry:main %t1.obj %t2.obj -out:%t.gc.exe
# RUN: llvm-readobj --sections %t.gc.exe | FileCheck %s

# RUN: lld-link -entry:main %t1.obj %t2.obj -opt:noref -out:%t.nogc.exe
# RUN: llvm-readobj --sections %t.nogc.exe | FileCheck %s

# CHECK: Sections [
# CHECK:   Section {
# CHECK:     Number: 2
# CHECK-LABEL:     Name: .rdata (2E 72 64 61 74 61 00 00)
#             This is the critical check to show that only *one* definition of
#             foo_assoc was retained. This *must* be 8, not 16.
# CHECK-NEXT:     VirtualSize: 0x8
# CHECK:   Section {
# CHECK:     Number: 3
# CHECK-LABEL:     Name: .data (2E 64 61 74 61 00 00 00)
# CHECK-NEXT:     VirtualSize: 0x4

        .text
        .def     main;
        .scl    2;
        .type   32;
        .endef
        .globl  main                    # -- Begin function main
        .p2align        4, 0x90
main:                                   # @main
# BB#0:
        movl    foo(%rip), %eax
        retq
                                        # -- End function

# Defines foo and foo_assoc globals. foo is comdat, and foo_assoc is comdat
# associative with it. foo_assoc should be discarded iff foo is discarded,
# either by linker GC or normal comdat merging.

        .section        .rdata,"dr",associative,foo
        .p2align        3
        .quad   foo

        .section        .data,"dw",discard,foo
        .globl  foo                     # @foo
        .p2align        2
foo:
        .long   42