You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.4 KiB
37 lines
1.4 KiB
//===--- 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" |
|
#include "clang/Basic/LLVM.h" |
|
#include "llvm/ADT/StringRef.h" |
|
#include "llvm/ADT/StringSwitch.h" |
|
|
|
using namespace clang; |
|
|
|
SanitizerMask clang::parseSanitizerValue(StringRef Value, bool AllowGroups) { |
|
SanitizerMask ParsedKind = llvm::StringSwitch<SanitizerMask>(Value) |
|
#define SANITIZER(NAME, ID) .Case(NAME, SanitizerKind::ID) |
|
#define SANITIZER_GROUP(NAME, ID, ALIAS) \ |
|
.Case(NAME, AllowGroups ? SanitizerKind::ID##Group : 0) |
|
#include "clang/Basic/Sanitizers.def" |
|
.Default(0); |
|
return ParsedKind; |
|
} |
|
|
|
SanitizerMask clang::expandSanitizerGroups(SanitizerMask Kinds) { |
|
#define SANITIZER(NAME, ID) |
|
#define SANITIZER_GROUP(NAME, ID, ALIAS) \ |
|
if (Kinds & SanitizerKind::ID##Group) \ |
|
Kinds |= SanitizerKind::ID; |
|
#include "clang/Basic/Sanitizers.def" |
|
return Kinds; |
|
}
|
|
|