diff options
Diffstat (limited to 'clang/lib/Basic')
-rw-r--r-- | clang/lib/Basic/CMakeLists.txt | 1 | ||||
-rw-r--r-- | clang/lib/Basic/LangOptions.cpp | 19 | ||||
-rw-r--r-- | clang/lib/Basic/Sanitizers.cpp | 31 |
3 files changed, 33 insertions, 18 deletions
diff --git a/clang/lib/Basic/CMakeLists.txt b/clang/lib/Basic/CMakeLists.txt index 2ecbf0aef67..3bcbc89f8ca 100644 --- a/clang/lib/Basic/CMakeLists.txt +++ b/clang/lib/Basic/CMakeLists.txt @@ -19,6 +19,7 @@ add_clang_library(clangBasic OpenMPKinds.cpp OperatorPrecedence.cpp SanitizerBlacklist.cpp + Sanitizers.cpp SourceLocation.cpp SourceManager.cpp TargetInfo.cpp diff --git a/clang/lib/Basic/LangOptions.cpp b/clang/lib/Basic/LangOptions.cpp index 8992bfaff2b..dcbd2281711 100644 --- a/clang/lib/Basic/LangOptions.cpp +++ b/clang/lib/Basic/LangOptions.cpp @@ -14,24 +14,6 @@ using namespace clang; -SanitizerOptions::SanitizerOptions() - : Kind(0), SanitizeAddressFieldPadding(0) {} - -bool SanitizerOptions::has(SanitizerKind K) const { - unsigned Bit = static_cast<unsigned>(K); - return Kind & (1 << Bit); -} - -void SanitizerOptions::set(SanitizerKind K, bool Value) { - unsigned Bit = static_cast<unsigned>(K); - Kind = Value ? (Kind | (1 << Bit)) : (Kind & ~(1 << Bit)); -} - -void SanitizerOptions::clear() { - SanitizerOptions Default; - *this = std::move(Default); -} - LangOptions::LangOptions() { #define LANGOPT(Name, Bits, Default, Description) Name = Default; #define ENUM_LANGOPT(Name, Type, Bits, Default, Description) set##Name(Default); @@ -48,6 +30,7 @@ void LangOptions::resetNonModularOptions() { // FIXME: This should not be reset; modules can be different with different // sanitizer options (this affects __has_feature(address_sanitizer) etc). Sanitize.clear(); + SanitizerBlacklistFile.clear(); CurrentModule.clear(); ImplementationOfModule.clear(); diff --git a/clang/lib/Basic/Sanitizers.cpp b/clang/lib/Basic/Sanitizers.cpp new file mode 100644 index 00000000000..7bc884dd015 --- /dev/null +++ b/clang/lib/Basic/Sanitizers.cpp @@ -0,0 +1,31 @@ +//===--- Sanitizers.cpp - C Language Family Language Options ----*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file defines the classes from Sanitizers.h +// +//===----------------------------------------------------------------------===// +#include "clang/Basic/Sanitizers.h" + +using namespace clang; + +SanitizerSet::SanitizerSet() : Kinds(0) {} + +bool SanitizerSet::has(SanitizerKind K) const { + unsigned Bit = static_cast<unsigned>(K); + return Kinds & (1 << Bit); +} + +void SanitizerSet::set(SanitizerKind K, bool Value) { + unsigned Bit = static_cast<unsigned>(K); + Kinds = Value ? (Kinds | (1 << Bit)) : (Kinds & ~(1 << Bit)); +} + +void SanitizerSet::clear() { + Kinds = 0; +} |