10c4bbd29SAndrew Litteken; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --include-generated-funcs 2*9dd9575cSRoman Lebedev; RUN: opt -S -passes=verify,iroutliner -ir-outlining-no-cost < %s | FileCheck %s 30c4bbd29SAndrew Litteken 40c4bbd29SAndrew Litteken; Make sure that we outline from all three of these functions, and that 50c4bbd29SAndrew Litteken; the first instruction in the module is included when it is the only 60c4bbd29SAndrew Litteken; instruction in the first basic block. 70c4bbd29SAndrew Litteken 80c4bbd29SAndrew Littekendefine void @f1() { 90c4bbd29SAndrew Littekenbb: 100c4bbd29SAndrew Litteken br label %bb1 110c4bbd29SAndrew Littekenbb1: 120c4bbd29SAndrew Litteken br label %bb2 130c4bbd29SAndrew Littekenbb2: 140c4bbd29SAndrew Litteken ret void 150c4bbd29SAndrew Litteken} 160c4bbd29SAndrew Litteken 170c4bbd29SAndrew Littekendefine void @f2() { 180c4bbd29SAndrew Littekenbb: 190c4bbd29SAndrew Litteken br label %bb1 200c4bbd29SAndrew Littekenbb1: 210c4bbd29SAndrew Litteken br label %bb2 220c4bbd29SAndrew Littekenbb2: 230c4bbd29SAndrew Litteken ret void 240c4bbd29SAndrew Litteken} 250c4bbd29SAndrew Litteken 260c4bbd29SAndrew Littekendefine void @f3() { 270c4bbd29SAndrew Littekenbb: 280c4bbd29SAndrew Litteken br label %bb1 290c4bbd29SAndrew Littekenbb1: 300c4bbd29SAndrew Litteken br label %bb2 310c4bbd29SAndrew Littekenbb2: 320c4bbd29SAndrew Litteken ret void 330c4bbd29SAndrew Litteken} 340c4bbd29SAndrew Litteken; CHECK-LABEL: @f1( 350c4bbd29SAndrew Litteken; CHECK-NEXT: bb: 360c4bbd29SAndrew Litteken; CHECK-NEXT: call void @outlined_ir_func_0() 370c4bbd29SAndrew Litteken; CHECK-NEXT: br label [[BB2:%.*]] 380c4bbd29SAndrew Litteken; CHECK: bb2: 390c4bbd29SAndrew Litteken; CHECK-NEXT: ret void 400c4bbd29SAndrew Litteken; 410c4bbd29SAndrew Litteken; 420c4bbd29SAndrew Litteken; CHECK-LABEL: @f2( 430c4bbd29SAndrew Litteken; CHECK-NEXT: bb: 440c4bbd29SAndrew Litteken; CHECK-NEXT: call void @outlined_ir_func_0() 450c4bbd29SAndrew Litteken; CHECK-NEXT: br label [[BB2:%.*]] 460c4bbd29SAndrew Litteken; CHECK: bb2: 470c4bbd29SAndrew Litteken; CHECK-NEXT: ret void 480c4bbd29SAndrew Litteken; 490c4bbd29SAndrew Litteken; 500c4bbd29SAndrew Litteken; CHECK-LABEL: @f3( 510c4bbd29SAndrew Litteken; CHECK-NEXT: bb: 520c4bbd29SAndrew Litteken; CHECK-NEXT: call void @outlined_ir_func_0() 530c4bbd29SAndrew Litteken; CHECK-NEXT: br label [[BB2:%.*]] 540c4bbd29SAndrew Litteken; CHECK: bb2: 550c4bbd29SAndrew Litteken; CHECK-NEXT: ret void 560c4bbd29SAndrew Litteken; 570c4bbd29SAndrew Litteken; 580c4bbd29SAndrew Litteken; CHECK-LABEL: define internal void @outlined_ir_func_0( 590c4bbd29SAndrew Litteken; CHECK-NEXT: newFuncRoot: 600c4bbd29SAndrew Litteken; CHECK-NEXT: br label [[BB_TO_OUTLINE:%.*]] 610c4bbd29SAndrew Litteken; CHECK: bb_to_outline: 620c4bbd29SAndrew Litteken; CHECK-NEXT: br label [[BB1:%.*]] 630c4bbd29SAndrew Litteken; CHECK: bb1: 640c4bbd29SAndrew Litteken; CHECK-NEXT: br label [[BB2_EXITSTUB:%.*]] 650c4bbd29SAndrew Litteken; CHECK: bb2.exitStub: 660c4bbd29SAndrew Litteken; CHECK-NEXT: ret void 670c4bbd29SAndrew Litteken; 68