[PATCH] D87953: [xray] Function coverage groups
Fangrui Song via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sun Sep 20 10:22:58 PDT 2020
MaskRay added a comment.
The idea seems fine.
> By selecting different groups over time you could cover the entire application incrementally with lower overhead than instrumenting the entire application at once.
How large the overhead is? This is somewhat surprising to me.
================
Comment at: clang/include/clang/Driver/Options.td:1343
+def fxray_function_groups :
+ JoinedOrSeparate<["-"], "fxray-function-groups=">,
+ Group<f_Group>, Flags<[CC1Option]>,
----------------
Joined.
Separate is for a space between the option name and its value.
================
Comment at: clang/include/clang/Driver/Options.td:1345
+ Group<f_Group>, Flags<[CC1Option]>,
+ HelpText<"Only instrument 1 of N functions">;
+
----------------
It is "N groups", not "N functions".
================
Comment at: clang/lib/CodeGen/CodeGenFunction.cpp:814
+ auto FuncGroups = CGM.getCodeGenOpts().XRayTotalFunctionGroups;
+ if (FuncGroups > 1) {
+ auto FuncName = ArrayRef<uint8_t>(CurFn->getName().bytes_begin(),
----------------
For one group, the branch is skipped, which does not seem correct
================
Comment at: clang/lib/CodeGen/CodeGenFunction.cpp:815
+ if (FuncGroups > 1) {
+ auto FuncName = ArrayRef<uint8_t>(CurFn->getName().bytes_begin(),
+ CurFn->getName().bytes_end());
----------------
`const ArrayRef<uint8_t> FuncName(..., ...)`
================
Comment at: clang/lib/CodeGen/CodeGenFunction.cpp:820
+ !AlwaysXRayAttr) {
+ Fn->addFnAttr("function-instrument", "xray-never");
+ }
----------------
Omit braces around one-line simple statements.
================
Comment at: clang/test/CodeGen/xray-function-groups.cpp:4
+// RUN: -fxray-selected-function-group=0 \
+// RUN: -x c++ -std=c++11 -emit-llvm -o - %s \
+// RUN: -triple x86_64-unknown-linux-gnu | FileCheck --check-prefix=GROUP0 %s
----------------
You can omit `-x c++ -std=c++11 `. They are insignificant.
Then consider packing more options on one line to reduce the total number of lines.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D87953/new/
https://reviews.llvm.org/D87953
More information about the cfe-commits
mailing list