1; Test skipping inlining when the callsite is unreachable (for both mandatory 2; and non-mandatory cases) 3; REQUIRES: llvm_inliner_model_autogenerated 4; RUN: opt -passes=inliner-ml-advisor-release -S < %s | FileCheck %s --check-prefix=CHECK 5 6target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" 7target triple = "x86_64-grtev4-linux-gnu" 8 9; Mandatory case 10define i32 @f1() { 11entry: 12 br label %exit 13some_bb: ; unreachable - has no predecessors 14 %r = call i32 @f2() 15 br label %exit 16exit: 17 ret i32 1 18} 19 20define i32 @f2() #0 { 21 ret i32 2 22} 23 24; Non-mandatory case 25define i32 @f3() { 26entry: 27 br label %exit 28some_bb: ; unreachable - has no predecessors 29 %r = call i32 @f4() 30 br label %exit 31exit: 32 ret i32 1 33} 34 35define i32 @f4() { 36 ret i32 2 37} 38 39attributes #0 = { alwaysinline } 40 41; CHECK-LABEL: @f1 42; CHECK-LABEL: some_bb 43; CHECK-NEXT: call i32 @f2 44; CHECK-LABEL: @f3 45; CHECK-LABEL: some_bb 46; CHECK-NEXT: call i32 @f4 47