66 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=loop-unroll -unroll-verify-domtree -verify-dom-info -S %s | FileCheck %s3 4define 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 void22;23entry:24 br label %loop.header25 26loop.header:27 %exitcond = phi i1 [ true, %loop.latch ], [ false, %entry ]28 br i1 %exitcond, label %exit, label %loop.latch29 30loop.latch:31 br i1 true, label %loop.header, label %loop.exit32 33loop.exit:34 br label %exit35 36exit:37 ret void38}39 40define 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: unreachable51; CHECK: exit:52; CHECK-NEXT: ret void53;54bb:55 br label %loop56 57loop:58 switch i1 true, label %loop [59 i1 true, label %exit60 i1 false, label %loop61 ]62 63exit:64 ret void65}66