1*10f0c1aaSMichael O'Farrell; RUN: rm -rf %t && split-file %s %t 2*10f0c1aaSMichael O'Farrell 3*10f0c1aaSMichael O'Farrell; RUN: llvm-profdata merge %t/main.proftext -o %t/main.profdata 4*10f0c1aaSMichael O'Farrell; RUN: opt < %t/main.ll -passes=pgo-instr-use -pgo-test-profile-file=%t/main.profdata -S | FileCheck %s 5*10f0c1aaSMichael O'Farrell 6*10f0c1aaSMichael O'Farrell;--- main.ll 7*10f0c1aaSMichael O'Farrell 8*10f0c1aaSMichael O'Farrell; Instrumentation PGO sampling makes corrupt looking counters possible. This 9*10f0c1aaSMichael O'Farrell; tests one extreme case: 10*10f0c1aaSMichael O'Farrell; Test loading zero profile counts for all instrumented blocks while the entry 11*10f0c1aaSMichael O'Farrell; block is not instrumented. Additionally include a non-zero profile count for 12*10f0c1aaSMichael O'Farrell; a select instruction, which prevents short circuiting the PGO application. 13*10f0c1aaSMichael O'Farrell 14*10f0c1aaSMichael O'Farrelltarget datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" 15*10f0c1aaSMichael O'Farrelltarget triple = "x86_64-unknown-linux-gnu" 16*10f0c1aaSMichael O'Farrell 17*10f0c1aaSMichael O'Farrelldefine i32 @test_no_entry_block_counter(i32 %n) { 18*10f0c1aaSMichael O'Farrell; CHECK: define i32 @test_no_entry_block_counter(i32 %n) 19*10f0c1aaSMichael O'Farrell; CHECK-SAME: !prof ![[ENTRY_COUNT:[0-9]*]] 20*10f0c1aaSMichael O'Farrellentry: 21*10f0c1aaSMichael O'Farrell %cmp = icmp slt i32 42, %n 22*10f0c1aaSMichael O'Farrell br i1 %cmp, label %tail1, label %tail2 23*10f0c1aaSMichael O'Farrelltail1: 24*10f0c1aaSMichael O'Farrell %ret = select i1 true, i32 %n, i32 42 25*10f0c1aaSMichael O'Farrell; CHECK: %ret = select i1 true, i32 %n, i32 42 26*10f0c1aaSMichael O'Farrell; CHECK-SAME: !prof ![[BW_FOR_SELECT:[0-9]+]] 27*10f0c1aaSMichael O'Farrell ret i32 %ret 28*10f0c1aaSMichael O'Farrelltail2: 29*10f0c1aaSMichael O'Farrell ret i32 42 30*10f0c1aaSMichael O'Farrell} 31*10f0c1aaSMichael O'Farrell; CHECK: ![[ENTRY_COUNT]] = !{!"function_entry_count", i64 1} 32*10f0c1aaSMichael O'Farrell; CHECK: ![[BW_FOR_SELECT]] = !{!"branch_weights", i32 1, i32 0} 33*10f0c1aaSMichael O'Farrell 34*10f0c1aaSMichael O'Farrell;--- main.proftext 35*10f0c1aaSMichael O'Farrell:ir 36*10f0c1aaSMichael O'Farrelltest_no_entry_block_counter 37*10f0c1aaSMichael O'Farrell431494656217155589 38*10f0c1aaSMichael O'Farrell3 39*10f0c1aaSMichael O'Farrell0 40*10f0c1aaSMichael O'Farrell0 41*10f0c1aaSMichael O'Farrell1 42*10f0c1aaSMichael O'Farrell 43