[llvm] Do not replace dead constant references in metadata with undef
[llvm-project.git] / lld / test / ELF / ppc64-plt-stub-compatible.s
blob07773b645b3adfde25492acf8fda3d91386d6d97
1 # REQUIRES: ppc
2 # RUN: echo 'SECTIONS { \
3 # RUN: .text_start 0x10010300 : { *(.text_start) } \
4 # RUN: }' > %t.script
6 # RUN: llvm-mc -filetype=obj -triple=powerpc64le %s --defsym T1=1 -o %t1.o
7 # RUN: llvm-mc -filetype=obj -triple=powerpc64le %s --defsym T2=1 -o %t2.o
8 # RUN: llvm-mc -filetype=obj -triple=powerpc64le %s --defsym T3=1 -o %t3.o
9 # RUN: ld.lld --shared %t1.o -o %t1.so
10 # RUN: ld.lld -T %t.script %t1.so %t2.o -o %t2
11 # RUN: ld.lld -T %t.script %t1.so %t3.o -o %t3
12 # RUN: llvm-objdump -d --no-show-raw-insn --mcpu=pwr10 %t2 | FileCheck %s --check-prefix=T2
13 # RUN: llvm-objdump -d --no-show-raw-insn --mcpu=pwr10 %t3 | FileCheck %s --check-prefix=T3
15 # RUN: llvm-mc -filetype=obj -triple=powerpc64 %s --defsym T1=1 -o %t1.o
16 # RUN: llvm-mc -filetype=obj -triple=powerpc64 %s --defsym T2=1 -o %t2.o
17 # RUN: llvm-mc -filetype=obj -triple=powerpc64 %s --defsym T3=1 -o %t3.o
18 # RUN: ld.lld --shared %t1.o -o %t1.so
19 # RUN: ld.lld -T %t.script %t1.so %t2.o -o %t2
20 # RUN: ld.lld -T %t.script %t1.so %t3.o -o %t3
21 # RUN: llvm-objdump -d --no-show-raw-insn --mcpu=pwr10 %t2 | FileCheck %s --check-prefix=T2
22 # RUN: llvm-objdump -d --no-show-raw-insn --mcpu=pwr10 %t3 | FileCheck %s --check-prefix=T3
24 .ifdef T1
25 .globl callee
26 callee:
27 blr
28 .endif
30 # T2-LABEL: <p9codegen>:
31 # T2-NEXT: 10010300: addis 2, 12, 1
32 # T2-NEXT: 10010304: addi 2, 2, -32368
33 # T2-NEXT: 10010308: addis 4, 2, -1
34 # T2-NEXT: 1001030c: lwa 3, 32412(4)
35 # T2-NEXT: 10010310: bl 0x10010330
36 # T2-NEXT: 10010314: ld 2, 24(1)
37 # T2-NEXT: 10010318: blr
39 # T2-LABEL: <p10codegen>:
40 # T2-NEXT: 1001031c: plwa 3, 16(0), 1
41 # T2-NEXT: 10010324: bl 0x10010350
42 # T2-NEXT: 10010328: blr
44 # T2-LABEL: <__plt_callee>:
45 # T2-NEXT: 10010330: std 2, 24(1)
46 # T2-NEXT: 10010334: addis 12, 2, 0
47 # T2-NEXT: 10010338: ld 12, -32744(12)
48 # T2-NEXT: 1001033c: mtctr 12
49 # T2-NEXT: 10010340: bctr
51 # T2-LABEL: <__plt_pcrel_callee>:
52 # T2-NEXT: 10010350: pld 12, 344(0), 1
53 # T2-NEXT: 10010358: mtctr 12
54 # T2-NEXT: 1001035c: bctr
55 .ifdef T2
56 .section .text_start, "ax", %progbits
57 p9codegen:
58 .Lfunc_gep0:
59 addis 2, 12, .TOC.-.Lfunc_gep0@ha
60 addi 2, 2, .TOC.-.Lfunc_gep0@l
61 .Lfunc_lep0:
62 .localentry p9codegen, .Lfunc_lep0-.Lfunc_gep0
63 addis 4, 2, Global@toc@ha
64 lwa 3, Global@toc@l(4)
65 bl callee
66 nop
67 blr
68 p10codegen:
69 .localentry main, 1
70 plwa 3, Global@PCREL(0), 1
71 bl callee@notoc
72 blr
73 .globl Global
74 Global:
75 .long 10
76 .size Global, 4
77 .endif
79 # T3-LABEL: <p10codegen>:
80 # T3-NEXT: 10010300: plwa 3, 44(0), 1
81 # T3-NEXT: 10010308: bl 0x10010330
82 # T3-NEXT: 1001030c: blr
84 # T3-LABEL: <p9codegen>:
85 # T3-NEXT: 10010310: addis 2, 12, 1
86 # T3-NEXT: 10010314: addi 2, 2, -32392
87 # T3-NEXT: 10010318: addis 4, 2, -1
88 # T3-NEXT: 1001031c: lwa 3, 32420(4)
89 # T3-NEXT: 10010320: bl 0x10010350
90 # T3-NEXT: 10010324: ld 2, 24(1)
91 # T3-NEXT: 10010328: blr
93 # T3-LABEL: <__plt_pcrel_callee>:
94 # T3-NEXT: 10010330: pld 12, 368(0), 1
95 # T3-NEXT: 10010338: mtctr 12
96 # T3-NEXT: 1001033c: bctr
98 # T3-LABEL: <__plt_callee>:
99 # T3-NEXT: 10010350: std 2, 24(1)
100 # T3-NEXT: 10010354: addis 12, 2, 0
101 # T3-NEXT: 10010358: ld 12, -32744(12)
102 # T3-NEXT: 1001035c: mtctr 12
103 # T3-NEXT: 10010360: bctr
104 .ifdef T3
105 .section .text_start, "ax", %progbits
106 p10codegen:
107 .localentry main, 1
108 plwa 3, Global@PCREL(0), 1
109 bl callee@notoc
111 p9codegen:
112 .Lfunc_gep0:
113 addis 2, 12, .TOC.-.Lfunc_gep0@ha
114 addi 2, 2, .TOC.-.Lfunc_gep0@l
115 .Lfunc_lep0:
116 .localentry p9codegen, .Lfunc_lep0-.Lfunc_gep0
117 addis 4, 2, Global@toc@ha
118 lwa 3, Global@toc@l(4)
119 bl callee
122 .globl Global
123 Global:
124 .long 10
125 .size Global, 4
126 .endif