1; RUN: opt < %s -inline -pass-remarks=inline -pass-remarks-missed=inline \ 2; RUN: -pass-remarks-analysis=inline -pass-remarks-with-hotness -S 2>&1 \ 3; RUN: | FileCheck %s 4; RUN: opt < %s -passes=inline -pass-remarks=inline -pass-remarks-missed=inline \ 5; RUN: -pass-remarks-analysis=inline -pass-remarks-with-hotness -S 2>&1 \ 6; RUN: | FileCheck %s 7 8; CHECK: foo inlined into bar with cost=always (hotness: 30) 9; CHECK: foz not inlined into bar because it should never be inlined (cost=never) (hotness: 30) 10 11; Function Attrs: alwaysinline nounwind uwtable 12define i32 @foo() #0 !prof !1 { 13entry: 14 ret i32 4 15} 16 17; Function Attrs: noinline nounwind uwtable 18define i32 @foz() #1 !prof !2 { 19entry: 20 ret i32 2 21} 22 23; Function Attrs: nounwind uwtable 24define i32 @bar() !prof !3 { 25entry: 26 %call = call i32 @foo() 27 %call2 = call i32 @foz() 28 %mul = mul i32 %call, %call2 29 ret i32 %mul 30} 31 32attributes #0 = { alwaysinline } 33attributes #1 = { noinline } 34 35!llvm.ident = !{!0} 36 37!0 = !{!"clang version 3.5.0 "} 38!1 = !{!"function_entry_count", i64 10} 39!2 = !{!"function_entry_count", i64 20} 40!3 = !{!"function_entry_count", i64 30} 41