From 2fcf673c96acdee2699f8d6cad5c763534c8d82a Mon Sep 17 00:00:00 2001 From: Xinliang David Li Date: Mon, 18 Dec 2017 17:56:42 +0000 Subject: [PGO] Test case changes for D41059 Differential Revision: http://reviews.llvm.org/D41059 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@320999 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/profile/Linux/counter_promo_for.c | 8 ++++---- test/profile/infinite_loop.c | 4 ++-- test/profile/runtime_infinite.c | 36 ++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 test/profile/runtime_infinite.c diff --git a/test/profile/Linux/counter_promo_for.c b/test/profile/Linux/counter_promo_for.c index 313964669..a331f00ad 100644 --- a/test/profile/Linux/counter_promo_for.c +++ b/test/profile/Linux/counter_promo_for.c @@ -19,18 +19,18 @@ __attribute__((noinline)) void bar(int i) { g += i; } __attribute__((noinline)) void foo(int n, int N) { // PROMO-LABEL: @foo +// PROMO: load{{.*}}@__profc_foo{{.*}} 3){{.*}} +// PROMO-NEXT: add +// PROMO-NEXT: store{{.*}}@__profc_foo{{.*}} 3){{.*}} // PROMO: load{{.*}}@__profc_foo{{.*}} 0){{.*}} // PROMO-NEXT: add // PROMO-NEXT: store{{.*}}@__profc_foo{{.*}} 0){{.*}} // PROMO-NEXT: load{{.*}}@__profc_foo{{.*}} 1){{.*}} // PROMO-NEXT: add // PROMO-NEXT: store{{.*}}@__profc_foo{{.*}} 1){{.*}} -// PROMO-NEXT: load{{.*}}@__profc_foo{{.*}} 2){{.*}} +// PROMO: load{{.*}}@__profc_foo{{.*}} 2){{.*}} // PROMO-NEXT: add // PROMO-NEXT: store{{.*}}@__profc_foo{{.*}} 2){{.*}} -// PROMO: load{{.*}}@__profc_foo{{.*}} 3){{.*}} -// PROMO-NEXT: add -// PROMO-NEXT: store{{.*}}@__profc_foo{{.*}} 3){{.*}} // // NOPROMO-LABEL: @foo // NOPROMO: load{{.*}}@__profc_foo{{.*}} 0){{.*}} diff --git a/test/profile/infinite_loop.c b/test/profile/infinite_loop.c index 883d7e6da..0e3981c71 100644 --- a/test/profile/infinite_loop.c +++ b/test/profile/infinite_loop.c @@ -23,8 +23,8 @@ int main() // CHECK: Counters: // CHECK-NEXT: main: // CHECK-NEXT: Hash: {{.*}} -// CHECK-NEXT: Counters: 1 -// CHECK-NEXT: Block counts: [1000] +// CHECK-NEXT: Counters: 2 +// CHECK-NEXT: Block counts: [1000, 1] diff --git a/test/profile/runtime_infinite.c b/test/profile/runtime_infinite.c new file mode 100644 index 000000000..b55f5e275 --- /dev/null +++ b/test/profile/runtime_infinite.c @@ -0,0 +1,36 @@ +// The waiting loop never exits via the normal +// path before the profile is dumped and the +// program is terminated. This tests checks +// that the entry of main is properly instrumented +// and has non-zero count. + +// RUN: %clang_pgogen -mllvm -do-counter-promotion=false -O2 -o %t %s +// RUN: env LLVM_PROFILE_FILE=%t.profraw %run %t +// RUN: llvm-profdata show -function main -counts %t.profraw| FileCheck %s +void exit(int); + +int __llvm_profile_dump(void); +void __llvm_profile_reset_counters(void); + +int g = 0; +__attribute__((noinline)) void doSth() { + g++; + + if (g > 10000) { + // dump profile and exit; + __llvm_profile_dump(); + exit(0); + } +} +int errorcode = 0; +int noerror() { return (errorcode == 0); } + +int main(int argc, const char *argv[]) { + // waiting_loop + while (noerror()) { + doSth(); + } +} + +// CHECK-LABEL: main +// CHECK: [10001, 1] -- cgit v1.2.3