1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --include-generated-funcs 2; RUN: opt -S -passes=verify,iroutliner -ir-outlining-no-cost < %s | FileCheck %s 3 4; Make sure that we outline safely from functions with no return instructions. 5 6; The code extractor will insert return instructions in the outer function 7; due to assumptions about the contents of the outlined region. 8 9define void @f1() { 10bb: 11 br label %bb1 12bb1: 13 br label %bb1 14} 15 16define void @f2() { 17bb: 18 br label %bb1 19bb1: 20 br label %bb1 21} 22 23define void @f3() { 24bb: 25 br label %bb1 26bb1: 27 br label %bb1 28} 29; CHECK-LABEL: @f1( 30; CHECK-NEXT: bb: 31; CHECK-NEXT: call void @outlined_ir_func_0() 32; CHECK-NEXT: unreachable 33; 34; 35; CHECK-LABEL: @f2( 36; CHECK-NEXT: bb: 37; CHECK-NEXT: call void @outlined_ir_func_0() 38; CHECK-NEXT: unreachable 39; 40; 41; CHECK-LABEL: @f3( 42; CHECK-NEXT: bb: 43; CHECK-NEXT: call void @outlined_ir_func_0() 44; CHECK-NEXT: unreachable 45; 46; 47; CHECK-LABEL: define internal void @outlined_ir_func_0( 48; CHECK-NEXT: newFuncRoot: 49; CHECK-NEXT: br label [[BB_TO_OUTLINE:%.*]] 50; CHECK: bb_to_outline: 51; CHECK-NEXT: br label [[BB1:%.*]] 52; CHECK: bb1: 53; CHECK-NEXT: br label [[BB1]] 54; 55