Skip to content

Commit 5a9a7f5

Browse files
committed
[MemCpyOpt] add tests for unreachable cycles for post dominators(NFC)
1 parent a701b7e commit 5a9a7f5

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

llvm/test/Transforms/MemCpyOpt/stack-move.ll

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -743,6 +743,42 @@ bb2:
743743

744744
}
745745

746+
; Test for existing unreachable cycle
747+
define void @multi_bb_pdom_test2(i1 %b) {
748+
; CHECK-LABEL: define void @multi_bb_pdom_test2
749+
; CHECK-SAME: (i1 [[B:%.*]]) {
750+
; CHECK-NEXT: [[SRC:%.*]] = alloca [[STRUCT_FOO:%.*]], align 4
751+
; CHECK-NEXT: [[DEST:%.*]] = alloca [[STRUCT_FOO]], align 4
752+
; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr nocapture [[DEST]])
753+
; CHECK-NEXT: store [[STRUCT_FOO]] { i32 10, i32 20, i32 30 }, ptr [[SRC]], align 4
754+
; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DEST]], ptr align 4 [[SRC]], i64 12, i1 false)
755+
; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr nocapture noundef [[DEST]])
756+
; CHECK-NEXT: ret void
757+
; CHECK: unr1:
758+
; CHECK-NEXT: [[TMP2:%.*]] = call i32 @use_nocapture(ptr nocapture noundef [[DEST]])
759+
; CHECK-NEXT: br label [[UNR2:%.*]]
760+
; CHECK: unr2:
761+
; CHECK-NEXT: [[TMP3:%.*]] = call i32 @use_nocapture(ptr nocapture noundef [[DEST]])
762+
; CHECK-NEXT: br label [[UNR1:%.*]]
763+
;
764+
%src = alloca %struct.Foo, align 4
765+
%dest = alloca %struct.Foo, align 4
766+
call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest)
767+
store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src
768+
call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false); 1
769+
%1 = call i32 @use_nocapture(ptr noundef nocapture %dest)
770+
ret void
771+
772+
unr1:
773+
%2 = call i32 @use_nocapture(ptr noundef nocapture %dest)
774+
br label %unr2
775+
776+
unr2:
777+
%3 = call i32 @use_nocapture(ptr noundef nocapture %dest)
778+
br label %unr1
779+
780+
}
781+
746782
; TODO: merge allocas for multi basicblock loop case.
747783
define void @multi_bb_loop(i32 %n) {
748784
; CHECK-LABEL: define void @multi_bb_loop

0 commit comments

Comments
 (0)