1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt -S -passes=verify,iroutliner -ir-outlining-no-cost < %s | FileCheck %s 3 4; Show that we do not extract phi nodes as it would require extra label and 5; control flow checking. 6 7define void @function1(ptr %a, ptr %b) { 8; CHECK-LABEL: @function1( 9; CHECK-NEXT: entry: 10; CHECK-NEXT: br label [[FIRST:%.*]] 11; CHECK: first: 12; CHECK-NEXT: [[TMP0:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ 3, [[NEXT:%.*]] ] 13; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[A:%.*]], ptr [[B:%.*]]) 14; CHECK-NEXT: ret void 15; CHECK: next: 16; CHECK-NEXT: br label [[FIRST]] 17; 18entry: 19 br label %first 20first: 21 %0 = phi i32 [ 0, %entry ], [ 3, %next ] 22 store i32 2, ptr %a, align 4 23 store i32 3, ptr %b, align 4 24 ret void 25next: 26 br label %first 27} 28 29define void @function2(ptr %a, ptr %b) { 30; CHECK-LABEL: @function2( 31; CHECK-NEXT: entry: 32; CHECK-NEXT: br label [[FIRST:%.*]] 33; CHECK: first: 34; CHECK-NEXT: [[TMP0:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ 3, [[NEXT:%.*]] ] 35; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[A:%.*]], ptr [[B:%.*]]) 36; CHECK-NEXT: ret void 37; CHECK: next: 38; CHECK-NEXT: br label [[FIRST]] 39; 40entry: 41 br label %first 42first: 43 %0 = phi i32 [ 0, %entry ], [ 3, %next ] 44 store i32 2, ptr %a, align 4 45 store i32 3, ptr %b, align 4 46 ret void 47next: 48 br label %first 49} 50