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%swift.error = type opaque 5 6define void @outlining_swifterror1(ptr swifterror %err) { 7; CHECK-LABEL: @outlining_swifterror1( 8; CHECK-NEXT: entry: 9; CHECK-NEXT: [[X:%.*]] = alloca i64, align 8 10; CHECK-NEXT: call void @outlined_ir_func_0(i64 5, ptr [[X]], ptr swifterror [[ERR:%.*]]) 11; CHECK-NEXT: ret void 12; 13entry: 14 %x = alloca i64 15 %0 = mul i64 5, 5 16 %1 = add i64 %0, %0 17 store i64 %1, ptr %x 18 store ptr %x, ptr %err 19 ret void 20} 21 22define void @outlining_swifterror2(ptr swifterror %err) { 23; CHECK-LABEL: @outlining_swifterror2( 24; CHECK-NEXT: entry: 25; CHECK-NEXT: [[X:%.*]] = alloca i64, align 8 26; CHECK-NEXT: call void @outlined_ir_func_0(i64 3, ptr [[X]], ptr swifterror [[ERR:%.*]]) 27; CHECK-NEXT: ret void 28; 29entry: 30 %x = alloca i64 31 %0 = mul i64 3, 3 32 %1 = add i64 %0, %0 33 store i64 %1, ptr %x 34 store ptr %x, ptr %err 35 ret void 36} 37 38; CHECK: define internal void @outlined_ir_func_0(i64 [[ARG0:%.*]], ptr [[ARG1:%.*]], ptr swifterror [[ARG2:%.*]]) 39; CHECK: entry_to_outline: 40; CHECK-NEXT: [[TMP0:%.*]] = mul i64 [[ARG0]], [[ARG0]] 41; CHECK-NEXT: [[TMP1:%.*]] = add i64 [[TMP0]], [[TMP0]] 42; CHECK-NEXT: store i64 [[TMP1]], ptr [[ARG1]], align 4 43; CHECK-NEXT: store ptr [[ARG1]], ptr [[ARG2]], align 8 44; CHECK-NEXT: br label %entry_after_outline.exitStub 45