1 ; REQUIRES: x86-registered-target
2 ; RUN: opt -passes=hotcoldsplit -hotcoldsplit-threshold=0 < %s | opt -passes='require<profile-summary>,function(codegenprepare)' -S | FileCheck %s
4 ; Test to ensure that split cold function gets 0 entry count profile
5 ; metadata when compiling with pgo.
7 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
8 target triple = "x86_64-apple-macosx10.14.0"
10 ; CHECK: define {{.*}} @fun{{.*}} ![[HOTPROF:[0-9]+]] {{.*}}section_prefix ![[LIKELY:[0-9]+]]
11 ; CHECK: call void @fun.cold.1
13 define void @fun(i1 %c) !prof !14 {
15 br i1 %c, label %if.then, label %if.else
25 declare void @sink() cold
27 ; CHECK: define {{.*}} @fun.cold.1{{.*}} ![[PROF:[0-9]+]] {{.*}}section_prefix ![[UNLIKELY:[0-9]+]]
29 ; CHECK: ![[HOTPROF]] = !{!"function_entry_count", i64 100}
30 ; CHECK: ![[LIKELY]] = !{!"function_section_prefix", !"hot"}
31 ; CHECK: ![[PROF]] = !{!"function_entry_count", i64 0}
32 ; CHECK: ![[UNLIKELY]] = !{!"function_section_prefix", !"unlikely"}
34 !llvm.module.flags = !{!0}
35 !0 = !{i32 1, !"ProfileSummary", !1}
36 !1 = !{!2, !3, !4, !5, !6, !7, !8, !9}
37 !2 = !{!"ProfileFormat", !"InstrProf"}
38 !3 = !{!"TotalCount", i64 10000}
39 !4 = !{!"MaxCount", i64 10}
40 !5 = !{!"MaxInternalCount", i64 1}
41 !6 = !{!"MaxFunctionCount", i64 1000}
42 !7 = !{!"NumCounts", i64 3}
43 !8 = !{!"NumFunctions", i64 3}
44 !9 = !{!"DetailedSummary", !10}
45 !10 = !{!11, !12, !13}
46 !11 = !{i32 10000, i64 100, i32 1}
47 !12 = !{i32 999000, i64 100, i32 1}
48 !13 = !{i32 999999, i64 1, i32 2}
49 !14 = !{!"function_entry_count", i64 100}
50 !15 = !{!"function_section_prefix", !"hot"}
51 !16 = !{!"function_entry_count", i64 0}
52 !17 = !{!"function_section_prefix", !"unlikely"}