15 #ifndef LLVM_CLANG_BASIC_SANITIZERS_H 16 #define LLVM_CLANG_BASIC_SANITIZERS_H 19 #include "llvm/ADT/StringRef.h" 20 #include "llvm/Support/MathExtras.h" 28 namespace SanitizerKind {
33 #define SANITIZER(NAME, ID) SO_##ID, 34 #define SANITIZER_GROUP(NAME, ID, ALIAS) SO_##ID##Group, 35 #include "clang/Basic/Sanitizers.def" 41 #define SANITIZER(NAME, ID) \ 42 const SanitizerMask ID = 1ULL << SO_##ID; 43 #define SANITIZER_GROUP(NAME, ID, ALIAS) \ 44 const SanitizerMask ID = ALIAS; \ 45 const SanitizerMask ID##Group = 1ULL << SO_##ID##Group; 46 #include "clang/Basic/Sanitizers.def" 53 assert(llvm::isPowerOf2_64(K));
62 assert(llvm::isPowerOf2_64(K));
63 Mask =
Value ? (Mask | K) : (Mask & ~K);
70 bool empty()
const {
return Mask == 0; }
86 return SanitizerKind::CFI | SanitizerKind::Integer |
88 SanitizerKind::Undefined;
93 #endif // LLVM_CLANG_BASIC_SANITIZERS_H
bool hasOneOf(SanitizerMask K) const
Check if one or more sanitizers are enabled.
Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified...
void clear(SanitizerMask K=SanitizerKind::All)
Disable the sanitizers specified in K.
SanitizerMask getPPTransparentSanitizers()
Return the sanitizers which do not affect preprocessing.
Dataflow Directional Tag Classes.
bool empty() const
Returns true if no sanitizers are enabled.
SanitizerMask parseSanitizerValue(StringRef Value, bool AllowGroups)
Parse a single value from a -fsanitize= or -fno-sanitize= value list.
SanitizerMask expandSanitizerGroups(SanitizerMask Kinds)
For each sanitizer group bit set in Kinds, set the bits for sanitizers this group enables...
bool has(SanitizerMask K) const
Check if a certain (single) sanitizer is enabled.