[PATCH] D145848: [Driver] Correct -f(no-)xray-function-index behavior
Oleksii Lozovskyi via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sat Mar 11 07:52:53 PST 2023
ilammy created this revision.
ilammy added reviewers: MaskRay, ianlevesque, dberris.
ilammy added a project: clang.
Herald added a subscriber: arphaman.
Herald added a project: All.
ilammy requested review of this revision.
Herald added a subscriber: cfe-commits.
This option has undergone several refactorings and got inverted along
the way. The `XRayOmitFunctionIndex` flag governs codegen behavior,
*omitting* "xray_fn_idx" section if it is set. But the command-line
flag behavior was not adjusted at the time. Right now it's like this:
(default): no function index
-fxray-function-index: no function index
-fno-xray-function-index: "xray_fn_idx" is present
While the default behavior should be keep "xray_fn_idx", unless
-fno-xray-function-index is given:
(default): "xray_fn_idx" is present
-fxray-function-index: same, present, but explicitly
-fno-xray-function-index: no function index
Flip the flags to make it so.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D145848
Files:
clang/include/clang/Driver/Options.td
clang/test/CodeGen/xray-function-index.cpp
Index: clang/test/CodeGen/xray-function-index.cpp
===================================================================
--- /dev/null
+++ clang/test/CodeGen/xray-function-index.cpp
@@ -0,0 +1,8 @@
+// RUN: %clang_cc1 -fxray-instrument -x c++ -std=c++11 -triple x86_64-unknown-linux-gnu -S -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-ENABLED
+// RUN: %clang_cc1 -fxray-instrument -fno-xray-function-index -x c++ -std=c++11 -triple x86_64-unknown-linux-gnu -S -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-DISABLED
+
+[[clang::xray_always_instrument]] void foo() {}
+
+// CHECK-LABEL: .section xray_instr_map,"ao", at progbits,_Z3foov
+// CHECK-ENABLED: .section xray_fn_idx,"awo", at progbits,_Z3foov
+// CHECK-DISABLED-NOT: xray_fn_idx
Index: clang/include/clang/Driver/Options.td
===================================================================
--- clang/include/clang/Driver/Options.td
+++ clang/include/clang/Driver/Options.td
@@ -2173,10 +2173,10 @@
NegFlag<SetFalse>>;
defm xray_function_index : BoolFOption<"xray-function-index",
- CodeGenOpts<"XRayOmitFunctionIndex">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option], "Omit function index section at the"
+ CodeGenOpts<"XRayOmitFunctionIndex">, DefaultFalse,
+ NegFlag<SetTrue, [CC1Option], "Omit function index section at the"
" expense of single-function patching performance">,
- PosFlag<SetTrue>>;
+ PosFlag<SetFalse>>;
def fxray_link_deps : Flag<["-"], "fxray-link-deps">, Group<f_Group>,
Flags<[CC1Option]>,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D145848.504367.patch
Type: text/x-patch
Size: 1531 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230311/984f722c/attachment.bin>
More information about the cfe-commits
mailing list