@@ -134,7 +134,7 @@ define void @forward_offset_memcpy_inline(ptr %src, ptr %dest) {
134134 ret void
135135}
136136
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.
138138define void @forward_oversize_offset (ptr %src , ptr %dest ) {
139139; CHECK-LABEL: define void @forward_oversize_offset(
140140; CHECK-SAME: ptr [[SRC:%.*]], ptr [[DEST:%.*]]) {
@@ -218,14 +218,14 @@ define void @pr98675(ptr noalias %p1, ptr noalias %p2) {
218218define void @over_offset_cpy (ptr %src ) {
219219; CHECK-LABEL: define void @over_offset_cpy(
220220; 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
223223; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP]], ptr align 8 [[SRC]], i64 1, i1 false)
224224; CHECK-NEXT: [[TMP_OFFSET:%.*]] = getelementptr inbounds i8, ptr [[TMP]], i64 1
225225; CHECK-NEXT: ret void
226226;
227- %tmp = alloca i8 , i64 2
228- %dst = alloca i8 , i64 1
227+ %tmp = alloca [ 2 x i8 ]
228+ %dst = alloca i8
229229 call void @llvm.memcpy.p0.p0.i64 (ptr align 8 %tmp , ptr align 8 %src , i64 1 , i1 false )
230230 %tmp_offset = getelementptr inbounds i8 , ptr %tmp , i64 1
231231 call void @llvm.memcpy.p0.p0.i64 (ptr align 8 %dst , ptr align 8 %tmp_offset , i64 1 , i1 false )
0 commit comments