1; RUN: opt < %s -skip-partial-inlining-cost-analysis -passes=partial-inliner -S | FileCheck %s 2 3define i32 @Func(i1 %cond, ptr align 4 %align.val) !prof !1 { 4; CHECK: @Func({{.*}}) !prof [[REMAINCOUNT:![0-9]+]] 5entry: 6 br i1 %cond, label %if.then, label %return 7if.then: 8 ; Dummy store to have more than 0 uses 9 store i32 10, ptr %align.val, align 4 10 br label %return 11return: ; preds = %entry 12 ret i32 0 13} 14 15define internal i32 @Caller1(i1 %cond, ptr align 2 %align.val) !prof !3{ 16entry: 17; CHECK-LABEL: @Caller1 18; CHECK: br 19; CHECK: call void @Func.1. 20; CHECK: br 21; CHECK: call void @Func.1. 22 %val = call i32 @Func(i1 %cond, ptr %align.val) 23 %val2 = call i32 @Func(i1 %cond, ptr %align.val) 24 ret i32 %val 25} 26 27define internal i32 @Caller2(i1 %cond, ptr align 2 %align.val) !prof !2{ 28entry: 29; CHECK-LABEL: @Caller2 30; CHECK: br 31; CHECK: call void @Func.1. 32 %val = call i32 @Func(i1 %cond, ptr %align.val) 33 ret i32 %val 34} 35 36; CHECK: [[REMAINCOUNT]] = !{!"function_entry_count", i64 150} 37!1 = !{!"function_entry_count", i64 200} 38!2 = !{!"function_entry_count", i64 10} 39!3 = !{!"function_entry_count", i64 20} 40 41