Factor out parsing sanitizer arguments to a separate function
authorAlexey Samsonov <samsonov@google.com>
Thu, 8 Aug 2013 11:32:17 +0000 (11:32 +0000)
committerAlexey Samsonov <samsonov@google.com>
Thu, 8 Aug 2013 11:32:17 +0000 (11:32 +0000)
llvm-svn: 187977

clang/lib/Driver/SanitizerArgs.cpp
clang/lib/Driver/SanitizerArgs.h

index 5d2ea89224688da278467897d554fb9418cc98d8..69221ab13ae701b7de9b90311111fb7e7dbb6cd0 100644 (file)
 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();
index e622d0010dce66d34fa6ee68c2bac5c868b9f7e7..05886768cf589b876dccb73850403c056cc17588 100644 (file)
@@ -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.