diff options
| author | Ellis Hoag <ellis.sparky.hoag@gmail.com> | 2022-07-14 11:40:53 -0700 |
|---|---|---|
| committer | Ellis Hoag <ellis.sparky.hoag@gmail.com> | 2022-07-14 11:41:30 -0700 |
| commit | af58684f272046f293a9f469f03d23bd2b138349 (patch) | |
| tree | 0c23a719f64481035e6ae962643df2b49bbb6a26 /clang/test/CodeGen/profile-function-groups.c | |
| parent | 140bfdca60ae8b1b2ad115846379e3c9ca914bfb (diff) | |
[InstrProf] Add options to profile function groups
Add two options, `-fprofile-function-groups=N` and `-fprofile-selected-function-group=i` used to partition functions into `N` groups and only instrument the functions in group `i`. Similar options were added to xray in https://reviews.llvm.org/D87953 and the goal is the same; to reduce instrumented size overhead by spreading the overhead across multiple builds. Raw profiles from different groups can be added like normal using the `llvm-profdata merge` command.
Reviewed By: ianlevesque
Differential Revision: https://reviews.llvm.org/D129594
Diffstat (limited to 'clang/test/CodeGen/profile-function-groups.c')
| -rw-r--r-- | clang/test/CodeGen/profile-function-groups.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/clang/test/CodeGen/profile-function-groups.c b/clang/test/CodeGen/profile-function-groups.c new file mode 100644 index 000000000000..9e04c9060df4 --- /dev/null +++ b/clang/test/CodeGen/profile-function-groups.c @@ -0,0 +1,24 @@ +// RUN: %clang -fprofile-generate -fprofile-function-groups=3 -fprofile-selected-function-group=0 -emit-llvm -S %s -o - | FileCheck %s --check-prefixes=CHECK,SELECT0 +// RUN: %clang -fprofile-generate -fprofile-function-groups=3 -fprofile-selected-function-group=1 -emit-llvm -S %s -o - | FileCheck %s --check-prefixes=CHECK,SELECT1 +// RUN: %clang -fprofile-generate -fprofile-function-groups=3 -fprofile-selected-function-group=2 -emit-llvm -S %s -o - | FileCheck %s --check-prefixes=CHECK,SELECT2 + +// Group 0 +// SELECT0-NOT: noprofile +// SELECT1: noprofile +// SELECT2: noprofile +// CHECK: define {{.*}} @hoo() +void hoo() {} + +// Group 1 +// SELECT0: noprofile +// SELECT1-NOT: noprofile +// SELECT2: noprofile +// CHECK: define {{.*}} @goo() +void goo() {} + +// Group 2 +// SELECT0: noprofile +// SELECT1: noprofile +// SELECT2-NOT: noprofile +// CHECK: define {{.*}} @boo() +void boo() {} |
