@@ -134,7 +134,7 @@ define void @forward_offset_memcpy_inline(ptr %src, ptr %dest) {
134
134
ret void
135
135
}
136
136
137
- ; We cannot forward `memcpy` because it exceeds the size of `memcpy` it depends on.
137
+ ; We can forward `memcpy` by shrinking it to the size of the `memcpy` it depends on.
138
138
define void @forward_oversize_offset (ptr %src , ptr %dest ) {
139
139
; CHECK-LABEL: define void @forward_oversize_offset(
140
140
; CHECK-SAME: ptr [[SRC:%.*]], ptr [[DEST:%.*]]) {
@@ -218,14 +218,14 @@ define void @pr98675(ptr noalias %p1, ptr noalias %p2) {
218
218
define void @over_offset_cpy (ptr %src ) {
219
219
; CHECK-LABEL: define void @over_offset_cpy(
220
220
; CHECK-SAME: ptr [[SRC:%.*]]) {
221
- ; CHECK-NEXT: [[TMP:%.*]] = alloca i8, i64 2 , align 1
222
- ; CHECK-NEXT: [[DST:%.*]] = alloca i8, i64 1, align 1
221
+ ; CHECK-NEXT: [[TMP:%.*]] = alloca [2 x i8] , align 1
222
+ ; CHECK-NEXT: [[DST:%.*]] = alloca i8, align 1
223
223
; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP]], ptr align 8 [[SRC]], i64 1, i1 false)
224
224
; CHECK-NEXT: [[TMP_OFFSET:%.*]] = getelementptr inbounds i8, ptr [[TMP]], i64 1
225
225
; CHECK-NEXT: ret void
226
226
;
227
- %tmp = alloca i8 , i64 2
228
- %dst = alloca i8 , i64 1
227
+ %tmp = alloca [ 2 x i8 ]
228
+ %dst = alloca i8
229
229
call void @llvm.memcpy.p0.p0.i64 (ptr align 8 %tmp , ptr align 8 %src , i64 1 , i1 false )
230
230
%tmp_offset = getelementptr inbounds i8 , ptr %tmp , i64 1
231
231
call void @llvm.memcpy.p0.p0.i64 (ptr align 8 %dst , ptr align 8 %tmp_offset , i64 1 , i1 false )
0 commit comments