brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · 829d5af Raw
53 lines · c
1// RUN: %clang_pgogen -mllvm -pgo-block-coverage %s -o %t.out2// RUN: env LLVM_PROFILE_FILE=%t1.profraw %run %t.out 13// RUN: env LLVM_PROFILE_FILE=%t2.profraw %run %t.out 24// RUN: llvm-profdata merge -o %t.profdata %t1.profraw %t2.profraw5// RUN: %clang_profuse=%t.profdata -mllvm -pgo-verify-bfi -o - -S -emit-llvm %s 2>%t.errs | FileCheck %s --implicit-check-not="!prof"6// RUN: FileCheck %s < %t.errs --allow-empty --check-prefix=CHECK-ERROR7 8// RUN: llvm-profdata merge -o %t2.profdata %t1.profraw %t1.profraw %t2.profraw %t2.profraw9// RUN: llvm-profdata show %t2.profdata | FileCheck %s --check-prefix=COUNTS10 11#include <stdlib.h>12 13// CHECK: @foo({{.*}})14// CHECK-SAME: !prof ![[PROF0:[0-9]+]]15void foo(int a) {16  // CHECK: br i1 %{{.*}}, label %{{.*}}, label %{{.*}}, !prof ![[PROF1:[0-9]+]]17  if (a % 2 == 0) {18    //19  } else {20    //21  }22 23  // CHECK: br i1 %{{.*}}, label %{{.*}}, label %{{.*}}, !prof ![[PROF1]]24  for (int i = 1; i < a; i++) {25    // CHECK: br i1 %{{.*}}, label %{{.*}}, label %{{.*}}, !prof ![[PROF2:[0-9]+]]26    if (a % 3 == 0) {27      //28    } else {29      // CHECK: br i1 %{{.*}}, label %{{.*}}, label %{{.*}}, !prof ![[PROF2]]30      if (a % 1001 == 0) {31        return;32      }33    }34  }35 36  return;37}38 39// CHECK: @main({{.*}})40// CHECK-SAME: !prof ![[PROF0]]41int main(int argc, char *argv[]) {42  foo(atoi(argv[1]));43  return 0;44}45 46// CHECK-DAG: ![[PROF0]] = !{!"function_entry_count", i64 10000}47// CHECK-DAG: ![[PROF1]] = !{!"branch_weights", i32 1, i32 1}48// CHECK-DAG: ![[PROF2]] = !{!"branch_weights", i32 0, i32 1}49 50// CHECK-ERROR-NOT: warning: {{.*}}: Found inconsistent block coverage51 52// COUNTS: Maximum function count: 453