Skip to content

Commit 3ba42a5

Browse files
committed
[MemCpyOpt] Add non-local memcpy test with memory phi.
1 parent 0b13c6b commit 3ba42a5

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

llvm/test/Transforms/MemCpyOpt/nonlocal-memcpy-memcpy.ll

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,3 +170,28 @@ bb23: ; preds = %bb22, %bb13
170170
bb25: ; preds = %bb6
171171
unreachable
172172
}
173+
174+
define void @memphi_with_unrelated_clobber(i1 %cond, i64* %arg, i8* noalias %a, i8* noalias %b, i8* noalias %c) {
175+
; CHECK-LABEL: @memphi_with_unrelated_clobber(
176+
; CHECK-NEXT: entry:
177+
; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[A:%.*]], i8* [[B:%.*]], i64 16, i1 false)
178+
; CHECK-NEXT: br i1 [[COND:%.*]], label [[THEN:%.*]], label [[EXIT:%.*]]
179+
; CHECK: then:
180+
; CHECK-NEXT: store i64 0, i64* [[ARG:%.*]], align 4
181+
; CHECK-NEXT: br label [[EXIT]]
182+
; CHECK: exit:
183+
; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[C:%.*]], i8* [[B]], i64 16, i1 false)
184+
; CHECK-NEXT: ret void
185+
;
186+
entry:
187+
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %a, i8* %b, i64 16, i1 false)
188+
br i1 %cond, label %then, label %exit
189+
190+
then:
191+
store i64 0, i64* %arg
192+
br label %exit
193+
194+
exit:
195+
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %c, i8* %a, i64 16, i1 false)
196+
ret void
197+
}

0 commit comments

Comments
 (0)