Skip to content

Commit bfd0483

Browse files
committed
More fns
1 parent dc88b67 commit bfd0483

File tree

9 files changed

+292
-3
lines changed

9 files changed

+292
-3
lines changed

tests/assembly/test_msg_send_id/expected/x86_64-apple-darwin.ll

+1-1
Original file line numberDiff line numberDiff line change
@@ -216,4 +216,4 @@ attributes #3 = { inaccessiblememonly nounwind }
216216
!110 = distinct !{!110, !111, !"_ZN4core6result19Result$LT$T$C$E$GT$3map17h6973c903a4a56d77E: argument 0"}
217217
!111 = distinct !{!111, !"_ZN4core6result19Result$LT$T$C$E$GT$3map17h6973c903a4a56d77E"}
218218
!112 = distinct !{!112, !111, !"_ZN4core6result19Result$LT$T$C$E$GT$3map17h6973c903a4a56d77E: %self"}
219-
!113 = !{i32 14074831}
219+
!113 = !{i32 14075183}

tests/assembly/test_retain_autoreleased/expected/x86_64-apple-darwin.ll

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,4 @@ attributes #2 = { inaccessiblememonly nounwind }
4444
!8 = distinct !{!8, !"_ZN5objc27message8platform15send_unverified17hc201b8e753fc02dbE"}
4545
!9 = distinct !{!9, !10, !"_ZN5objc27message15MessageReceiver12send_message17hb26bf01fb9c18ba0E: argument 0"}
4646
!10 = distinct !{!10, !"_ZN5objc27message15MessageReceiver12send_message17hb26bf01fb9c18ba0E"}
47-
!11 = !{i32 14073351}
47+
!11 = !{i32 14073703}

tests/assembly/test_static_sel/expected/apple-aarch64.s

+47
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,36 @@ Lloh7:
3939
ret
4040
.loh AdrpLdr Lloh6, Lloh7
4141

42+
.globl _use_fns
43+
.p2align 2
44+
_use_fns:
45+
Lloh8:
46+
adrp x9, L_OBJC_SELECTOR_REFERENCES_43d7e4d3b832d234@PAGE
47+
Lloh9:
48+
ldr x9, [x9, L_OBJC_SELECTOR_REFERENCES_43d7e4d3b832d234@PAGEOFF]
49+
Lloh10:
50+
adrp x10, L_OBJC_SELECTOR_REFERENCES_475a96ed80683d38@PAGE
51+
Lloh11:
52+
ldr x10, [x10, L_OBJC_SELECTOR_REFERENCES_475a96ed80683d38@PAGEOFF]
53+
Lloh12:
54+
adrp x11, L_OBJC_SELECTOR_REFERENCES_7ece3464aee33aa8@PAGE
55+
Lloh13:
56+
ldr x11, [x11, L_OBJC_SELECTOR_REFERENCES_7ece3464aee33aa8@PAGEOFF]
57+
stp x9, x10, [x8]
58+
str x11, [x8, #16]
59+
ret
60+
.loh AdrpLdr Lloh12, Lloh13
61+
.loh AdrpLdr Lloh10, Lloh11
62+
.loh AdrpLdr Lloh8, Lloh9
63+
64+
.globl _use_generic
65+
.p2align 2
66+
_use_generic:
67+
adrp x8, L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885@PAGE
68+
ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885@PAGEOFF]
69+
ldr x1, [x8, L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885@PAGEOFF]
70+
ret
71+
4272
.section __DATA,__objc_imageinfo,regular,no_dead_strip
4373
.globl L_OBJC_IMAGE_INFO_43d7e4d3b832d234
4474
.p2align 2
@@ -107,4 +137,21 @@ L_OBJC_METH_VAR_NAME_501d7eaffe8512eb:
107137
L_OBJC_SELECTOR_REFERENCES_501d7eaffe8512eb:
108138
.quad L_OBJC_METH_VAR_NAME_501d7eaffe8512eb
109139

140+
.section __DATA,__objc_imageinfo,regular,no_dead_strip
141+
.globl L_OBJC_IMAGE_INFO_17dedb23a5725885
142+
.p2align 2
143+
L_OBJC_IMAGE_INFO_17dedb23a5725885:
144+
.space 8
145+
146+
.section __TEXT,__objc_methname,cstring_literals
147+
.globl L_OBJC_METH_VAR_NAME_17dedb23a5725885
148+
L_OBJC_METH_VAR_NAME_17dedb23a5725885:
149+
.asciz "generic:"
150+
151+
.section __DATA,__objc_selrefs,literal_pointers
152+
.globl L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885
153+
.p2align 3
154+
L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885:
155+
.quad L_OBJC_METH_VAR_NAME_17dedb23a5725885
156+
110157
.subsections_via_symbols

tests/assembly/test_static_sel/expected/apple-armv7.s

+50
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,39 @@ LPC3_0:
4040
ldr r0, [pc, r0]
4141
bx lr
4242

43+
.globl _use_fns
44+
.p2align 2
45+
.code 32
46+
_use_fns:
47+
movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_43d7e4d3b832d234-(LPC4_0+8))
48+
movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_43d7e4d3b832d234-(LPC4_0+8))
49+
LPC4_0:
50+
ldr r1, [pc, r1]
51+
movw r2, :lower16:(L_OBJC_SELECTOR_REFERENCES_475a96ed80683d38-(LPC4_1+8))
52+
movt r2, :upper16:(L_OBJC_SELECTOR_REFERENCES_475a96ed80683d38-(LPC4_1+8))
53+
LPC4_1:
54+
ldr r2, [pc, r2]
55+
movw r3, :lower16:(L_OBJC_SELECTOR_REFERENCES_7ece3464aee33aa8-(LPC4_2+8))
56+
movt r3, :upper16:(L_OBJC_SELECTOR_REFERENCES_7ece3464aee33aa8-(LPC4_2+8))
57+
LPC4_2:
58+
ldr r3, [pc, r3]
59+
stm r0, {r1, r2, r3}
60+
bx lr
61+
62+
.globl _use_generic
63+
.p2align 2
64+
.code 32
65+
_use_generic:
66+
movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885-(LPC5_0+8))
67+
movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885-(LPC5_0+8))
68+
LPC5_0:
69+
ldr r0, [pc, r0]
70+
movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885-(LPC5_1+8))
71+
movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885-(LPC5_1+8))
72+
LPC5_1:
73+
ldr r1, [pc, r1]
74+
bx lr
75+
4376
.section __DATA,__objc_imageinfo,regular,no_dead_strip
4477
.globl L_OBJC_IMAGE_INFO_43d7e4d3b832d234
4578
.p2align 2
@@ -108,4 +141,21 @@ L_OBJC_METH_VAR_NAME_501d7eaffe8512eb:
108141
L_OBJC_SELECTOR_REFERENCES_501d7eaffe8512eb:
109142
.long L_OBJC_METH_VAR_NAME_501d7eaffe8512eb
110143

144+
.section __DATA,__objc_imageinfo,regular,no_dead_strip
145+
.globl L_OBJC_IMAGE_INFO_17dedb23a5725885
146+
.p2align 2
147+
L_OBJC_IMAGE_INFO_17dedb23a5725885:
148+
.space 8
149+
150+
.section __TEXT,__objc_methname,cstring_literals
151+
.globl L_OBJC_METH_VAR_NAME_17dedb23a5725885
152+
L_OBJC_METH_VAR_NAME_17dedb23a5725885:
153+
.asciz "generic:"
154+
155+
.section __DATA,__objc_selrefs,literal_pointers
156+
.globl L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885
157+
.p2align 2
158+
L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885:
159+
.long L_OBJC_METH_VAR_NAME_17dedb23a5725885
160+
111161
.subsections_via_symbols

tests/assembly/test_static_sel/expected/apple-armv7s.s

+50
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,39 @@ LPC3_0:
4040
ldr r0, [pc, r0]
4141
bx lr
4242

43+
.globl _use_fns
44+
.p2align 2
45+
.code 32
46+
_use_fns:
47+
movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_43d7e4d3b832d234-(LPC4_0+8))
48+
movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_43d7e4d3b832d234-(LPC4_0+8))
49+
LPC4_0:
50+
ldr r1, [pc, r1]
51+
movw r2, :lower16:(L_OBJC_SELECTOR_REFERENCES_475a96ed80683d38-(LPC4_1+8))
52+
movt r2, :upper16:(L_OBJC_SELECTOR_REFERENCES_475a96ed80683d38-(LPC4_1+8))
53+
LPC4_1:
54+
ldr r2, [pc, r2]
55+
movw r3, :lower16:(L_OBJC_SELECTOR_REFERENCES_7ece3464aee33aa8-(LPC4_2+8))
56+
movt r3, :upper16:(L_OBJC_SELECTOR_REFERENCES_7ece3464aee33aa8-(LPC4_2+8))
57+
LPC4_2:
58+
ldr r3, [pc, r3]
59+
stm r0, {r1, r2, r3}
60+
bx lr
61+
62+
.globl _use_generic
63+
.p2align 2
64+
.code 32
65+
_use_generic:
66+
movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885-(LPC5_0+8))
67+
movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885-(LPC5_0+8))
68+
LPC5_0:
69+
ldr r0, [pc, r0]
70+
movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885-(LPC5_1+8))
71+
movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885-(LPC5_1+8))
72+
LPC5_1:
73+
ldr r1, [pc, r1]
74+
bx lr
75+
4376
.section __DATA,__objc_imageinfo,regular,no_dead_strip
4477
.globl L_OBJC_IMAGE_INFO_43d7e4d3b832d234
4578
.p2align 2
@@ -108,4 +141,21 @@ L_OBJC_METH_VAR_NAME_501d7eaffe8512eb:
108141
L_OBJC_SELECTOR_REFERENCES_501d7eaffe8512eb:
109142
.long L_OBJC_METH_VAR_NAME_501d7eaffe8512eb
110143

144+
.section __DATA,__objc_imageinfo,regular,no_dead_strip
145+
.globl L_OBJC_IMAGE_INFO_17dedb23a5725885
146+
.p2align 2
147+
L_OBJC_IMAGE_INFO_17dedb23a5725885:
148+
.space 8
149+
150+
.section __TEXT,__objc_methname,cstring_literals
151+
.globl L_OBJC_METH_VAR_NAME_17dedb23a5725885
152+
L_OBJC_METH_VAR_NAME_17dedb23a5725885:
153+
.asciz "generic:"
154+
155+
.section __DATA,__objc_selrefs,literal_pointers
156+
.globl L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885
157+
.p2align 2
158+
L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885:
159+
.long L_OBJC_METH_VAR_NAME_17dedb23a5725885
160+
111161
.subsections_via_symbols

tests/assembly/test_static_sel/expected/apple-x86.s

+50
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,39 @@ L3$pb:
4848
pop ebp
4949
ret
5050

51+
.globl _use_fns
52+
.p2align 4, 0x90
53+
_use_fns:
54+
push ebp
55+
mov ebp, esp
56+
push esi
57+
call L4$pb
58+
L4$pb:
59+
pop ecx
60+
mov eax, dword ptr [ebp + 8]
61+
mov edx, dword ptr [ecx + L_OBJC_SELECTOR_REFERENCES_43d7e4d3b832d234-L4$pb]
62+
mov esi, dword ptr [ecx + L_OBJC_SELECTOR_REFERENCES_475a96ed80683d38-L4$pb]
63+
mov ecx, dword ptr [ecx + L_OBJC_SELECTOR_REFERENCES_7ece3464aee33aa8-L4$pb]
64+
mov dword ptr [eax], edx
65+
mov dword ptr [eax + 4], esi
66+
mov dword ptr [eax + 8], ecx
67+
pop esi
68+
pop ebp
69+
ret 4
70+
71+
.globl _use_generic
72+
.p2align 4, 0x90
73+
_use_generic:
74+
push ebp
75+
mov ebp, esp
76+
call L5$pb
77+
L5$pb:
78+
pop ecx
79+
mov eax, dword ptr [ecx + L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885-L5$pb]
80+
mov edx, dword ptr [ecx + L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885-L5$pb]
81+
pop ebp
82+
ret
83+
5184
.section __DATA,__objc_imageinfo,regular,no_dead_strip
5285
.globl L_OBJC_IMAGE_INFO_43d7e4d3b832d234
5386
.p2align 2
@@ -116,4 +149,21 @@ L_OBJC_METH_VAR_NAME_501d7eaffe8512eb:
116149
L_OBJC_SELECTOR_REFERENCES_501d7eaffe8512eb:
117150
.long L_OBJC_METH_VAR_NAME_501d7eaffe8512eb
118151

152+
.section __DATA,__objc_imageinfo,regular,no_dead_strip
153+
.globl L_OBJC_IMAGE_INFO_17dedb23a5725885
154+
.p2align 2
155+
L_OBJC_IMAGE_INFO_17dedb23a5725885:
156+
.space 8
157+
158+
.section __TEXT,__objc_methname,cstring_literals
159+
.globl L_OBJC_METH_VAR_NAME_17dedb23a5725885
160+
L_OBJC_METH_VAR_NAME_17dedb23a5725885:
161+
.asciz "generic:"
162+
163+
.section __DATA,__objc_selrefs,literal_pointers
164+
.globl L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885
165+
.p2align 2
166+
L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885:
167+
.long L_OBJC_METH_VAR_NAME_17dedb23a5725885
168+
119169
.subsections_via_symbols

tests/assembly/test_static_sel/expected/apple-x86_64.s

+42
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,31 @@ _unused_sel:
3636
pop rbp
3737
ret
3838

39+
.globl _use_fns
40+
.p2align 4, 0x90
41+
_use_fns:
42+
push rbp
43+
mov rbp, rsp
44+
mov rax, rdi
45+
mov rcx, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_43d7e4d3b832d234]
46+
mov rdx, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_475a96ed80683d38]
47+
mov rsi, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_7ece3464aee33aa8]
48+
mov qword ptr [rdi], rcx
49+
mov qword ptr [rdi + 8], rdx
50+
mov qword ptr [rdi + 16], rsi
51+
pop rbp
52+
ret
53+
54+
.globl _use_generic
55+
.p2align 4, 0x90
56+
_use_generic:
57+
push rbp
58+
mov rbp, rsp
59+
mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885]
60+
mov rdx, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885]
61+
pop rbp
62+
ret
63+
3964
.section __DATA,__objc_imageinfo,regular,no_dead_strip
4065
.globl L_OBJC_IMAGE_INFO_43d7e4d3b832d234
4166
.p2align 2
@@ -104,4 +129,21 @@ L_OBJC_METH_VAR_NAME_501d7eaffe8512eb:
104129
L_OBJC_SELECTOR_REFERENCES_501d7eaffe8512eb:
105130
.quad L_OBJC_METH_VAR_NAME_501d7eaffe8512eb
106131

132+
.section __DATA,__objc_imageinfo,regular,no_dead_strip
133+
.globl L_OBJC_IMAGE_INFO_17dedb23a5725885
134+
.p2align 2
135+
L_OBJC_IMAGE_INFO_17dedb23a5725885:
136+
.space 8
137+
138+
.section __TEXT,__objc_methname,cstring_literals
139+
.globl L_OBJC_METH_VAR_NAME_17dedb23a5725885
140+
L_OBJC_METH_VAR_NAME_17dedb23a5725885:
141+
.asciz "generic:"
142+
143+
.section __DATA,__objc_selrefs,literal_pointers
144+
.globl L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885
145+
.p2align 3
146+
L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885:
147+
.quad L_OBJC_METH_VAR_NAME_17dedb23a5725885
148+
107149
.subsections_via_symbols

tests/assembly/test_static_sel/expected/x86_64-apple-darwin.ll

+34-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@ target triple = "x86_64-apple-macosx10.7.0"
1515
@"\01L_OBJC_IMAGE_INFO_501d7eaffe8512eb" = constant <{ [8 x i8] }> zeroinitializer, section "__DATA,__objc_imageinfo,regular,no_dead_strip", align 4
1616
@"\01L_OBJC_METH_VAR_NAME_501d7eaffe8512eb" = constant <{ [4 x i8] }> <{ [4 x i8] c"xyz\00" }>, section "__TEXT,__objc_methname,cstring_literals", align 1
1717
@"\01L_OBJC_SELECTOR_REFERENCES_501d7eaffe8512eb" = global <{ i8* }> <{ i8* getelementptr inbounds (<{ [4 x i8] }>, <{ [4 x i8] }>* @"\01L_OBJC_METH_VAR_NAME_501d7eaffe8512eb", i32 0, i32 0, i32 0) }>, section "__DATA,__objc_selrefs,literal_pointers", align 8
18-
@llvm.compiler.used = appending global [4 x i8*] [i8* getelementptr inbounds (<{ [8 x i8] }>, <{ [8 x i8] }>* @"\01L_OBJC_IMAGE_INFO_43d7e4d3b832d234", i32 0, i32 0, i32 0), i8* getelementptr inbounds (<{ [8 x i8] }>, <{ [8 x i8] }>* @"\01L_OBJC_IMAGE_INFO_475a96ed80683d38", i32 0, i32 0, i32 0), i8* getelementptr inbounds (<{ [8 x i8] }>, <{ [8 x i8] }>* @"\01L_OBJC_IMAGE_INFO_501d7eaffe8512eb", i32 0, i32 0, i32 0), i8* getelementptr inbounds (<{ [8 x i8] }>, <{ [8 x i8] }>* @"\01L_OBJC_IMAGE_INFO_7ece3464aee33aa8", i32 0, i32 0, i32 0)], section "llvm.metadata"
18+
@"\01L_OBJC_IMAGE_INFO_17dedb23a5725885" = constant <{ [8 x i8] }> zeroinitializer, section "__DATA,__objc_imageinfo,regular,no_dead_strip", align 4
19+
@"\01L_OBJC_METH_VAR_NAME_17dedb23a5725885" = constant <{ [9 x i8] }> <{ [9 x i8] c"generic:\00" }>, section "__TEXT,__objc_methname,cstring_literals", align 1
20+
@"\01L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885" = global <{ i8* }> <{ i8* getelementptr inbounds (<{ [9 x i8] }>, <{ [9 x i8] }>* @"\01L_OBJC_METH_VAR_NAME_17dedb23a5725885", i32 0, i32 0, i32 0) }>, section "__DATA,__objc_selrefs,literal_pointers", align 8
21+
@llvm.compiler.used = appending global [5 x i8*] [i8* getelementptr inbounds (<{ [8 x i8] }>, <{ [8 x i8] }>* @"\01L_OBJC_IMAGE_INFO_17dedb23a5725885", i32 0, i32 0, i32 0), i8* getelementptr inbounds (<{ [8 x i8] }>, <{ [8 x i8] }>* @"\01L_OBJC_IMAGE_INFO_43d7e4d3b832d234", i32 0, i32 0, i32 0), i8* getelementptr inbounds (<{ [8 x i8] }>, <{ [8 x i8] }>* @"\01L_OBJC_IMAGE_INFO_475a96ed80683d38", i32 0, i32 0, i32 0), i8* getelementptr inbounds (<{ [8 x i8] }>, <{ [8 x i8] }>* @"\01L_OBJC_IMAGE_INFO_501d7eaffe8512eb", i32 0, i32 0, i32 0), i8* getelementptr inbounds (<{ [8 x i8] }>, <{ [8 x i8] }>* @"\01L_OBJC_IMAGE_INFO_7ece3464aee33aa8", i32 0, i32 0, i32 0)], section "llvm.metadata"
1922

2023
; Function Attrs: mustprogress nofree norecurse nounwind uwtable willreturn
2124
define nonnull i8* @get_sel() unnamed_addr #0 {
@@ -48,6 +51,36 @@ start:
4851
ret void
4952
}
5053

54+
; Function Attrs: mustprogress nofree norecurse nounwind uwtable willreturn
55+
define void @use_fns({ i8*, i8*, i8* }* noalias nocapture noundef writeonly sret({ i8*, i8*, i8* }) dereferenceable(24) %0) unnamed_addr #0 {
56+
start:
57+
%1 = load volatile [4 x i8]*, [4 x i8]** bitcast (<{ i8* }>* @"\01L_OBJC_SELECTOR_REFERENCES_43d7e4d3b832d234" to [4 x i8]**), align 8, !nonnull !1
58+
%2 = getelementptr [4 x i8], [4 x i8]* %1, i64 0, i64 0
59+
%3 = load volatile [4 x i8]*, [4 x i8]** bitcast (<{ i8* }>* @"\01L_OBJC_SELECTOR_REFERENCES_475a96ed80683d38" to [4 x i8]**), align 8, !nonnull !1
60+
%4 = getelementptr [4 x i8], [4 x i8]* %3, i64 0, i64 0
61+
%5 = load volatile [4 x i8]*, [4 x i8]** bitcast (<{ i8* }>* @"\01L_OBJC_SELECTOR_REFERENCES_7ece3464aee33aa8" to [4 x i8]**), align 8, !nonnull !1
62+
%6 = getelementptr [4 x i8], [4 x i8]* %5, i64 0, i64 0
63+
%7 = getelementptr inbounds { i8*, i8*, i8* }, { i8*, i8*, i8* }* %0, i64 0, i32 0
64+
store i8* %2, i8** %7, align 8
65+
%8 = getelementptr inbounds { i8*, i8*, i8* }, { i8*, i8*, i8* }* %0, i64 0, i32 1
66+
store i8* %4, i8** %8, align 8
67+
%9 = getelementptr inbounds { i8*, i8*, i8* }, { i8*, i8*, i8* }* %0, i64 0, i32 2
68+
store i8* %6, i8** %9, align 8
69+
ret void
70+
}
71+
72+
; Function Attrs: mustprogress nofree norecurse nounwind uwtable willreturn
73+
define { i8*, i8* } @use_generic() unnamed_addr #0 {
74+
start:
75+
%0 = load volatile [9 x i8]*, [9 x i8]** bitcast (<{ i8* }>* @"\01L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885" to [9 x i8]**), align 8, !nonnull !1
76+
%1 = getelementptr [9 x i8], [9 x i8]* %0, i64 0, i64 0
77+
%2 = load volatile [9 x i8]*, [9 x i8]** bitcast (<{ i8* }>* @"\01L_OBJC_SELECTOR_REFERENCES_17dedb23a5725885" to [9 x i8]**), align 8, !nonnull !1
78+
%3 = getelementptr [9 x i8], [9 x i8]* %2, i64 0, i64 0
79+
%4 = insertvalue { i8*, i8* } undef, i8* %1, 0
80+
%5 = insertvalue { i8*, i8* } %4, i8* %3, 1
81+
ret { i8*, i8* } %5
82+
}
83+
5184
attributes #0 = { mustprogress nofree norecurse nounwind uwtable willreturn "frame-pointer"="all" "probe-stack"="__rust_probestack" "target-cpu"="core2" }
5285

5386
!llvm.module.flags = !{!0}

tests/assembly/test_static_sel/lib.rs

+17
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,20 @@ pub fn get_different_sel() -> Sel {
2222
pub fn unused_sel() {
2323
let _x = sel!(xyz);
2424
}
25+
26+
#[no_mangle]
27+
pub fn use_fns() -> (Sel, Sel, Sel) {
28+
let s1 = get_sel();
29+
let s2 = get_same_sel();
30+
let s3 = get_different_sel();
31+
(s1, s2, s3)
32+
}
33+
34+
fn generic<T>() -> Sel {
35+
sel!(generic:)
36+
}
37+
38+
#[no_mangle]
39+
pub fn use_generic() -> (Sel, Sel) {
40+
(generic::<i32>(), generic::<u32>())
41+
}

0 commit comments

Comments
 (0)