diff options
author | Alexey Samsonov <samsonov@google.com> | 2013-08-08 11:32:17 +0000 |
---|---|---|
committer | Alexey Samsonov <samsonov@google.com> | 2013-08-08 11:32:17 +0000 |
commit | bb14f34cde39e639ad04342eddabf2ea9b41b571 (patch) | |
tree | 4fbf0f47ce91246cb2573a3743fece12508aa6db | |
parent | 9f74a381a04dd4113aa5254bae12f4ca807b7134 (diff) | |
download | bcm5719-llvm-bb14f34cde39e639ad04342eddabf2ea9b41b571.tar.gz bcm5719-llvm-bb14f34cde39e639ad04342eddabf2ea9b41b571.zip |
Factor out parsing sanitizer arguments to a separate function
llvm-svn: 187977
-rw-r--r-- | clang/lib/Driver/SanitizerArgs.cpp | 24 | ||||
-rw-r--r-- | clang/lib/Driver/SanitizerArgs.h | 4 |
2 files changed, 22 insertions, 6 deletions
diff --git a/clang/lib/Driver/SanitizerArgs.cpp b/clang/lib/Driver/SanitizerArgs.cpp index 5d2ea892246..69221ab13ae 100644 --- a/clang/lib/Driver/SanitizerArgs.cpp +++ b/clang/lib/Driver/SanitizerArgs.cpp @@ -19,14 +19,26 @@ using namespace clang::driver; using namespace llvm::opt; -SanitizerArgs::SanitizerArgs() - : Kind(0), BlacklistFile(""), MsanTrackOrigins(false), - AsanZeroBaseShadow(false), UbsanTrapOnError(false) {} +void SanitizerArgs::clear() { + Kind = 0; + BlacklistFile = ""; + MsanTrackOrigins = false; + AsanZeroBaseShadow = false; + UbsanTrapOnError = false; +} + +SanitizerArgs::SanitizerArgs() { + clear(); +} SanitizerArgs::SanitizerArgs(const ToolChain &TC, - const llvm::opt::ArgList &Args) - : Kind(0), BlacklistFile(""), MsanTrackOrigins(false), - AsanZeroBaseShadow(false) { + const llvm::opt::ArgList &Args) { + clear(); + parse(TC, Args); +} + +void SanitizerArgs::parse(const ToolChain &TC, + const llvm::opt::ArgList &Args) { unsigned AllKinds = 0; // All kinds of sanitizers that were turned on // at least once (possibly, disabled further). const Driver &D = TC.getDriver(); diff --git a/clang/lib/Driver/SanitizerArgs.h b/clang/lib/Driver/SanitizerArgs.h index e622d0010dc..05886768cf5 100644 --- a/clang/lib/Driver/SanitizerArgs.h +++ b/clang/lib/Driver/SanitizerArgs.h @@ -54,6 +54,8 @@ class SanitizerArgs { /// Parses the sanitizer arguments from an argument list. SanitizerArgs(const ToolChain &TC, const llvm::opt::ArgList &Args); + void parse(const ToolChain &TC, const llvm::opt::ArgList &Args); + bool needsAsanRt() const { return Kind & NeedsAsanRt; } bool needsTsanRt() const { return Kind & NeedsTsanRt; } bool needsMsanRt() const { return Kind & NeedsMsanRt; } @@ -76,6 +78,8 @@ class SanitizerArgs { llvm::opt::ArgStringList &CmdArgs) const; private: + void clear(); + /// Parse a single value from a -fsanitize= or -fno-sanitize= value list. /// Returns OR of members of the \c SanitizeKind enumeration, or \c 0 /// if \p Value is not known. |