brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · b707856 Raw
54 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --include-generated-funcs2; RUN: opt < %s -passes=loop-extract -S | FileCheck %s3 4; This test used to enter an infinite loop, until out of memory (PR3082).5 6define void @test(i1 %arg) {7 8entry:9  br label %loopentry10 11loopentry:12  br i1 %arg, label %exit.1, label %loopexit13 14loopexit:15  br i1 %arg, label %loopentry, label %exit.016 17exit.0:18  br label %unified19 20exit.1:21  br label %unified22 23unified:24  ret void25}26; CHECK-LABEL: define {{[^@]+}}@test27; CHECK-SAME: (i1 [[ARG:%.*]]) {28; CHECK-NEXT:  entry:29; CHECK-NEXT:    br label [[CODEREPL:%.*]]30; CHECK:       codeRepl:31; CHECK-NEXT:    [[TARGETBLOCK:%.*]] = call i1 @test.loopentry(i1 [[ARG]])32; CHECK-NEXT:    br i1 [[TARGETBLOCK]], label [[EXIT_1:%.*]], label [[EXIT_0:%.*]]33; CHECK:       exit.0:34; CHECK-NEXT:    br label [[UNIFIED:%.*]]35; CHECK:       exit.1:36; CHECK-NEXT:    br label [[UNIFIED]]37; CHECK:       unified:38; CHECK-NEXT:    ret void39;40;41; CHECK-LABEL: define {{[^@]+}}@test.loopentry42; CHECK-SAME: (i1 [[ARG:%.*]]) {43; CHECK-NEXT:  newFuncRoot:44; CHECK-NEXT:    br label [[LOOPENTRY:%.*]]45; CHECK:       loopentry:46; CHECK-NEXT:    br i1 [[ARG]], label [[EXIT_1_EXITSTUB:%.*]], label [[LOOPEXIT:%.*]]47; CHECK:       loopexit:48; CHECK-NEXT:    br i1 [[ARG]], label [[LOOPENTRY]], label [[EXIT_0_EXITSTUB:%.*]]49; CHECK:       exit.1.exitStub:50; CHECK-NEXT:    ret i1 true51; CHECK:       exit.0.exitStub:52; CHECK-NEXT:    ret i1 false53;54