1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt < %s -passes=loop-simplify -S | FileCheck %s 3 4; Tests loop-simplify does not move the loop metadata, because 5; 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 void 25; 26entry: 27 br label %loop.header 28 29loop.header: 30 br i1 %p, label %bb1, label %exit 31 32bb1: 33 br i1 %p, label %bb2, label %bb3 34 35bb2: 36 br label %bb3 37 38bb3: 39 br label %loop.latch 40 41loop.latch: 42 br i1 %p, label %loop.latch, label %loop.header, !llvm.loop !0 43 44exit: 45 ret void 46} 47 48!0 = distinct !{!0, !1} 49!1 = !{!"llvm.loop.mustprogress"} 50