47 lines · plain
1; Test skipping inlining when the callsite is unreachable (for both mandatory2; and non-mandatory cases)3; REQUIRES: llvm_inliner_model_autogenerated4; RUN: opt -passes=inliner-ml-advisor-release -S < %s | FileCheck %s --check-prefix=CHECK5 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 case10define i32 @f1() {11entry:12 br label %exit13some_bb: ; unreachable - has no predecessors14 %r = call i32 @f2()15 br label %exit16exit:17 ret i32 118}19 20define i32 @f2() #0 {21 ret i32 222}23 24; Non-mandatory case25define i32 @f3() {26entry:27 br label %exit28some_bb: ; unreachable - has no predecessors29 %r = call i32 @f4()30 br label %exit31exit:32 ret i32 133}34 35define i32 @f4() {36 ret i32 237}38 39attributes #0 = { alwaysinline }40 41; CHECK-LABEL: @f142; CHECK-LABEL: some_bb43; CHECK-NEXT: call i32 @f244; CHECK-LABEL: @f345; CHECK-LABEL: some_bb46; CHECK-NEXT: call i32 @f447