From: Alexey Samsonov Date: Thu, 8 Aug 2013 11:32:17 +0000 (+0000) Subject: Factor out parsing sanitizer arguments to a separate function X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1e9fdc1a8b090c2c419c64e429c3f6595e86bae9;p=clang Factor out parsing sanitizer arguments to a separate function git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187977 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/SanitizerArgs.cpp b/lib/Driver/SanitizerArgs.cpp index 5d2ea89224..69221ab13a 100644 --- a/lib/Driver/SanitizerArgs.cpp +++ b/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/lib/Driver/SanitizerArgs.h b/lib/Driver/SanitizerArgs.h index e622d0010d..05886768cf 100644 --- a/lib/Driver/SanitizerArgs.h +++ b/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.