1cea80760SAndrew Litteken; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 29dd9575cSRoman Lebedev; RUN: opt -S -passes=verify,iroutliner -ir-outlining-no-cost < %s | FileCheck %s 3cea80760SAndrew Litteken 4cea80760SAndrew Litteken; This test checks that invoke instructions are not outlined even if they 5cea80760SAndrew Litteken; in a similar section. Outlining does not currently handle control flow 6cea80760SAndrew Litteken; changes. 7cea80760SAndrew Litteken 8cea80760SAndrew Littekendeclare void @llvm.donothing() nounwind readnone 9cea80760SAndrew Litteken 10cea80760SAndrew Littekendefine void @function1() personality i8 3 { 11cea80760SAndrew Litteken; CHECK-LABEL: @function1( 12cea80760SAndrew Litteken; CHECK-NEXT: entry: 13cea80760SAndrew Litteken; CHECK-NEXT: [[A:%.*]] = alloca i32, align 4 14cea80760SAndrew Litteken; CHECK-NEXT: [[B:%.*]] = alloca i32, align 4 15*f4b925eeSMatt Arsenault; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[A]], ptr [[B]]) 16cea80760SAndrew Litteken; CHECK-NEXT: invoke void @llvm.donothing() 17cea80760SAndrew Litteken; CHECK-NEXT: to label [[NORMAL:%.*]] unwind label [[EXCEPTION:%.*]] 18cea80760SAndrew Litteken; CHECK: exception: 19cea80760SAndrew Litteken; CHECK-NEXT: [[CLEANUP:%.*]] = landingpad i8 20cea80760SAndrew Litteken; CHECK-NEXT: cleanup 21cea80760SAndrew Litteken; CHECK-NEXT: br label [[NORMAL]] 22cea80760SAndrew Litteken; CHECK: normal: 23cea80760SAndrew Litteken; CHECK-NEXT: ret void 24cea80760SAndrew Litteken; 25cea80760SAndrew Littekenentry: 26cea80760SAndrew Litteken %a = alloca i32, align 4 27cea80760SAndrew Litteken %b = alloca i32, align 4 28*f4b925eeSMatt Arsenault store i32 2, ptr %a, align 4 29*f4b925eeSMatt Arsenault store i32 3, ptr %b, align 4 30cea80760SAndrew Litteken invoke void @llvm.donothing() to label %normal unwind label %exception 31cea80760SAndrew Littekenexception: 32cea80760SAndrew Litteken %cleanup = landingpad i8 cleanup 33cea80760SAndrew Litteken br label %normal 34cea80760SAndrew Littekennormal: 35cea80760SAndrew Litteken ret void 36cea80760SAndrew Litteken} 37cea80760SAndrew Litteken 38cea80760SAndrew Littekendefine void @function2() personality i8 3 { 39cea80760SAndrew Litteken; CHECK-LABEL: @function2( 40cea80760SAndrew Litteken; CHECK-NEXT: entry: 41cea80760SAndrew Litteken; CHECK-NEXT: [[A:%.*]] = alloca i32, align 4 42cea80760SAndrew Litteken; CHECK-NEXT: [[B:%.*]] = alloca i32, align 4 43*f4b925eeSMatt Arsenault; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[A]], ptr [[B]]) 44cea80760SAndrew Litteken; CHECK-NEXT: invoke void @llvm.donothing() 45cea80760SAndrew Litteken; CHECK-NEXT: to label [[NORMAL:%.*]] unwind label [[EXCEPTION:%.*]] 46cea80760SAndrew Litteken; CHECK: exception: 47cea80760SAndrew Litteken; CHECK-NEXT: [[CLEANUP:%.*]] = landingpad i8 48cea80760SAndrew Litteken; CHECK-NEXT: cleanup 49cea80760SAndrew Litteken; CHECK-NEXT: br label [[NORMAL]] 50cea80760SAndrew Litteken; CHECK: normal: 51cea80760SAndrew Litteken; CHECK-NEXT: ret void 52cea80760SAndrew Litteken; 53cea80760SAndrew Littekenentry: 54cea80760SAndrew Litteken %a = alloca i32, align 4 55cea80760SAndrew Litteken %b = alloca i32, align 4 56*f4b925eeSMatt Arsenault store i32 2, ptr %a, align 4 57*f4b925eeSMatt Arsenault store i32 3, ptr %b, align 4 58cea80760SAndrew Litteken invoke void @llvm.donothing() to label %normal unwind label %exception 59cea80760SAndrew Littekenexception: 60cea80760SAndrew Litteken %cleanup = landingpad i8 cleanup 61cea80760SAndrew Litteken br label %normal 62cea80760SAndrew Littekennormal: 63cea80760SAndrew Litteken ret void 64cea80760SAndrew Litteken} 65