[rtsan] Add fork/execve interceptors (#117198)
[llvm-project.git] / llvm / test / Transforms / LoopSimplify / update_latch_md2.ll
blob8eca4bb95838cfc81a61735eafc205d96a2cd264
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -passes=loop-simplify -S | FileCheck %s
4 ; Tests loop-simplify does not move the loop metadata, because
5 ; the loopexit block is not the latch of the loop _bb6.
7 define 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
26 entry:
27   br label %loop.header
29 loop.header:
30   br i1 %p, label %bb1, label %exit
32 bb1:
33   br i1 %p, label %bb2, label %bb3
35 bb2:
36   br label %bb3
38 bb3:
39   br label %loop.latch
41 loop.latch:
42   br i1 %p, label %loop.latch, label %loop.header, !llvm.loop !0
44 exit:
45   ret void
48 !0 = distinct !{!0, !1}
49 !1 = !{!"llvm.loop.mustprogress"}