[PATCH] D45610: [XRay][clang] Make -fxray-modes= additive
Dean Michael Berris via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Apr 12 23:03:16 PDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL329989: [XRay][clang] Make -fxray-modes= additive (authored by dberris, committed by ).
Herald added a subscriber: llvm-commits.
Changed prior to commit:
https://reviews.llvm.org/D45610?vs=142333&id=142335#toc
Repository:
rL LLVM
https://reviews.llvm.org/D45610
Files:
cfe/trunk/lib/Driver/XRayArgs.cpp
cfe/trunk/test/Driver/XRay/xray-mode-flags.cpp
Index: cfe/trunk/test/Driver/XRay/xray-mode-flags.cpp
===================================================================
--- cfe/trunk/test/Driver/XRay/xray-mode-flags.cpp
+++ cfe/trunk/test/Driver/XRay/xray-mode-flags.cpp
@@ -14,6 +14,18 @@
// RUN: 2>&1 | FileCheck --check-prefixes FDR,BASIC %s
// RUN: %clang -v -o /dev/null -fxray-instrument -fxray-modes=none -### %s \
// RUN: 2>&1 | FileCheck --check-prefixes NONE %s
+//
+// We also should support overriding the modes in an additive manner.
+//
+// RUN: %clang -v -o /dev/null -fxray-instrument -fxray-modes=none,xray-fdr \
+// RUN: -### %s \
+// RUN: 2>&1 | FileCheck --check-prefixes FDR %s
+// RUN: %clang -v -o /dev/null -fxray-instrument -fxray-modes=xray-fdr,none \
+// RUN: -### %s \
+// RUN: 2>&1 | FileCheck --check-prefixes NONE %s
+// RUN: %clang -v -o /dev/null -fxray-instrument -fxray-modes=none,all \
+// RUN: -### %s \
+// RUN: 2>&1 | FileCheck --check-prefixes FDR,BASIC %s
// BASIC: libclang_rt.xray-basic
// FDR: libclang_rt.xray-fdr
Index: cfe/trunk/lib/Driver/XRayArgs.cpp
===================================================================
--- cfe/trunk/lib/Driver/XRayArgs.cpp
+++ cfe/trunk/lib/Driver/XRayArgs.cpp
@@ -146,21 +146,16 @@
llvm::copy(XRaySupportedModes, std::back_inserter(Modes));
else
for (const auto &Arg : SpecifiedModes) {
- if (Arg == "none") {
- Modes.clear();
- break;
- }
- if (Arg == "all") {
- Modes.clear();
- llvm::copy(XRaySupportedModes, std::back_inserter(Modes));
- break;
- }
-
// Parse CSV values for -fxray-modes=...
llvm::SmallVector<StringRef, 2> ModeParts;
llvm::SplitString(Arg, ModeParts, ",");
for (const auto &M : ModeParts)
- Modes.push_back(M);
+ if (M == "none")
+ Modes.clear();
+ else if (M == "all")
+ llvm::copy(XRaySupportedModes, std::back_inserter(Modes));
+ else
+ Modes.push_back(M);
}
// Then we want to sort and unique the modes we've collected.
@@ -205,4 +200,10 @@
ExtraDepOpt += Dep;
CmdArgs.push_back(Args.MakeArgString(ExtraDepOpt));
}
+
+ for (const auto &Mode : Modes) {
+ SmallString<64> ModeOpt("-fxray-modes=");
+ ModeOpt += Mode;
+ CmdArgs.push_back(Args.MakeArgString(ModeOpt));
+ }
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D45610.142335.patch
Type: text/x-patch
Size: 2409 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180413/839093ee/attachment.bin>
More information about the cfe-commits
mailing list