diff options
Diffstat (limited to 'contrib/llvm/tools/clang/lib/Basic/Sanitizers.cpp')
| -rw-r--r-- | contrib/llvm/tools/clang/lib/Basic/Sanitizers.cpp | 30 | 
1 files changed, 24 insertions, 6 deletions
diff --git a/contrib/llvm/tools/clang/lib/Basic/Sanitizers.cpp b/contrib/llvm/tools/clang/lib/Basic/Sanitizers.cpp index 8faf17b8f22e..f5f81b5fb3e5 100644 --- a/contrib/llvm/tools/clang/lib/Basic/Sanitizers.cpp +++ b/contrib/llvm/tools/clang/lib/Basic/Sanitizers.cpp @@ -1,9 +1,8 @@  //===- Sanitizers.cpp - C Language Family Language Options ----------------===//  // -//                     The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception  //  //===----------------------------------------------------------------------===//  // @@ -12,17 +11,26 @@  //===----------------------------------------------------------------------===//  #include "clang/Basic/Sanitizers.h" +#include "llvm/ADT/Hashing.h"  #include "llvm/ADT/StringSwitch.h"  using namespace clang; +// Once LLVM switches to C++17, the constexpr variables can be inline and we +// won't need this. +#define SANITIZER(NAME, ID) constexpr SanitizerMask SanitizerKind::ID; +#define SANITIZER_GROUP(NAME, ID, ALIAS)                                       \ +  constexpr SanitizerMask SanitizerKind::ID;                                   \ +  constexpr SanitizerMask SanitizerKind::ID##Group; +#include "clang/Basic/Sanitizers.def" +  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) +  .Case(NAME, AllowGroups ? SanitizerKind::ID##Group : SanitizerMask())  #include "clang/Basic/Sanitizers.def" -    .Default(0); +    .Default(SanitizerMask());    return ParsedKind;  } @@ -34,3 +42,13 @@ SanitizerMask clang::expandSanitizerGroups(SanitizerMask Kinds) {  #include "clang/Basic/Sanitizers.def"    return Kinds;  } + +llvm::hash_code SanitizerMask::hash_value() const { +  return llvm::hash_combine_range(&maskLoToHigh[0], &maskLoToHigh[kNumElem]); +} + +namespace clang { +llvm::hash_code hash_value(const clang::SanitizerMask &Arg) { +  return Arg.hash_value(); +} +} // namespace clang  | 
