diff options
author | Dehao Chen <dehao@google.com> | 2017-07-07 22:01:47 +0000 |
---|---|---|
committer | Dehao Chen <dehao@google.com> | 2017-07-07 22:01:47 +0000 |
commit | c6ad81f02ed14a238497dc2f61e6dda088e341ce (patch) | |
tree | fd7705dd8121b4d6482e126806d9c65de05e7105 /test/CodeGen | |
parent | 4c2bf23e7cb07ef5f490b2ccf43c49b6de91a02c (diff) |
Add sample PGO integration test to cover profile annotation and inlining.
Summary: The patch makes the integration test cover major sample PGO components.
Reviewers: davidxl
Reviewed By: davidxl
Subscribers: sanjoy, cfe-commits
Differential Revision: https://reviews.llvm.org/D34725
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@307445 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen')
-rw-r--r-- | test/CodeGen/Inputs/pgo-sample.prof | 9 | ||||
-rw-r--r-- | test/CodeGen/pgo-sample.c | 36 |
2 files changed, 39 insertions, 6 deletions
diff --git a/test/CodeGen/Inputs/pgo-sample.prof b/test/CodeGen/Inputs/pgo-sample.prof index c5b8d9ef1a..16fde768c2 100644 --- a/test/CodeGen/Inputs/pgo-sample.prof +++ b/test/CodeGen/Inputs/pgo-sample.prof @@ -1,2 +1,7 @@ -bar:100:100 - 1: 2000 +bar:1000:1000 + 1: 1000 + 2: 0 +foo:1000:1000 + 1:bar:1000 + 1: 1000 + 2: 1000 diff --git a/test/CodeGen/pgo-sample.c b/test/CodeGen/pgo-sample.c index e7d2fa61aa..c6ba108561 100644 --- a/test/CodeGen/pgo-sample.c +++ b/test/CodeGen/pgo-sample.c @@ -1,6 +1,34 @@ // Test if PGO sample use passes are invoked. // -// Ensure Pass PGOInstrumentationGenPass is invoked. -// RUN: %clang_cc1 -O2 -fprofile-sample-use=%S/Inputs/pgo-sample.prof %s -mllvm -debug-pass=Structure -emit-llvm -o - 2>&1 | FileCheck %s -// CHECK: Remove unused exception handling info -// CHECK: Sample profile pass +// Ensure Pass SampleProfileLoader is invoked. +// RUN: %clang_cc1 -O2 -fprofile-sample-use=%S/Inputs/pgo-sample.prof %s -mllvm -debug-pass=Structure -emit-llvm -o - 2>&1 | FileCheck %s --check-prefix=STRUCTURE +// RUN: %clang_cc1 -O2 -fprofile-sample-use=%S/Inputs/pgo-sample.prof %s -mllvm -debug-pass=Structure -mllvm -inline-threshold=0 -emit-llvm -o - 2>&1 | FileCheck %s +// RUN: %clang_cc1 -O2 -fprofile-sample-use=%S/Inputs/pgo-sample.prof %s -mllvm -debug-pass=Structure -mllvm -inline-threshold=0 -emit-llvm -fexperimental-new-pass-manager -o - 2>&1 | FileCheck %s +// STRUCTURE: Remove unused exception handling info +// STRUCTURE: Sample profile pass + +void baz(); + +// CHECK-LABEL: @callee( +void callee(int t) { + for (int i = 0; i < t; i++) + baz(); +} + +// CHECK-LABEL: @bar( +// cold call to callee should not be inlined. +// CHECK: call void @callee +void bar(int x) { + if (x < 100) + callee(x); +} + +// CHECK-LABEL: @foo( +// bar should be early-inlined because it is hot inline instance in profile. +// callee should be inlined because it is hot callsite in the inline instance +// of foo:bar. +// CHECK-NOT: call void @callee +// CHECK-NOT: call void @bar +void foo(int x) { + bar(x); +} |