[Linker] Convert test to opaque pointers (NFC)

All the pointer-indirected cases are no longer relevant with
opaque pointers. To preserve at least some of the test intent,
switch to by value passing of the unnamed types. Otherwise we
wouldn't be testing anything at all.
This commit is contained in:
Nikita Popov 2022-12-14 12:48:21 +01:00
parent e5dc99e642
commit 3084797795

View File

@ -11,63 +11,29 @@
%0 = type opaque
; CHECK-LABEL: @test01(
; CHECK: %cmp1 = icmp ne %0* %arg, null
; CHECK-NEXT: %c1 = call %0* @llvm.ssa.copy.p0s_s.0(%0* %arg)
; CHECK-NEXT: %c2 = call %1* @llvm.ssa.copy.p0s_s.1(%1* %tmp)
; CHECK-NEXT: %c3a = call %0** @llvm.ssa.copy.p0p0s_s.0(%0** %arg2)
; CHECK-NEXT: %c3b = call %0** @llvm.ssa.copy.p0p0s_s.0(%0** %arg2)
; CHECK-NEXT: %c4a = call %1** @llvm.ssa.copy.p0p0s_s.1(%1** %tmp2)
; CHECK-NEXT: %c4ba = call %1** @llvm.ssa.copy.p0p0s_s.1(%1** %tmp2)
; CHECK-NEXT: %c5 = call %0*** @llvm.ssa.copy.p0p0p0s_s.0(%0*** %arg3)
; CHECK-NEXT: %c6 = call %1*** @llvm.ssa.copy.p0p0p0s_s.1(%1*** %tmp3)
; CHECK: %c1 = call %0 @llvm.ssa.copy.s_s.0(%0 %arg)
; CHECK-NEXT: %c2 = call %1 @llvm.ssa.copy.s_s.1(%1 %tmp)
define void @test01(%0* %arg, %1* %tmp, %1** %tmp2, %0** %arg2, %1*** %tmp3, %0*** %arg3) {
define void @test01(%0 %arg, %1 %tmp) {
bb:
%cmp1 = icmp ne %0* %arg, null
%c1 = call %0* @llvm.ssa.copy.p0s_s.0(%0* %arg)
%c2 = call %1* @llvm.ssa.copy.p0s_s.1(%1* %tmp)
%c3a = call %0** @llvm.ssa.copy.p0p0s_s.1(%0** %arg2)
%c3b = call %0** @llvm.ssa.copy.p0p0s_s.1(%0** %arg2)
%c4a = call %1** @llvm.ssa.copy.p0p0s_s.0(%1** %tmp2)
%c4ba = call %1** @llvm.ssa.copy.p0p0s_s.0(%1** %tmp2)
%c5 = call %0*** @llvm.ssa.copy.p0p0p0s_s.1(%0*** %arg3)
%c6 = call %1*** @llvm.ssa.copy.p0p0p0s_s.0(%1*** %tmp3)
%c1 = call %0 @llvm.ssa.copy.s_s.0(%0 %arg)
%c2 = call %1 @llvm.ssa.copy.s_s.1(%1 %tmp)
ret void
}
declare %0* @llvm.ssa.copy.p0s_s.0(%0* returned)
declare %0 @llvm.ssa.copy.s_s.0(%0 returned)
declare %1* @llvm.ssa.copy.p0s_s.1(%1* returned)
declare %0** @llvm.ssa.copy.p0p0s_s.1(%0** returned)
declare %1** @llvm.ssa.copy.p0p0s_s.0(%1** returned)
declare %0*** @llvm.ssa.copy.p0p0p0s_s.1(%0*** returned)
declare %1*** @llvm.ssa.copy.p0p0p0s_s.0(%1*** returned)
declare %1 @llvm.ssa.copy.s_s.1(%1 returned)
; now with recycling of previous declarations:
; CHECK-LABEL: @test02(
; CHECK: %cmp1 = icmp ne %0* %arg, null
; CHECK-NEXT: %c4a = call %1** @llvm.ssa.copy.p0p0s_s.1(%1** %tmp2)
; CHECK-NEXT: %c6 = call %1*** @llvm.ssa.copy.p0p0p0s_s.1(%1*** %tmp3)
; CHECK-NEXT: %c1 = call %0* @llvm.ssa.copy.p0s_s.0(%0* %arg)
; CHECK-NEXT: %c2 = call %1* @llvm.ssa.copy.p0s_s.1(%1* %tmp)
; CHECK-NEXT: %c3b = call %0** @llvm.ssa.copy.p0p0s_s.0(%0** %arg2)
; CHECK-NEXT: %c4ba = call %1** @llvm.ssa.copy.p0p0s_s.1(%1** %tmp2)
; CHECK-NEXT: %c5 = call %0*** @llvm.ssa.copy.p0p0p0s_s.0(%0*** %arg3)
; CHECK: %c1 = call %0 @llvm.ssa.copy.s_s.0(%0 %arg)
; CHECK-NEXT: %c2 = call %1 @llvm.ssa.copy.s_s.1(%1 %tmp)
define void @test02(%0* %arg, %1* %tmp, %1** %tmp2, %0** %arg2, %1*** %tmp3, %0*** %arg3) {
define void @test02(%0 %arg, %1 %tmp) {
bb:
%cmp1 = icmp ne %0* %arg, null
%c4a = call %1** @llvm.ssa.copy.p0p0s_s.0(%1** %tmp2)
%c6 = call %1*** @llvm.ssa.copy.p0p0p0s_s.0(%1*** %tmp3)
%c1 = call %0* @llvm.ssa.copy.p0s_s.0(%0* %arg)
%c2 = call %1* @llvm.ssa.copy.p0s_s.1(%1* %tmp)
%c3b = call %0** @llvm.ssa.copy.p0p0s_s.1(%0** %arg2)
%c4ba = call %1** @llvm.ssa.copy.p0p0s_s.0(%1** %tmp2)
%c5 = call %0*** @llvm.ssa.copy.p0p0p0s_s.1(%0*** %arg3)
%c1 = call %0 @llvm.ssa.copy.s_s.0(%0 %arg)
%c2 = call %1 @llvm.ssa.copy.s_s.1(%1 %tmp)
ret void
}
@ -76,26 +42,16 @@ bb:
%2 = type opaque
; CHECK-LABEL: @test03(
; CHECK: %cmp1 = icmp ne %3* %arg, null
; CHECK-NEXT: %c1 = call %3* @llvm.ssa.copy.p0s_s.2(%3* %arg)
; CHECK-NEXT: %c2 = call %2* @llvm.ssa.copy.p0s_s.3(%2* %tmp)
; CHECK-NEXT: %c3 = call %3** @llvm.ssa.copy.p0p0s_s.2(%3** %arg2)
; CHECK-NEXT: %c4 = call %2** @llvm.ssa.copy.p0p0s_s.3(%2** %tmp2)
; CHECK: %c1 = call %3 @llvm.ssa.copy.s_s.2(%3 %arg)
; CHECK-NEXT: %c2 = call %2 @llvm.ssa.copy.s_s.3(%2 %tmp)
define void @test03(%1* %tmp, %2* %arg, %1** %tmp2, %2** %arg2) {
define void @test03(%1 %tmp, %2 %arg) {
bb:
%cmp1 = icmp ne %2* %arg, null
%c1 = call %2* @llvm.ssa.copy.p0s_s.0(%2* %arg)
%c2 = call %1* @llvm.ssa.copy.p0s_s.1(%1* %tmp)
%c3 = call %2** @llvm.ssa.copy.p0p0s_s.1(%2** %arg2)
%c4 = call %1** @llvm.ssa.copy.p0p0s_s.0(%1** %tmp2)
%c1 = call %2 @llvm.ssa.copy.s_s.0(%2 %arg)
%c2 = call %1 @llvm.ssa.copy.s_s.1(%1 %tmp)
ret void
}
declare %2* @llvm.ssa.copy.p0s_s.0(%2* returned)
declare %2 @llvm.ssa.copy.s_s.0(%2 returned)
declare %1* @llvm.ssa.copy.p0s_s.1(%1* returned)
declare %2** @llvm.ssa.copy.p0p0s_s.1(%2** returned)
declare %1** @llvm.ssa.copy.p0p0s_s.0(%1** returned)
declare %1 @llvm.ssa.copy.s_s.1(%1 returned)