68 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --include-generated-funcs2; RUN: opt -S -passes=verify,iroutliner -ir-outlining-no-cost < %s | FileCheck %s3 4; Make sure that we outline from all three of these functions, and that5; the first instruction in the module is included when it is the only6; instruction in the first basic block.7 8define void @f1() {9bb:10 br label %bb111bb1:12 br label %bb213bb2:14 ret void15}16 17define void @f2() {18bb:19 br label %bb120bb1:21 br label %bb222bb2:23 ret void24}25 26define void @f3() {27bb:28 br label %bb129bb1:30 br label %bb231bb2:32 ret void33}34; CHECK-LABEL: @f1(35; CHECK-NEXT: bb:36; CHECK-NEXT: call void @outlined_ir_func_0()37; CHECK-NEXT: br label [[BB2:%.*]]38; CHECK: bb2:39; CHECK-NEXT: ret void40;41;42; CHECK-LABEL: @f2(43; CHECK-NEXT: bb:44; CHECK-NEXT: call void @outlined_ir_func_0()45; CHECK-NEXT: br label [[BB2:%.*]]46; CHECK: bb2:47; CHECK-NEXT: ret void48;49;50; CHECK-LABEL: @f3(51; CHECK-NEXT: bb:52; CHECK-NEXT: call void @outlined_ir_func_0()53; CHECK-NEXT: br label [[BB2:%.*]]54; CHECK: bb2:55; CHECK-NEXT: ret void56;57;58; CHECK-LABEL: define internal void @outlined_ir_func_0(59; CHECK-NEXT: newFuncRoot:60; CHECK-NEXT: br label [[BB_TO_OUTLINE:%.*]]61; CHECK: bb_to_outline:62; CHECK-NEXT: br label [[BB1:%.*]]63; CHECK: bb1:64; CHECK-NEXT: br label [[BB2_EXITSTUB:%.*]]65; CHECK: bb2.exitStub:66; CHECK-NEXT: ret void67;68