[rtsan] Add fork/execve interceptors (#117198)
[llvm-project.git] / llvm / test / Transforms / LoopUnroll / verify-dominators.ll
blobc7a5fd7eb4c370a9e52ef4c940d229974020d9c4
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt -passes=loop-unroll -unroll-verify-domtree -verify-dom-info -S %s | FileCheck %s
4 define void @test() {
5 ; CHECK-LABEL: @test(
6 ; CHECK-NEXT:  entry:
7 ; CHECK-NEXT:    br label [[LOOP_HEADER:%.*]]
8 ; CHECK:       loop.header:
9 ; CHECK-NEXT:    br label [[LOOP_LATCH:%.*]]
10 ; CHECK:       loop.latch:
11 ; CHECK-NEXT:    br i1 true, label [[LOOP_HEADER_1:%.*]], label [[LOOP_EXIT:%.*]]
12 ; CHECK:       loop.header.1:
13 ; CHECK-NEXT:    br i1 true, label [[EXIT_LOOPEXIT:%.*]], label [[LOOP_LATCH_1:%.*]]
14 ; CHECK:       loop.latch.1:
15 ; CHECK-NEXT:    br label [[LOOP_EXIT]]
16 ; CHECK:       loop.exit:
17 ; CHECK-NEXT:    br label [[EXIT:%.*]]
18 ; CHECK:       exit.loopexit:
19 ; CHECK-NEXT:    br label [[EXIT]]
20 ; CHECK:       exit:
21 ; CHECK-NEXT:    ret void
23 entry:
24   br label %loop.header
26 loop.header:
27   %exitcond = phi i1 [ true, %loop.latch ], [ false, %entry ]
28   br i1 %exitcond, label %exit, label %loop.latch
30 loop.latch:
31   br i1 true, label %loop.header, label %loop.exit
33 loop.exit:
34   br label %exit
36 exit:
37   ret void
40 define void @exiting_terminator_is_switch() {
41 ; CHECK-LABEL: @exiting_terminator_is_switch(
42 ; CHECK-NEXT:  bb:
43 ; CHECK-NEXT:    br label [[LOOP:%.*]]
44 ; CHECK:       loop:
45 ; CHECK-NEXT:    switch i1 true, label [[LOOP_BACKEDGE:%.*]] [
46 ; CHECK-NEXT:    i1 true, label [[EXIT:%.*]]
47 ; CHECK-NEXT:    i1 false, label [[LOOP_BACKEDGE]]
48 ; CHECK-NEXT:    ]
49 ; CHECK:       loop.backedge:
50 ; CHECK-NEXT:    unreachable
51 ; CHECK:       exit:
52 ; CHECK-NEXT:    ret void
54 bb:
55   br label %loop
57 loop:
58   switch i1 true, label %loop [
59   i1 true, label %exit
60   i1 false, label %loop
61   ]
63 exit:
64   ret void