50 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes=loop-simplify -S | FileCheck %s3 4; Tests loop-simplify does not move the loop metadata, because5; the loopexit block is not the latch of the loop _bb6.6 7define void @func(i1 %p) {8; CHECK-LABEL: @func(9; CHECK-NEXT: entry:10; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]11; CHECK: loop.header.loopexit:12; CHECK-NEXT: br label [[LOOP_HEADER]], !llvm.loop [[LOOP0:![0-9]+]]13; CHECK: loop.header:14; CHECK-NEXT: br i1 [[P:%.*]], label [[BB1:%.*]], label [[EXIT:%.*]]15; CHECK: bb1:16; CHECK-NEXT: br i1 [[P]], label [[BB2:%.*]], label [[BB3:%.*]]17; CHECK: bb2:18; CHECK-NEXT: br label [[BB3]]19; CHECK: bb3:20; CHECK-NEXT: br label [[LOOP_LATCH:%.*]]21; CHECK: loop.latch:22; CHECK-NEXT: br i1 [[P]], label [[LOOP_LATCH]], label [[LOOP_HEADER_LOOPEXIT:%.*]], !llvm.loop [[LOOP0]]23; CHECK: exit:24; CHECK-NEXT: ret void25;26entry:27 br label %loop.header28 29loop.header:30 br i1 %p, label %bb1, label %exit31 32bb1:33 br i1 %p, label %bb2, label %bb334 35bb2:36 br label %bb337 38bb3:39 br label %loop.latch40 41loop.latch:42 br i1 %p, label %loop.latch, label %loop.header, !llvm.loop !043 44exit:45 ret void46}47 48!0 = distinct !{!0, !1}49!1 = !{!"llvm.loop.mustprogress"}50