| ; RUN: opt < %s -passes='require<profile-summary>,cgscc(inline)' -S | FileCheck %s | |
| ; This tests that the function count of a callee gets correctly updated after it | |
| ; has been inlined into a two callsites. | |
| ; CHECK: @callee() !prof [[COUNT:![0-9]+]] | |
| define i32 @callee() !prof !1 { | |
| ret i32 0 | |
| } | |
| define i32 @caller1() !prof !2 { | |
| ; CHECK-LABEL: @caller1 | |
| ; CHECK-NOT: callee | |
| ; CHECK: ret | |
| %i = call i32 @callee() | |
| ret i32 %i | |
| } | |
| define i32 @caller2() !prof !3 { | |
| ; CHECK-LABEL: @caller2 | |
| ; CHECK-NOT: callee | |
| ; CHECK: ret | |
| %i = call i32 @callee() | |
| ret i32 %i | |
| } | |
| !llvm.module.flags = !{!0} | |
| ; CHECK: [[COUNT]] = !{!"function_entry_count", i64 0} | |
| !0 = !{i32 1, !"MaxFunctionCount", i32 1000} | |
| !1 = !{!"function_entry_count", i64 1000} | |
| !2 = !{!"function_entry_count", i64 600} | |
| !3 = !{!"function_entry_count", i64 400} | |