@@ -9,18 +9,14 @@ target datalayout="p5:32:32-A5"
9
9
define i8 @remove_alloca_use_arg (i1 %cond ) {
10
10
; CHECK-LABEL: @remove_alloca_use_arg(
11
11
; CHECK-NEXT: entry:
12
- ; CHECK-NEXT: [[ALLOCA:%.*]] = alloca [32 x i8], align 4, addrspace(1)
13
- ; CHECK-NEXT: call void @llvm.memcpy.p1.p0.i64(ptr addrspace(1) noundef align 4 dereferenceable(256) [[ALLOCA]], ptr noundef nonnull align 16 dereferenceable(256) @g1, i64 256, i1 false)
14
12
; CHECK-NEXT: br i1 [[COND:%.*]], label [[IF:%.*]], label [[ELSE:%.*]]
15
13
; CHECK: if:
16
- ; CHECK-NEXT: [[VAL_IF:%.*]] = getelementptr inbounds [32 x i8], ptr addrspace(1) [[ALLOCA]], i64 0, i64 2
17
14
; CHECK-NEXT: br label [[SINK:%.*]]
18
15
; CHECK: else:
19
- ; CHECK-NEXT: [[VAL_ELSE:%.*]] = getelementptr inbounds [32 x i8], ptr addrspace(1) [[ALLOCA]], i64 0, i64 1
20
16
; CHECK-NEXT: br label [[SINK]]
21
17
; CHECK: sink:
22
- ; CHECK-NEXT: [[PTR :%.*]] = phi ptr addrspace(1) [ [[VAL_IF]], [[IF]] ], [ [[VAL_ELSE]] , [[ELSE]] ]
23
- ; CHECK-NEXT: [[LOAD:%.*]] = load i8, ptr addrspace(1) [[PTR ]], align 1
18
+ ; CHECK-NEXT: [[PTR1 :%.*]] = phi ptr [ getelementptr inbounds ([32 x i8], ptr @g1, i64 0, i64 2), [[IF]] ], [ getelementptr inbounds ([32 x i8], ptr @g1, i64 0, i64 1) , [[ELSE]] ]
19
+ ; CHECK-NEXT: [[LOAD:%.*]] = load i8, ptr [[PTR1 ]], align 1
24
20
; CHECK-NEXT: ret i8 [[LOAD]]
25
21
;
26
22
entry:
@@ -116,18 +112,14 @@ sink:
116
112
define i8 @loop_phi_remove_alloca (i1 %cond ) {
117
113
; CHECK-LABEL: @loop_phi_remove_alloca(
118
114
; CHECK-NEXT: entry:
119
- ; CHECK-NEXT: [[ALLOCA:%.*]] = alloca [32 x i8], align 4, addrspace(1)
120
- ; CHECK-NEXT: call void @llvm.memcpy.p1.p0.i64(ptr addrspace(1) noundef align 4 dereferenceable(256) [[ALLOCA]], ptr noundef nonnull align 16 dereferenceable(256) @g1, i64 256, i1 false)
121
- ; CHECK-NEXT: [[VAL1:%.*]] = getelementptr inbounds [32 x i8], ptr addrspace(1) [[ALLOCA]], i64 0, i64 1
122
115
; CHECK-NEXT: br label [[BB_0:%.*]]
123
116
; CHECK: bb.0:
124
- ; CHECK-NEXT: [[PTR :%.*]] = phi ptr addrspace(1) [ [[VAL1]], [[ENTRY:%.*]] ], [ [[VAL2:%.*]] , [[BB_1:%.*]] ]
117
+ ; CHECK-NEXT: [[PTR1 :%.*]] = phi ptr [ getelementptr inbounds ([32 x i8], ptr @g1, i64 0, i64 1), [[ENTRY:%.*]] ], [ getelementptr inbounds ([32 x i8], ptr @g1, i64 0, i64 2) , [[BB_1:%.*]] ]
125
118
; CHECK-NEXT: br i1 [[COND:%.*]], label [[BB_1]], label [[EXIT:%.*]]
126
119
; CHECK: bb.1:
127
- ; CHECK-NEXT: [[VAL2]] = getelementptr inbounds [32 x i8], ptr addrspace(1) [[ALLOCA]], i64 0, i64 2
128
120
; CHECK-NEXT: br label [[BB_0]]
129
121
; CHECK: exit:
130
- ; CHECK-NEXT: [[LOAD:%.*]] = load i8, ptr addrspace(1) [[PTR ]], align 1
122
+ ; CHECK-NEXT: [[LOAD:%.*]] = load i8, ptr [[PTR1 ]], align 1
131
123
; CHECK-NEXT: ret i8 [[LOAD]]
132
124
;
133
125
entry:
@@ -174,21 +166,17 @@ join:
174
166
ret i32 %v
175
167
}
176
168
177
- define i8 @loop_phi_late_memtransfer (i1 %cond ) {
178
- ; CHECK-LABEL: @loop_phi_late_memtransfer (
169
+ define i8 @loop_phi_late_memtransfer_remove_alloca (i1 %cond ) {
170
+ ; CHECK-LABEL: @loop_phi_late_memtransfer_remove_alloca (
179
171
; CHECK-NEXT: entry:
180
- ; CHECK-NEXT: [[ALLOCA:%.*]] = alloca [32 x i8], align 4, addrspace(1)
181
- ; CHECK-NEXT: [[VAL1:%.*]] = getelementptr inbounds [32 x i8], ptr addrspace(1) [[ALLOCA]], i64 0, i64 1
182
172
; CHECK-NEXT: br label [[BB_0:%.*]]
183
173
; CHECK: bb.0:
184
- ; CHECK-NEXT: [[PTR :%.*]] = phi ptr addrspace(1) [ [[VAL1]], [[ENTRY:%.*]] ], [ [[VAL2:%.*]] , [[BB_1:%.*]] ]
174
+ ; CHECK-NEXT: [[PTR1 :%.*]] = phi ptr [ getelementptr inbounds ([32 x i8], ptr @g1, i64 0, i64 1), [[ENTRY:%.*]] ], [ getelementptr inbounds ([32 x i8], ptr @g1, i64 0, i64 2) , [[BB_1:%.*]] ]
185
175
; CHECK-NEXT: br i1 [[COND:%.*]], label [[BB_1]], label [[EXIT:%.*]]
186
176
; CHECK: bb.1:
187
- ; CHECK-NEXT: [[VAL2]] = getelementptr inbounds [32 x i8], ptr addrspace(1) [[ALLOCA]], i64 0, i64 2
188
- ; CHECK-NEXT: call void @llvm.memcpy.p1.p0.i64(ptr addrspace(1) noundef align 4 dereferenceable(256) [[ALLOCA]], ptr noundef nonnull align 16 dereferenceable(256) @g1, i64 256, i1 false)
189
177
; CHECK-NEXT: br label [[BB_0]]
190
178
; CHECK: exit:
191
- ; CHECK-NEXT: [[LOAD:%.*]] = load i8, ptr addrspace(1) [[PTR ]], align 1
179
+ ; CHECK-NEXT: [[LOAD:%.*]] = load i8, ptr [[PTR1 ]], align 1
192
180
; CHECK-NEXT: ret i8 [[LOAD]]
193
181
;
194
182
entry:
0 commit comments