• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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