Introduce a SanitizerKind enum to LangOptions.
Use the bitmask to store the set of enabled sanitizers instead of a bitfield. On the negative side, it makes syntax for querying the set of enabled sanitizers a bit more clunky. On the positive side, we will be able to use SanitizerKind to eventually implement the new semantics for -fsanitize-recover= flag, that would allow us to make some sanitizers recoverable, and some non-recoverable. No functionality change. llvm-svn: 221558
This commit is contained in:
@@ -604,7 +604,7 @@ void CodeGenFunction::StartFunction(GlobalDecl GD,
|
||||
|
||||
// If we are checking function types, emit a function type signature as
|
||||
// prefix data.
|
||||
if (getLangOpts().CPlusPlus && SanOpts.Function) {
|
||||
if (getLangOpts().CPlusPlus && SanOpts.has(SanitizerKind::Function)) {
|
||||
if (const FunctionDecl *FD = dyn_cast_or_null<FunctionDecl>(D)) {
|
||||
if (llvm::Constant *PrefixSig =
|
||||
CGM.getTargetCodeGenInfo().getUBSanFunctionSignature(CGM)) {
|
||||
@@ -897,7 +897,7 @@ void CodeGenFunction::GenerateCode(GlobalDecl GD, llvm::Function *Fn,
|
||||
// function call is used by the caller, the behavior is undefined.
|
||||
if (getLangOpts().CPlusPlus && !FD->hasImplicitReturnZero() && !SawAsmBlock &&
|
||||
!FD->getReturnType()->isVoidType() && Builder.GetInsertBlock()) {
|
||||
if (SanOpts.Return) {
|
||||
if (SanOpts.has(SanitizerKind::Return)) {
|
||||
SanitizerScope SanScope(this);
|
||||
EmitCheck(Builder.getFalse(), "missing_return",
|
||||
EmitCheckSourceLocation(FD->getLocation()),
|
||||
@@ -1552,7 +1552,7 @@ void CodeGenFunction::EmitVariablyModifiedType(QualType type) {
|
||||
// If the size is an expression that is not an integer constant
|
||||
// expression [...] each time it is evaluated it shall have a value
|
||||
// greater than zero.
|
||||
if (SanOpts.VLABound &&
|
||||
if (SanOpts.has(SanitizerKind::VLABound) &&
|
||||
size->getType()->isSignedIntegerType()) {
|
||||
SanitizerScope SanScope(this);
|
||||
llvm::Value *Zero = llvm::Constant::getNullValue(Size->getType());
|
||||
|
||||
Reference in New Issue
Block a user