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"
26 namespace SanitizerKind {
31 #define SANITIZER(NAME, ID) SO_##ID,
32 #define SANITIZER_GROUP(NAME, ID, ALIAS) SO_##ID##Group,
33 #include "clang/Basic/Sanitizers.def"
39 #define SANITIZER(NAME, ID) \
40 const SanitizerMask ID = 1ULL << SO_##ID;
41 #define SANITIZER_GROUP(NAME, ID, ALIAS) \
42 const SanitizerMask ID = ALIAS; \
43 const SanitizerMask ID##Group = 1ULL << SO_##ID##Group;
44 #include "clang/Basic/Sanitizers.def"
51 assert(llvm::isPowerOf2_64(K));
60 assert(llvm::isPowerOf2_64(K));
84 return SanitizerKind::CFI | SanitizerKind::Integer |
static SanitizerMask getPPTransparentSanitizers()
Return the sanitizers which do not affect preprocessing.
SanitizerMask Mask
Bitmask of enabled sanitizers.
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.
bool empty() const
Returns true if at least one sanitizer is enabled.
void set(SanitizerMask K, bool Value)
Enable or disable a certain (single) sanitizer.
bool hasOneOf(SanitizerMask K) const
Check if one or more sanitizers are enabled.
SanitizerMask parseSanitizerValue(StringRef Value, bool AllowGroups)
Parse a single value from a -fsanitize= or -fno-sanitize= value list.
bool has(SanitizerMask K) const
Check if a certain (single) sanitizer is enabled.
SanitizerMask expandSanitizerGroups(SanitizerMask Kinds)
For each sanitizer group bit set in Kinds, set the bits for sanitizers this group enables...