12d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// RUN: %clang_profgen -o %t -O3 %s 22d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// RUN: env LLVM_PROFILE_FILE=%t.profraw %run %t 32d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// RUN: llvm-profdata merge -o %t.profdata %t.profraw 42d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// RUN: %clang_profuse=%t.profdata -o - -S -emit-llvm %s | FileCheck %s 52d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 62d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesvoid __llvm_profile_reset_counters(void); 72d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesvoid foo(int); 82d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesint main(void) { 92d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines foo(0); 102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines __llvm_profile_reset_counters(); 112d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines foo(1); 122d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines return 0; 132d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines} 142d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesvoid foo(int N) { 152d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // CHECK-LABEL: define void @foo( 162d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // CHECK: br i1 %{{.*}}, label %{{.*}}, label %{{.*}}, !prof ![[FOO:[0-9]+]] 172d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines if (N) {} 182d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines} 192d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// CHECK: ![[FOO]] = metadata !{metadata !"branch_weights", i32 2, i32 1} 20