Skip to content

Commit d3d7ba1

Browse files
committed
[LowerTypeTests] Convert tests to opaque pointers (NFC)
1 parent 1a57889 commit d3d7ba1

31 files changed

+308
-322
lines changed

llvm/test/Transforms/LowerTypeTests/aarch64-jumptable.ll

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44

55
target datalayout = "e-p:64:64"
66

7-
@0 = private unnamed_addr constant [2 x void (...)*] [void (...)* bitcast (void ()* @f to void (...)*), void (...)* bitcast (void ()* @g to void (...)*)], align 16
7+
@0 = private unnamed_addr constant [2 x ptr] [ptr @f, ptr @g], align 16
88

9-
; AARCH64: @f = alias void (), void ()* @[[JT:.*]]
9+
; AARCH64: @f = alias void (), ptr @[[JT:.*]]
1010

1111
define void @f() !type !0 {
1212
ret void
@@ -18,10 +18,10 @@ define internal void @g() !type !0 {
1818

1919
!0 = !{i32 0, !"typeid1"}
2020

21-
declare i1 @llvm.type.test(i8* %ptr, metadata %bitset) nounwind readnone
21+
declare i1 @llvm.type.test(ptr %ptr, metadata %bitset) nounwind readnone
2222

23-
define i1 @foo(i8* %p) {
24-
%x = call i1 @llvm.type.test(i8* %p, metadata !"typeid1")
23+
define i1 @foo(ptr %p) {
24+
%x = call i1 @llvm.type.test(ptr %p, metadata !"typeid1")
2525
ret i1 %x
2626
}
2727

llvm/test/Transforms/LowerTypeTests/align.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ target datalayout = "e-p:32:32"
88

99
!0 = !{i32 0, !"typeid1"}
1010

11-
declare i1 @llvm.type.test(i8* %ptr, metadata %bitset) nounwind readnone
11+
declare i1 @llvm.type.test(ptr %ptr, metadata %bitset) nounwind readnone
1212

13-
define i1 @foo(i8* %p) {
14-
%x = call i1 @llvm.type.test(i8* %p, metadata !"typeid1")
13+
define i1 @foo(ptr %p) {
14+
%x = call i1 @llvm.type.test(ptr %p, metadata !"typeid1")
1515
ret i1 %x
1616
}

llvm/test/Transforms/LowerTypeTests/blockaddr-import.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
44
target triple = "x86_64-unknown-linux"
55

6-
declare i1 @llvm.type.test(i8*, metadata) #1
6+
declare i1 @llvm.type.test(ptr, metadata) #1
77
declare !type !11 i32 @o(...)
88

99
define hidden void @m() #0 !type !3 {
1010
entry:
1111
br label %n
1212
n:
13-
%call = tail call i32 (i8*, ...) bitcast (i32 (...)* @o to i32 (i8*, ...)*)(i8* blockaddress(@m, %n)) #4
13+
%call = tail call i32 (ptr, ...) @o(ptr blockaddress(@m, %n)) #4
1414
; Make sure that blockaddress refers to the new function, m.cfi
1515
; CHECK: define hidden void @m.cfi()
1616
; CHECK: blockaddress(@m.cfi, %n)

llvm/test/Transforms/LowerTypeTests/blockaddress-2.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
; RUN: opt -S %s -passes=lowertypetests | FileCheck %s
22

3-
; CHECK: @badfileops = internal global %struct.f { void ()* @bad_f, void ()* @bad_f }
4-
; CHECK: @bad_f = internal alias void (), void ()* @.cfi.jumptable
3+
; CHECK: @badfileops = internal global %struct.f { ptr @bad_f, ptr @bad_f }
4+
; CHECK: @bad_f = internal alias void (), ptr @.cfi.jumptable
55
; CHECK: define internal void @bad_f.cfi() !type !0 {
66
; CHECK-NEXT: ret void
77

88
target triple = "x86_64-unknown-linux"
99

10-
%struct.f = type { void ()*, void ()* }
11-
@badfileops = internal global %struct.f { void ()* @bad_f, void ()* @bad_f }, align 8
10+
%struct.f = type { ptr, ptr }
11+
@badfileops = internal global %struct.f { ptr @bad_f, ptr @bad_f }, align 8
1212

13-
declare i1 @llvm.type.test(i8*, metadata)
13+
declare i1 @llvm.type.test(ptr, metadata)
1414

1515
define internal void @bad_f() !type !1 {
1616
ret void
1717
}
1818

1919
define internal fastcc void @do_f() unnamed_addr !type !2 {
20-
%1 = tail call i1 @llvm.type.test(i8* undef, metadata !"_ZTSFiP4fileP3uioP5ucrediP6threadE"), !nosanitize !3
20+
%1 = tail call i1 @llvm.type.test(ptr undef, metadata !"_ZTSFiP4fileP3uioP5ucrediP6threadE"), !nosanitize !3
2121
ret void
2222
}
2323

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
; RUN: opt -S %s -passes=lowertypetests | FileCheck %s
22

33

4-
; CHECK: define hidden i8* @f2.cfi() !type !0 {
4+
; CHECK: define hidden ptr @f2.cfi() !type !0 {
55
; CHECK-NEXT: br label %b
66
; CHECK: b:
7-
; CHECK-NEXT: ret i8* blockaddress(@f2.cfi, %b)
7+
; CHECK-NEXT: ret ptr blockaddress(@f2.cfi, %b)
88
; CHECK-NEXT: }
99

1010
target triple = "x86_64-unknown-linux"
1111

1212
define void @f1() {
1313
entry:
14-
%0 = call i1 @llvm.type.test(i8* bitcast (i8* ()* @f2 to i8*), metadata !"_ZTSFvP3bioE")
14+
%0 = call i1 @llvm.type.test(ptr @f2, metadata !"_ZTSFvP3bioE")
1515
ret void
1616
}
1717

18-
declare i1 @llvm.type.test(i8*, metadata)
18+
declare i1 @llvm.type.test(ptr, metadata)
1919

20-
define i8* @f2() !type !5 {
20+
define ptr @f2() !type !5 {
2121
br label %b
2222

2323
b:
24-
ret i8* blockaddress(@f2, %b)
24+
ret ptr blockaddress(@f2, %b)
2525
}
2626

2727
!5 = !{i64 0, !"_ZTSFvP3bioE"}

llvm/test/Transforms/LowerTypeTests/cfi-direct-call1.ll

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,17 @@ entry:
2020

2121
declare !type !3 !type !4 extern_weak i32 @extern_weak()
2222
declare !type !3 !type !4 i32 @extern_decl()
23-
declare i1 @llvm.type.test(i8*, metadata)
23+
declare i1 @llvm.type.test(ptr, metadata)
2424

2525
define hidden i32 @main(i32 %argc) {
2626
entry:
2727
%cmp.i = icmp sgt i32 %argc, 1
28-
%fptr1 = select i1 %cmp.i, i32 ()* @local_func1, i32 ()* @local_func2
29-
%fptr2 = select i1 %cmp.i, i32 ()* @extern_weak, i32 ()* @extern_decl
30-
%0 = bitcast i32 ()* %fptr1 to i8*
31-
%1 = tail call i1 @llvm.type.test(i8* nonnull %0, metadata !"_ZTSFivE")
28+
%fptr1 = select i1 %cmp.i, ptr @local_func1, ptr @local_func2
29+
%fptr2 = select i1 %cmp.i, ptr @extern_weak, ptr @extern_decl
30+
%0 = tail call i1 @llvm.type.test(ptr nonnull %fptr1, metadata !"_ZTSFivE")
3231

3332
%call2 = tail call i32 %fptr1()
34-
%2 = bitcast i32 ()* %fptr2 to i8*
35-
%3 = tail call i1 @llvm.type.test(i8* %2, metadata !"_ZTSFivE")
33+
%1 = tail call i1 @llvm.type.test(ptr %fptr2, metadata !"_ZTSFivE")
3634

3735
%call4 = tail call i32 %fptr2()
3836
%call5 = tail call i32 @extern_decl()
@@ -55,10 +53,10 @@ entry:
5553
; FULL: define hidden i32 @local_func3(i32 %i)
5654

5755
; Indirect references to local_func1 and local_func2 must to through jump table
58-
; FULL: %fptr1 = select i1 %cmp.i, i32 ()* @local_func1, i32 ()* @local_func2
56+
; FULL: %fptr1 = select i1 %cmp.i, ptr @local_func1, ptr @local_func2
5957

6058
; Indirect references to extern_weak and extern_decl must go through jump table
61-
; FULL: %fptr2 = select i1 %cmp.i, i32 ()* select (i1 icmp ne (i32 ()* @extern_weak, i32 ()* null), i32 ()* bitcast ([8 x i8]* getelementptr inbounds ([4 x [8 x i8]], [4 x [8 x i8]]* bitcast (void ()* @.cfi.jumptable to [4 x [8 x i8]]*), i64 0, i64 2) to i32 ()*), i32 ()* null), i32 ()* bitcast ([8 x i8]* getelementptr inbounds ([4 x [8 x i8]], [4 x [8 x i8]]* bitcast (void ()* @.cfi.jumptable to [4 x [8 x i8]]*), i64 0, i64 3) to i32 ()*)
59+
; FULL: %fptr2 = select i1 %cmp.i, ptr select (i1 icmp ne (ptr @extern_weak, ptr null), ptr getelementptr inbounds ([4 x [8 x i8]], ptr @.cfi.jumptable, i64 0, i64 2), ptr null), ptr getelementptr inbounds ([4 x [8 x i8]], ptr @.cfi.jumptable, i64 0, i64 3)
6260

6361
; Direct calls to extern_weak and extern_decl should go to original names
6462
; FULL: %call5 = tail call i32 @extern_decl()
@@ -81,10 +79,10 @@ entry:
8179
; THIN: define hidden i32 @local_func3.cfi(i32 %i){{.*}}
8280

8381
; Indirect references to local_func1 and local_func2 must to through jump table
84-
; THIN: %fptr1 = select i1 %cmp.i, i32 ()* @local_func1, i32 ()* @local_func2
82+
; THIN: %fptr1 = select i1 %cmp.i, ptr @local_func1, ptr @local_func2
8583

8684
; Indirect references to extern_weak and extern_decl must go through jump table
87-
; THIN: %fptr2 = select i1 %cmp.i, i32 ()* select (i1 icmp ne (i32 ()* @extern_weak, i32 ()* null), i32 ()* @extern_weak.cfi_jt, i32 ()* null), i32 ()* @extern_decl.cfi_jt
85+
; THIN: %fptr2 = select i1 %cmp.i, ptr select (i1 icmp ne (ptr @extern_weak, ptr null), ptr @extern_weak.cfi_jt, ptr null), ptr @extern_decl.cfi_jt
8886

8987
; Direct calls to extern_weak and extern_decl should go to original names
9088
; THIN: %call5 = tail call i32 @extern_decl()

llvm/test/Transforms/LowerTypeTests/constant.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,25 @@ target datalayout = "e-p:32:32"
88
!0 = !{i32 0, !"typeid1"}
99
!1 = !{i32 4, !"typeid1"}
1010

11-
declare i1 @llvm.type.test(i8* %ptr, metadata %bitset) nounwind readnone
11+
declare i1 @llvm.type.test(ptr %ptr, metadata %bitset) nounwind readnone
1212

1313
; CHECK: @foo(
1414
define i1 @foo() {
1515
; CHECK: ret i1 true
16-
%x = call i1 @llvm.type.test(i8* bitcast (i32* @a to i8*), metadata !"typeid1")
16+
%x = call i1 @llvm.type.test(ptr @a, metadata !"typeid1")
1717
ret i1 %x
1818
}
1919

2020
; CHECK: @bar(
2121
define i1 @bar() {
2222
; CHECK: ret i1 true
23-
%x = call i1 @llvm.type.test(i8* bitcast (i32* getelementptr ([2 x i32], [2 x i32]* @b, i32 0, i32 1) to i8*), metadata !"typeid1")
23+
%x = call i1 @llvm.type.test(ptr getelementptr ([2 x i32], ptr @b, i32 0, i32 1), metadata !"typeid1")
2424
ret i1 %x
2525
}
2626

2727
; CHECK: @baz(
2828
define i1 @baz() {
2929
; CHECK-NOT: ret i1 true
30-
%x = call i1 @llvm.type.test(i8* bitcast (i32* getelementptr ([2 x i32], [2 x i32]* @b, i32 0, i32 0) to i8*), metadata !"typeid1")
30+
%x = call i1 @llvm.type.test(ptr @b, metadata !"typeid1")
3131
ret i1 %x
3232
}

llvm/test/Transforms/LowerTypeTests/drop_type_test_phi.ll

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,59 +4,56 @@
44
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
55
target triple = "x86_64-grtev4-linux-gnu"
66

7-
%struct.A = type { i32 (...)** }
7+
%struct.A = type { ptr }
88
%struct.B = type { %struct.A }
99
%struct.C = type { %struct.A }
1010

11-
@_ZTV1B = constant { [4 x i8*] } { [4 x i8*] [i8* null, i8* undef, i8* bitcast (i32 (%struct.B*, i32)* @_ZN1B1fEi to i8*), i8* bitcast (i32 (%struct.A*, i32)* @_ZN1A1nEi to i8*)] }, !type !0, !type !1
12-
@_ZTV1C = constant { [4 x i8*] } { [4 x i8*] [i8* null, i8* undef, i8* bitcast (i32 (%struct.C*, i32)* @_ZN1C1fEi to i8*), i8* bitcast (i32 (%struct.A*, i32)* @_ZN1A1nEi to i8*)] }, !type !0, !type !2
11+
@_ZTV1B = constant { [4 x ptr] } { [4 x ptr] [ptr null, ptr undef, ptr @_ZN1B1fEi, ptr @_ZN1A1nEi] }, !type !0, !type !1
12+
@_ZTV1C = constant { [4 x ptr] } { [4 x ptr] [ptr null, ptr undef, ptr @_ZN1C1fEi, ptr @_ZN1A1nEi] }, !type !0, !type !2
1313

1414
; CHECK-LABEL: define i32 @test
15-
define i32 @test(%struct.A* %obj, i32 %a, i32 %b) {
15+
define i32 @test(ptr %obj, i32 %a, i32 %b) {
1616
entry:
1717
%tobool.not = icmp eq i32 %a, 0
1818
br i1 %tobool.not, label %if.else, label %if.then
1919

2020
if.then:
21-
%0 = bitcast %struct.A* %obj to i8***
22-
%vtable = load i8**, i8*** %0
23-
%1 = bitcast i8** %vtable to i8*
24-
%p = call i1 @llvm.type.test(i8* %1, metadata !"_ZTS1A")
21+
%vtable = load ptr, ptr %obj
22+
%p = call i1 @llvm.type.test(ptr %vtable, metadata !"_ZTS1A")
2523
; CHECK-NOT: @llvm.type.test
26-
%fptrptr = getelementptr i8*, i8** %vtable, i32 1
27-
%2 = bitcast i8** %fptrptr to i32 (%struct.A*, i32)**
28-
%fptr1 = load i32 (%struct.A*, i32)*, i32 (%struct.A*, i32)** %2, align 8
29-
%call = tail call i32 %fptr1(%struct.A* nonnull %obj, i32 %a)
24+
%fptrptr = getelementptr ptr, ptr %vtable, i32 1
25+
%fptr1 = load ptr, ptr %fptrptr, align 8
26+
%call = tail call i32 %fptr1(ptr nonnull %obj, i32 %a)
3027
br label %if.end
3128

3229
if.else:
33-
%3 = icmp ne i32 %b, 0
30+
%0 = icmp ne i32 %b, 0
3431
br label %if.end
3532

3633
if.end:
37-
%4 = phi i1 [ %3, %if.else ], [ %p, %if.then ]
38-
call void @llvm.assume(i1 %4)
34+
%1 = phi i1 [ %0, %if.else ], [ %p, %if.then ]
35+
call void @llvm.assume(i1 %1)
3936
; Still have the assume, but the type test target replaced with true.
40-
; CHECK: %4 = phi i1 [ %3, %if.else ], [ true, %if.then ]
41-
; CHECK: call void @llvm.assume(i1 %4)
37+
; CHECK: %1 = phi i1 [ %0, %if.else ], [ true, %if.then ]
38+
; CHECK: call void @llvm.assume(i1 %1)
4239

4340
ret i32 0
4441
}
4542
; CHECK-LABEL: ret i32
4643
; CHECK-LABEL: }
4744

48-
declare i1 @llvm.type.test(i8*, metadata)
45+
declare i1 @llvm.type.test(ptr, metadata)
4946
declare void @llvm.assume(i1)
5047

51-
define i32 @_ZN1B1fEi(%struct.B* %this, i32 %a) #0 {
48+
define i32 @_ZN1B1fEi(ptr %this, i32 %a) #0 {
5249
ret i32 0;
5350
}
5451

55-
define i32 @_ZN1A1nEi(%struct.A* %this, i32 %a) #0 {
52+
define i32 @_ZN1A1nEi(ptr %this, i32 %a) #0 {
5653
ret i32 0;
5754
}
5855

59-
define i32 @_ZN1C1fEi(%struct.C* %this, i32 %a) #0 {
56+
define i32 @_ZN1C1fEi(ptr %this, i32 %a) #0 {
6057
ret i32 0;
6158
}
6259

llvm/test/Transforms/LowerTypeTests/external-global.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ target triple = "x86_64-scei-ps4"
77
@dipsy = external constant i8, !type !0
88

99
define void @tinkywinky() {
10-
store i8* @dipsy, i8** undef
10+
store ptr @dipsy, ptr undef
1111
ret void
1212
}
1313

llvm/test/Transforms/LowerTypeTests/function-arm-thumb.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ define void @h2() "target-features"="-thumb-mode" !type !1 {
2222
ret void
2323
}
2424

25-
declare void @takeaddr(void()*, void()*, void()*, void()*, void()*)
25+
declare void @takeaddr(ptr, ptr, ptr, ptr, ptr)
2626
define void @addrtaken() {
27-
call void @takeaddr(void()* @f1, void()* @g1, void()* @f2, void()* @g2, void()* @h2)
27+
call void @takeaddr(ptr @f1, ptr @g1, ptr @f2, ptr @g2, ptr @h2)
2828
ret void
2929
}
3030

@@ -33,13 +33,13 @@ define void @addrtaken() {
3333

3434
; CHECK: define private void {{.*}} #[[AT:.*]] align 4 {
3535
; CHECK-NEXT: entry:
36-
; CHECK-NEXT: call void asm sideeffect "b.w $0\0Ab.w $1\0A", "s,s"(void ()* @f1.cfi, void ()* @g1.cfi)
36+
; CHECK-NEXT: call void asm sideeffect "b.w $0\0Ab.w $1\0A", "s,s"(ptr @f1.cfi, ptr @g1.cfi)
3737
; CHECK-NEXT: unreachable
3838
; CHECK-NEXT: }
3939

4040
; CHECK: define private void {{.*}} #[[AA:.*]] align 4 {
4141
; CHECK-NEXT: entry:
42-
; CHECK-NEXT: call void asm sideeffect "b $0\0Ab $1\0Ab $2\0A", "s,s,s"(void ()* @f2.cfi, void ()* @g2.cfi, void ()* @h2.cfi)
42+
; CHECK-NEXT: call void asm sideeffect "b $0\0Ab $1\0Ab $2\0A", "s,s,s"(ptr @f2.cfi, ptr @g2.cfi, ptr @h2.cfi)
4343
; CHECK-NEXT: unreachable
4444
; CHECK-NEXT: }
4545

llvm/test/Transforms/LowerTypeTests/function-disjoint.ll

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55

66
target datalayout = "e-p:64:64"
77

8-
; X64: @f = alias void (), void ()* @[[JT0:.*]]
9-
; X64: @g = alias void (), void ()* @[[JT1:.*]]
8+
; X64: @f = alias void (), ptr @[[JT0:.*]]
9+
; X64: @g = alias void (), ptr @[[JT1:.*]]
1010

1111
; WASM32: private constant [0 x i8] zeroinitializer
12-
@0 = private unnamed_addr constant [2 x void ()*] [void ()* @f, void ()* @g], align 16
12+
@0 = private unnamed_addr constant [2 x ptr] [ptr @f, ptr @g], align 16
1313

1414
; X64: define hidden void @f.cfi()
1515
; WASM32: define void @f() !type !{{[0-9]+}} !wasm.index ![[I0:[0-9]+]]
@@ -26,24 +26,24 @@ define void @g() !type !1 {
2626
!0 = !{i32 0, !"typeid1"}
2727
!1 = !{i32 0, !"typeid2"}
2828

29-
declare i1 @llvm.type.test(i8* %ptr, metadata %bitset) nounwind readnone
29+
declare i1 @llvm.type.test(ptr %ptr, metadata %bitset) nounwind readnone
3030

31-
define i1 @foo(i8* %p) {
32-
; X64: icmp eq i64 {{.*}}, ptrtoint (void ()* @[[JT0]] to i64)
33-
; WASM32: icmp eq i64 {{.*}}, ptrtoint (i8* getelementptr (i8, i8* null, i64 1) to i64)
34-
%x = call i1 @llvm.type.test(i8* %p, metadata !"typeid1")
35-
; X64: icmp eq i64 {{.*}}, ptrtoint (void ()* @[[JT1]] to i64)
36-
; WASM32: icmp eq i64 {{.*}}, ptrtoint (i8* getelementptr (i8, i8* null, i64 2) to i64)
37-
%y = call i1 @llvm.type.test(i8* %p, metadata !"typeid2")
31+
define i1 @foo(ptr %p) {
32+
; X64: icmp eq i64 {{.*}}, ptrtoint (ptr @[[JT0]] to i64)
33+
; WASM32: icmp eq i64 {{.*}}, ptrtoint (ptr getelementptr (i8, ptr null, i64 1) to i64)
34+
%x = call i1 @llvm.type.test(ptr %p, metadata !"typeid1")
35+
; X64: icmp eq i64 {{.*}}, ptrtoint (ptr @[[JT1]] to i64)
36+
; WASM32: icmp eq i64 {{.*}}, ptrtoint (ptr getelementptr (i8, ptr null, i64 2) to i64)
37+
%y = call i1 @llvm.type.test(ptr %p, metadata !"typeid2")
3838
%z = add i1 %x, %y
3939
ret i1 %z
4040
}
4141

4242
; X64: define private void @[[JT0]]() #{{.*}} align 8 {
43-
; X64: call void asm sideeffect "jmp ${0:c}@plt\0Aint3\0Aint3\0Aint3\0A", "s"(void ()* @f.cfi)
43+
; X64: call void asm sideeffect "jmp ${0:c}@plt\0Aint3\0Aint3\0Aint3\0A", "s"(ptr @f.cfi)
4444

4545
; X64: define private void @[[JT1]]() #{{.*}} align 8 {
46-
; X64: call void asm sideeffect "jmp ${0:c}@plt\0Aint3\0Aint3\0Aint3\0A", "s"(void ()* @g.cfi)
46+
; X64: call void asm sideeffect "jmp ${0:c}@plt\0Aint3\0Aint3\0Aint3\0A", "s"(ptr @g.cfi)
4747

4848
; WASM32: ![[I0]] = !{i64 1}
4949
; WASM32: ![[I1]] = !{i64 2}

0 commit comments

Comments
 (0)