diff options
author | Derek Bruening <bruening@google.com> | 2016-04-21 21:32:04 +0000 |
---|---|---|
committer | Derek Bruening <bruening@google.com> | 2016-04-21 21:32:04 +0000 |
commit | 256c2e14c7fc675da56adf0b4a95a61ac3c622aa (patch) | |
tree | 645dd3e5881511df574f4b52240f0f46f2505e92 /clang/lib/Driver/SanitizerArgs.cpp | |
parent | d862c178b0acfa531811b664531547e310d5769d (diff) | |
download | bcm5719-llvm-256c2e14c7fc675da56adf0b4a95a61ac3c622aa.tar.gz bcm5719-llvm-256c2e14c7fc675da56adf0b4a95a61ac3c622aa.zip |
[esan] EfficiencySanitizer driver flags
Summary:
Adds a framework to enable the instrumentation pass for the new
EfficiencySanitizer ("esan") family of tools. Adds a flag for esan's
cache fragmentation tool via -fsanitize=efficiency-cache-frag.
Adds appropriate tests for the new flag.
Reviewers: eugenis, vitalybuka, aizatsky, filcab
Subscribers: filcab, kubabrecka, llvm-commits, zhaoqin, kcc
Differential Revision: http://reviews.llvm.org/D19169
llvm-svn: 267059
Diffstat (limited to 'clang/lib/Driver/SanitizerArgs.cpp')
-rw-r--r-- | clang/lib/Driver/SanitizerArgs.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/clang/lib/Driver/SanitizerArgs.cpp b/clang/lib/Driver/SanitizerArgs.cpp index ff9a0b4ca4a..50a93a8d431 100644 --- a/clang/lib/Driver/SanitizerArgs.cpp +++ b/clang/lib/Driver/SanitizerArgs.cpp @@ -311,7 +311,12 @@ SanitizerArgs::SanitizerArgs(const ToolChain &TC, std::make_pair(Leak, Memory), std::make_pair(KernelAddress, Address), std::make_pair(KernelAddress, Leak), std::make_pair(KernelAddress, Thread), - std::make_pair(KernelAddress, Memory)}; + std::make_pair(KernelAddress, Memory), + std::make_pair(Efficiency, Address), + std::make_pair(Efficiency, Leak), + std::make_pair(Efficiency, Thread), + std::make_pair(Efficiency, Memory), + std::make_pair(Efficiency, KernelAddress)}; for (auto G : IncompatibleGroups) { SanitizerMask Group = G.first; if (Kinds & Group) { @@ -695,6 +700,10 @@ SanitizerMask parseArgValues(const Driver &D, const llvm::opt::Arg *A, if (A->getOption().matches(options::OPT_fsanitize_EQ) && 0 == strcmp("all", Value)) Kind = 0; + // Similarly, don't accept -fsanitize=efficiency-all. + else if (A->getOption().matches(options::OPT_fsanitize_EQ) && + 0 == strcmp("efficiency-all", Value)) + Kind = 0; else Kind = parseSanitizerValue(Value, /*AllowGroups=*/true); |