Skip to content

Commit 60a3215

Browse files
committed
[Tests] Remove unnecessary bitcasts from opaque pointer tests (NFC)
Previously left these behind due to the required instruction renumbering, drop them now. This more accurately represents opaque pointer input IR. Also drop duplicate opaque pointer check lines in one SROA test.
1 parent 615efc3 commit 60a3215

23 files changed

+162
-730
lines changed

llvm/test/Transforms/EarlyCSE/AArch64/intrinsics.ll

Lines changed: 29 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,12 @@ for.cond: ; preds = %for.body, %entry
1919
br i1 %cmp, label %for.body, label %for.end
2020

2121
for.body: ; preds = %for.cond
22-
%0 = bitcast ptr %a to ptr
23-
%1 = bitcast <4 x i32> %s.coerce.fca.0.extract to <16 x i8>
24-
%2 = bitcast <4 x i32> %s.coerce.fca.1.extract to <16 x i8>
22+
%0 = bitcast <4 x i32> %s.coerce.fca.0.extract to <16 x i8>
23+
%1 = bitcast <4 x i32> %s.coerce.fca.1.extract to <16 x i8>
24+
%2 = bitcast <16 x i8> %0 to <4 x i32>
2525
%3 = bitcast <16 x i8> %1 to <4 x i32>
26-
%4 = bitcast <16 x i8> %2 to <4 x i32>
27-
call void @llvm.aarch64.neon.st2.v4i32.p0(<4 x i32> %3, <4 x i32> %4, ptr %0)
28-
%5 = bitcast ptr %a to ptr
29-
%vld2 = call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2.v4i32.p0(ptr %5)
26+
call void @llvm.aarch64.neon.st2.v4i32.p0(<4 x i32> %2, <4 x i32> %3, ptr %a)
27+
%vld2 = call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2.v4i32.p0(ptr %a)
3028
%vld2.fca.0.extract = extractvalue { <4 x i32>, <4 x i32> } %vld2, 0
3129
%vld2.fca.1.extract = extractvalue { <4 x i32>, <4 x i32> } %vld2, 1
3230
%call = call <4 x i32> @vaddq_s32(<4 x i32> %vld2.fca.0.extract, <4 x i32> %vld2.fca.0.extract)
@@ -54,15 +52,13 @@ for.cond: ; preds = %for.body, %entry
5452
br i1 %cmp, label %for.body, label %for.end
5553

5654
for.body: ; preds = %for.cond
57-
%0 = bitcast ptr %a to ptr
58-
%1 = bitcast <4 x i32> %s.coerce.fca.0.extract to <16 x i8>
59-
%2 = bitcast <4 x i32> %s.coerce.fca.1.extract to <16 x i8>
55+
%0 = bitcast <4 x i32> %s.coerce.fca.0.extract to <16 x i8>
56+
%1 = bitcast <4 x i32> %s.coerce.fca.1.extract to <16 x i8>
57+
%2 = bitcast <16 x i8> %0 to <4 x i32>
6058
%3 = bitcast <16 x i8> %1 to <4 x i32>
61-
%4 = bitcast <16 x i8> %2 to <4 x i32>
62-
call void @llvm.aarch64.neon.st2.v4i32.p0(<4 x i32> %3, <4 x i32> %3, ptr %0)
63-
call void @llvm.aarch64.neon.st2.v4i32.p0(<4 x i32> %3, <4 x i32> %4, ptr %0)
64-
%5 = bitcast ptr %a to ptr
65-
%vld2 = call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2.v4i32.p0(ptr %5)
59+
call void @llvm.aarch64.neon.st2.v4i32.p0(<4 x i32> %2, <4 x i32> %2, ptr %a)
60+
call void @llvm.aarch64.neon.st2.v4i32.p0(<4 x i32> %2, <4 x i32> %3, ptr %a)
61+
%vld2 = call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2.v4i32.p0(ptr %a)
6662
%vld2.fca.0.extract = extractvalue { <4 x i32>, <4 x i32> } %vld2, 0
6763
%vld2.fca.1.extract = extractvalue { <4 x i32>, <4 x i32> } %vld2, 1
6864
%call = call <4 x i32> @vaddq_s32(<4 x i32> %vld2.fca.0.extract, <4 x i32> %vld2.fca.0.extract)
@@ -90,12 +86,10 @@ for.cond: ; preds = %for.body, %entry
9086
br i1 %cmp, label %for.body, label %for.end
9187

9288
for.body: ; preds = %for.cond
93-
%0 = bitcast ptr %a to ptr
94-
%vld2 = call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2.v4i32.p0(ptr %0)
89+
%vld2 = call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2.v4i32.p0(ptr %a)
9590
%vld2.fca.0.extract = extractvalue { <4 x i32>, <4 x i32> } %vld2, 0
9691
%vld2.fca.1.extract = extractvalue { <4 x i32>, <4 x i32> } %vld2, 1
97-
%1 = bitcast ptr %a to ptr
98-
%vld22 = call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2.v4i32.p0(ptr %1)
92+
%vld22 = call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2.v4i32.p0(ptr %a)
9993
%vld22.fca.0.extract = extractvalue { <4 x i32>, <4 x i32> } %vld22, 0
10094
%vld22.fca.1.extract = extractvalue { <4 x i32>, <4 x i32> } %vld22, 1
10195
%call = call <4 x i32> @vaddq_s32(<4 x i32> %vld2.fca.0.extract, <4 x i32> %vld22.fca.0.extract)
@@ -124,15 +118,13 @@ for.cond: ; preds = %for.body, %entry
124118
br i1 %cmp, label %for.body, label %for.end
125119

126120
for.body: ; preds = %for.cond
127-
%0 = bitcast ptr %a to ptr
128-
%1 = bitcast <4 x i32> %s.coerce.fca.0.extract to <16 x i8>
129-
%2 = bitcast <4 x i32> %s.coerce.fca.1.extract to <16 x i8>
121+
%0 = bitcast <4 x i32> %s.coerce.fca.0.extract to <16 x i8>
122+
%1 = bitcast <4 x i32> %s.coerce.fca.1.extract to <16 x i8>
123+
%2 = bitcast <16 x i8> %0 to <4 x i32>
130124
%3 = bitcast <16 x i8> %1 to <4 x i32>
131-
%4 = bitcast <16 x i8> %2 to <4 x i32>
132-
call void @llvm.aarch64.neon.st2.v4i32.p0(<4 x i32> %3, <4 x i32> %4, ptr %0)
125+
call void @llvm.aarch64.neon.st2.v4i32.p0(<4 x i32> %2, <4 x i32> %3, ptr %a)
133126
store i32 0, ptr %b, align 4
134-
%5 = bitcast ptr %a to ptr
135-
%vld2 = call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2.v4i32.p0(ptr %5)
127+
%vld2 = call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2.v4i32.p0(ptr %a)
136128
%vld2.fca.0.extract = extractvalue { <4 x i32>, <4 x i32> } %vld2, 0
137129
%vld2.fca.1.extract = extractvalue { <4 x i32>, <4 x i32> } %vld2, 1
138130
%call = call <4 x i32> @vaddq_s32(<4 x i32> %vld2.fca.0.extract, <4 x i32> %vld2.fca.0.extract)
@@ -160,14 +152,12 @@ for.cond: ; preds = %for.body, %entry
160152
br i1 %cmp, label %for.body, label %for.end
161153

162154
for.body: ; preds = %for.cond
163-
%0 = bitcast ptr %a to ptr
164-
%1 = bitcast <4 x i32> %s.coerce.fca.0.extract to <16 x i8>
165-
%2 = bitcast <4 x i32> %s.coerce.fca.1.extract to <16 x i8>
155+
%0 = bitcast <4 x i32> %s.coerce.fca.0.extract to <16 x i8>
156+
%1 = bitcast <4 x i32> %s.coerce.fca.1.extract to <16 x i8>
157+
%2 = bitcast <16 x i8> %0 to <4 x i32>
166158
%3 = bitcast <16 x i8> %1 to <4 x i32>
167-
%4 = bitcast <16 x i8> %2 to <4 x i32>
168-
call void @llvm.aarch64.neon.st2.v4i32.p0(<4 x i32> %3, <4 x i32> %4, ptr %0)
169-
%5 = bitcast ptr %a to ptr
170-
%vld3 = call { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld3.v4i32.p0(ptr %5)
159+
call void @llvm.aarch64.neon.st2.v4i32.p0(<4 x i32> %2, <4 x i32> %3, ptr %a)
160+
%vld3 = call { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld3.v4i32.p0(ptr %a)
171161
%vld3.fca.0.extract = extractvalue { <4 x i32>, <4 x i32>, <4 x i32> } %vld3, 0
172162
%vld3.fca.2.extract = extractvalue { <4 x i32>, <4 x i32>, <4 x i32> } %vld3, 2
173163
%call = call <4 x i32> @vaddq_s32(<4 x i32> %vld3.fca.0.extract, <4 x i32> %vld3.fca.2.extract)
@@ -196,15 +186,13 @@ for.cond: ; preds = %for.body, %entry
196186
br i1 %cmp, label %for.body, label %for.end
197187

198188
for.body: ; preds = %for.cond
199-
%0 = bitcast ptr %a to ptr
200-
%1 = bitcast <4 x i32> %s.coerce.fca.0.extract to <16 x i8>
201-
%2 = bitcast <4 x i32> %s.coerce.fca.1.extract to <16 x i8>
189+
%0 = bitcast <4 x i32> %s.coerce.fca.0.extract to <16 x i8>
190+
%1 = bitcast <4 x i32> %s.coerce.fca.1.extract to <16 x i8>
191+
%2 = bitcast <16 x i8> %0 to <4 x i32>
202192
%3 = bitcast <16 x i8> %1 to <4 x i32>
203-
%4 = bitcast <16 x i8> %2 to <4 x i32>
204-
call void @llvm.aarch64.neon.st3.v4i32.p0(<4 x i32> %4, <4 x i32> %3, <4 x i32> %3, ptr %0)
205-
call void @llvm.aarch64.neon.st2.v4i32.p0(<4 x i32> %3, <4 x i32> %3, ptr %0)
206-
%5 = bitcast ptr %a to ptr
207-
%vld3 = call { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld3.v4i32.p0(ptr %5)
193+
call void @llvm.aarch64.neon.st3.v4i32.p0(<4 x i32> %3, <4 x i32> %2, <4 x i32> %2, ptr %a)
194+
call void @llvm.aarch64.neon.st2.v4i32.p0(<4 x i32> %2, <4 x i32> %2, ptr %a)
195+
%vld3 = call { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld3.v4i32.p0(ptr %a)
208196
%vld3.fca.0.extract = extractvalue { <4 x i32>, <4 x i32>, <4 x i32> } %vld3, 0
209197
%vld3.fca.1.extract = extractvalue { <4 x i32>, <4 x i32>, <4 x i32> } %vld3, 1
210198
%call = call <4 x i32> @vaddq_s32(<4 x i32> %vld3.fca.0.extract, <4 x i32> %vld3.fca.0.extract)

llvm/test/Transforms/EarlyCSE/X86/preserve_memoryssa.ll

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,20 +95,17 @@ entry:
9595
br i1 undef, label %if.then274, label %for.cond404
9696

9797
if.then274: ; preds = %if.end256
98-
%0 = bitcast ptr %exl.i to ptr
9998
%arrayidx.i = getelementptr inbounds [5 x i32], ptr %exl.i, i64 0, i64 1
10099
%arrayidx1.i = getelementptr inbounds [5 x i32], ptr %exl.i, i64 0, i64 2
101100
%arrayidx2.i = getelementptr inbounds [5 x i32], ptr %exl.i, i64 0, i64 3
102101
%arrayidx3.i = getelementptr inbounds [5 x i32], ptr %exl.i, i64 0, i64 4
103-
%1 = bitcast ptr %exl.i to ptr
104102
%arrayidx.i1034 = getelementptr inbounds [5 x i32], ptr %exl.i, i64 0, i64 1
105103
%arrayidx1.i1035 = getelementptr inbounds [5 x i32], ptr %exl.i, i64 0, i64 2
106104
%arrayidx2.i1036 = getelementptr inbounds [5 x i32], ptr %exl.i, i64 0, i64 3
107105
%arrayidx3.i1037 = getelementptr inbounds [5 x i32], ptr %exl.i, i64 0, i64 4
108106
unreachable
109107

110108
for.cond404: ; preds = %if.end256
111-
%2 = bitcast ptr %exl.i to ptr
112109
%arrayidx.i960 = getelementptr inbounds [5 x i32], ptr %exl.i, i64 0, i64 1
113110
%arrayidx1.i961 = getelementptr inbounds [5 x i32], ptr %exl.i, i64 0, i64 2
114111
%arrayidx2.i962 = getelementptr inbounds [5 x i32], ptr %exl.i, i64 0, i64 3
@@ -117,14 +114,13 @@ for.cond404: ; preds = %if.end256
117114
%arrayidx3.i963 = getelementptr inbounds [5 x i32], ptr %exl.i, i64 0, i64 4
118115

119116
; MemoryUse(LoE)
120-
%3 = load ptr, ptr @gnodeArray, align 8
121-
%arrayidx6.i968 = getelementptr inbounds ptr, ptr %3, i64 undef
117+
%0 = load ptr, ptr @gnodeArray, align 8
118+
%arrayidx6.i968 = getelementptr inbounds ptr, ptr %0, i64 undef
122119
; MemoryUse(1) MayAlias
123-
%4 = load ptr, ptr %arrayidx6.i968, align 8
120+
%1 = load ptr, ptr %arrayidx6.i968, align 8
124121
br i1 undef, label %for.cond26.preheader.i974, label %if.then20.for.body_crit_edge.i999
125122

126123
for.cond26.preheader.i974: ; preds = %if.then20.i996
127-
%5 = bitcast ptr %exl.i to ptr
128124
%arrayidx.i924 = getelementptr inbounds [5 x i32], ptr %exl.i, i64 0, i64 1
129125
%arrayidx1.i925 = getelementptr inbounds [5 x i32], ptr %exl.i, i64 0, i64 2
130126
%arrayidx2.i926 = getelementptr inbounds [5 x i32], ptr %exl.i, i64 0, i64 3

llvm/test/Transforms/InstSimplify/ConstProp/timeout.ll

Lines changed: 23 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -23,50 +23,47 @@ for.cond: ; preds = %for.inc, %entry
2323

2424
for.body: ; preds = %for.cond
2525
%1 = load ptr, ptr %s, align 4
26-
%2 = bitcast ptr %1 to ptr
27-
%add.ptr = getelementptr inbounds i8, ptr %2, i32 4
28-
%3 = ptrtoint ptr %add.ptr to i32
29-
%4 = load ptr, ptr %s, align 4
30-
%5 = bitcast ptr %4 to ptr
31-
%add.ptr1 = getelementptr inbounds i8, ptr %5, i32 4
32-
%6 = ptrtoint ptr %add.ptr1 to i32
33-
%rem = urem i32 %6, 2
26+
%add.ptr = getelementptr inbounds i8, ptr %1, i32 4
27+
%2 = ptrtoint ptr %add.ptr to i32
28+
%3 = load ptr, ptr %s, align 4
29+
%add.ptr1 = getelementptr inbounds i8, ptr %3, i32 4
30+
%4 = ptrtoint ptr %add.ptr1 to i32
31+
%rem = urem i32 %4, 2
3432
%cmp2 = icmp eq i32 %rem, 0
3533
br i1 %cmp2, label %cond.true, label %cond.false
3634

3735
cond.true: ; preds = %for.body
3836
br label %cond.end
3937

4038
cond.false: ; preds = %for.body
41-
%7 = load ptr, ptr %s, align 4
42-
%8 = bitcast ptr %7 to ptr
43-
%add.ptr3 = getelementptr inbounds i8, ptr %8, i32 4
44-
%9 = ptrtoint ptr %add.ptr3 to i32
45-
%rem4 = urem i32 %9, 2
39+
%5 = load ptr, ptr %s, align 4
40+
%add.ptr3 = getelementptr inbounds i8, ptr %5, i32 4
41+
%6 = ptrtoint ptr %add.ptr3 to i32
42+
%rem4 = urem i32 %6, 2
4643
br label %cond.end
4744

4845
cond.end: ; preds = %cond.false, %cond.true
4946
%cond = phi i32 [ 0, %cond.true ], [ %rem4, %cond.false ]
50-
%add = add i32 %3, %cond
51-
%10 = inttoptr i32 %add to ptr
52-
%11 = load ptr, ptr %s, align 4
53-
%next = getelementptr inbounds %struct.ST, ptr %11, i32 0, i32 0
54-
store ptr %10, ptr %next, align 4
55-
%12 = load ptr, ptr %s, align 4
56-
%next5 = getelementptr inbounds %struct.ST, ptr %12, i32 0, i32 0
57-
%13 = load ptr, ptr %next5, align 4
58-
store ptr %13, ptr %s, align 4
47+
%add = add i32 %2, %cond
48+
%7 = inttoptr i32 %add to ptr
49+
%8 = load ptr, ptr %s, align 4
50+
%next = getelementptr inbounds %struct.ST, ptr %8, i32 0, i32 0
51+
store ptr %7, ptr %next, align 4
52+
%9 = load ptr, ptr %s, align 4
53+
%next5 = getelementptr inbounds %struct.ST, ptr %9, i32 0, i32 0
54+
%10 = load ptr, ptr %next5, align 4
55+
store ptr %10, ptr %s, align 4
5956
br label %for.inc
6057

6158
for.inc: ; preds = %cond.end
62-
%14 = load i32, ptr %j, align 4
63-
%inc = add nsw i32 %14, 1
59+
%11 = load i32, ptr %j, align 4
60+
%inc = add nsw i32 %11, 1
6461
store i32 %inc, ptr %j, align 4
6562
br label %for.cond
6663

6764
for.end: ; preds = %for.cond
68-
%15 = load ptr, ptr %s, align 4
69-
%next6 = getelementptr inbounds %struct.ST, ptr %15, i32 0, i32 0
65+
%12 = load ptr, ptr %s, align 4
66+
%next6 = getelementptr inbounds %struct.ST, ptr %12, i32 0, i32 0
7067
store ptr null, ptr %next6, align 4
7168
ret void
7269
}

llvm/test/Transforms/InstSimplify/require-dominator.ll

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,13 @@ define void @foo(ptr) #1 align 2 {
1212

1313
; <label>:2:
1414
%3 = tail call ptr @_Znwm(i64 56) #10
15-
%4 = bitcast ptr %3 to ptr
1615
%p = load ptr, ptr undef, align 8
17-
%5 = icmp eq ptr %p, %4
18-
br i1 %5, label %exit, label %6
16+
%4 = icmp eq ptr %p, %3
17+
br i1 %4, label %exit, label %5
1918

2019
; <label>:6:
21-
%7 = icmp eq ptr %p, null
22-
br i1 %7, label %exit, label %8
20+
%6 = icmp eq ptr %p, null
21+
br i1 %6, label %exit, label %7
2322

2423
; <label>:8:
2524
br label %exit

llvm/test/Transforms/InstSimplify/simplify-nested-bitcast.ll

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,8 @@ entry:
1919
define i32 @f0(ptr addrspace(1), ptr addrspace(4)) #1 {
2020
entry:
2121
%2 = getelementptr inbounds %struct.__block_literal_generic, ptr addrspace(4) %1, i64 0, i32 3
22-
%3 = bitcast ptr addrspace(4) %1 to ptr addrspace(4)
23-
%4 = bitcast ptr addrspace(4) %2 to ptr addrspace(4)
24-
%5 = load ptr, ptr addrspace(4) %4, align 8
25-
%call = tail call i32 %5(ptr addrspace(4) %3, ptr addrspace(1) %0) #2
22+
%3 = load ptr, ptr addrspace(4) %2, align 8
23+
%call = tail call i32 %3(ptr addrspace(4) %1, ptr addrspace(1) %0) #2
2624
ret i32 %call
2725
}
2826

llvm/test/Transforms/SROA/address-spaces.ll

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,7 @@ define void @copy_struct([5 x i64] %in.coerce, ptr addrspace(1) align 4 %ptr) {
6565
;
6666
for.end:
6767
%in = alloca %struct.struct_test_27.0.13, align 8
68-
%0 = bitcast ptr %in to ptr
69-
store [5 x i64] %in.coerce, ptr %0, align 8
68+
store [5 x i64] %in.coerce, ptr %in, align 8
7069
%scevgep9 = getelementptr %struct.struct_test_27.0.13, ptr %in, i32 0, i32 4, i32 0
7170
call void @llvm.memcpy.p1.p0.i32(ptr addrspace(1) align 4 %ptr, ptr align 4 %scevgep9, i32 16, i1 false)
7271
ret void
@@ -87,10 +86,8 @@ define void @pr27557() {
8786
; CHECK-NEXT: ret void
8887
;
8988
%1 = alloca %union.anon, align 8
90-
%2 = bitcast ptr %1 to ptr
91-
store ptr @g, ptr %2, align 8
92-
%3 = bitcast ptr %1 to ptr
93-
store ptr addrspace(3) @l, ptr %3, align 8
89+
store ptr @g, ptr %1, align 8
90+
store ptr addrspace(3) @l, ptr %1, align 8
9491
ret void
9592
}
9693

@@ -103,11 +100,9 @@ define ptr @pr27557.alt() {
103100
; CHECK-NEXT: ret ptr inttoptr (i64 ptrtoint (ptr addrspace(2) @l2 to i64) to ptr)
104101
;
105102
%1 = alloca %union.anon, align 8
106-
%2 = bitcast ptr %1 to ptr
107-
store ptr addrspace(2) @l2, ptr %2, align 8
108-
%3 = bitcast ptr %1 to ptr
109-
%4 = load ptr, ptr %3, align 8
110-
ret ptr %4
103+
store ptr addrspace(2) @l2, ptr %1, align 8
104+
%2 = load ptr, ptr %1, align 8
105+
ret ptr %2
111106
}
112107

113108
; Make sure pre-splitting doesn't try to introduce an illegal bitcast

llvm/test/Transforms/SROA/alignment.ll

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,8 +219,7 @@ define dso_local i32 @pr45010(ptr %A) {
219219
%B = alloca %struct, align 4
220220
%1 = load i32, ptr %A, align 4
221221
store atomic volatile i32 %1, ptr %B release, align 4
222-
%2 = bitcast ptr %B to ptr
223-
%x = load atomic volatile i32, ptr %2 acquire, align 4
222+
%x = load atomic volatile i32, ptr %B acquire, align 4
224223
ret i32 %x
225224
}
226225

llvm/test/Transforms/SROA/alloca-address-space.ll

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,7 @@ define void @copy_struct([5 x i64] %in.coerce, ptr addrspace(1) align 4 %ptr) {
6464
;
6565
for.end:
6666
%in = alloca %struct.struct_test_27.0.13, align 8, addrspace(2)
67-
%0 = bitcast ptr addrspace(2) %in to ptr addrspace(2)
68-
store [5 x i64] %in.coerce, ptr addrspace(2) %0, align 8
67+
store [5 x i64] %in.coerce, ptr addrspace(2) %in, align 8
6968
%scevgep9 = getelementptr %struct.struct_test_27.0.13, ptr addrspace(2) %in, i32 0, i32 4, i32 0
7069
call void @llvm.memcpy.p1.p2.i32(ptr addrspace(1) align 4 %ptr, ptr addrspace(2) align 4 %scevgep9, i32 16, i1 false)
7170
ret void
@@ -86,10 +85,8 @@ define void @pr27557() {
8685
; CHECK-NEXT: ret void
8786
;
8887
%1 = alloca %union.anon, align 8, addrspace(2)
89-
%2 = bitcast ptr addrspace(2) %1 to ptr addrspace(2)
90-
store ptr @g, ptr addrspace(2) %2, align 8
91-
%3 = bitcast ptr addrspace(2) %1 to ptr addrspace(2)
92-
store ptr addrspace(3) @l, ptr addrspace(2) %3, align 8
88+
store ptr @g, ptr addrspace(2) %1, align 8
89+
store ptr addrspace(3) @l, ptr addrspace(2) %1, align 8
9390
ret void
9491
}
9592

@@ -102,11 +99,9 @@ define ptr @pr27557.alt() {
10299
; CHECK-NEXT: ret ptr inttoptr (i64 ptrtoint (ptr addrspace(4) @l4 to i64) to ptr)
103100
;
104101
%1 = alloca %union.anon, align 8, addrspace(2)
105-
%2 = bitcast ptr addrspace(2) %1 to ptr addrspace(2)
106-
store ptr addrspace(4) @l4, ptr addrspace(2) %2, align 8
107-
%3 = bitcast ptr addrspace(2) %1 to ptr addrspace(2)
108-
%4 = load ptr, ptr addrspace(2) %3, align 8
109-
ret ptr %4
102+
store ptr addrspace(4) @l4, ptr addrspace(2) %1, align 8
103+
%2 = load ptr, ptr addrspace(2) %1, align 8
104+
ret ptr %2
110105
}
111106

112107
; Test load from and store to non-zero address space.

llvm/test/Transforms/SROA/assume.ll

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@ define void @_ZN2bg2baIiEC2ES_(i64 %v) {
1919
entry:
2020
%y = alloca i64, align 8
2121
store i64 %v, ptr %y, align 8
22-
%0 = bitcast ptr %y to ptr
23-
%1 = bitcast ptr %0 to ptr
24-
call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ]
22+
call void @llvm.assume(i1 true) [ "nonnull"(ptr %y) ]
2523
ret void
2624
}
2725

0 commit comments

Comments
 (0)