1*3d5ea539SHendrik Greving; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2*3d5ea539SHendrik Greving; RUN: opt < %s -passes=loop-simplify -S | FileCheck %s 3*3d5ea539SHendrik Greving 4e5d8fb69SHendrik Greving; Tests loop-simplify does not move the loop metadata, because 5e5d8fb69SHendrik Greving; the loopexit block is not the latch of the loop _bb6. 6e5d8fb69SHendrik Greving 7e5d8fb69SHendrik Grevingdefine void @func(i1 %p) { 8*3d5ea539SHendrik Greving; CHECK-LABEL: @func( 9*3d5ea539SHendrik Greving; CHECK-NEXT: entry: 10*3d5ea539SHendrik Greving; CHECK-NEXT: br label [[LOOP_HEADER:%.*]] 11*3d5ea539SHendrik Greving; CHECK: loop.header.loopexit: 12*3d5ea539SHendrik Greving; CHECK-NEXT: br label [[LOOP_HEADER]], !llvm.loop [[LOOP0:![0-9]+]] 13*3d5ea539SHendrik Greving; CHECK: loop.header: 14*3d5ea539SHendrik Greving; CHECK-NEXT: br i1 [[P:%.*]], label [[BB1:%.*]], label [[EXIT:%.*]] 15*3d5ea539SHendrik Greving; CHECK: bb1: 16*3d5ea539SHendrik Greving; CHECK-NEXT: br i1 [[P]], label [[BB2:%.*]], label [[BB3:%.*]] 17*3d5ea539SHendrik Greving; CHECK: bb2: 18*3d5ea539SHendrik Greving; CHECK-NEXT: br label [[BB3]] 19*3d5ea539SHendrik Greving; CHECK: bb3: 20*3d5ea539SHendrik Greving; CHECK-NEXT: br label [[LOOP_LATCH:%.*]] 21*3d5ea539SHendrik Greving; CHECK: loop.latch: 22*3d5ea539SHendrik Greving; CHECK-NEXT: br i1 [[P]], label [[LOOP_LATCH]], label [[LOOP_HEADER_LOOPEXIT:%.*]], !llvm.loop [[LOOP0]] 23*3d5ea539SHendrik Greving; CHECK: exit: 24*3d5ea539SHendrik Greving; CHECK-NEXT: ret void 25*3d5ea539SHendrik Greving; 26e5d8fb69SHendrik Grevingentry: 27e5d8fb69SHendrik Greving br label %loop.header 28e5d8fb69SHendrik Greving 29e5d8fb69SHendrik Grevingloop.header: 30e5d8fb69SHendrik Greving br i1 %p, label %bb1, label %exit 31e5d8fb69SHendrik Greving 32e5d8fb69SHendrik Grevingbb1: 33e5d8fb69SHendrik Greving br i1 %p, label %bb2, label %bb3 34e5d8fb69SHendrik Greving 35e5d8fb69SHendrik Grevingbb2: 36e5d8fb69SHendrik Greving br label %bb3 37e5d8fb69SHendrik Greving 38e5d8fb69SHendrik Grevingbb3: 39e5d8fb69SHendrik Greving br label %loop.latch 40e5d8fb69SHendrik Greving 41e5d8fb69SHendrik Grevingloop.latch: 42e5d8fb69SHendrik Greving br i1 %p, label %loop.latch, label %loop.header, !llvm.loop !0 43e5d8fb69SHendrik Greving 44e5d8fb69SHendrik Grevingexit: 45e5d8fb69SHendrik Greving ret void 46e5d8fb69SHendrik Greving} 47e5d8fb69SHendrik Greving 48e5d8fb69SHendrik Greving!0 = distinct !{!0, !1} 49e5d8fb69SHendrik Greving!1 = !{!"llvm.loop.mustprogress"} 50