Coverage Report

Created: 2019-07-24 05:18

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/tools/clang/lib/Basic/Sanitizers.cpp
Line
Count
Source
1
//===- Sanitizers.cpp - C Language Family Language Options ----------------===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
//  This file defines the classes from Sanitizers.h
10
//
11
//===----------------------------------------------------------------------===//
12
13
#include "clang/Basic/Sanitizers.h"
14
#include "llvm/ADT/Hashing.h"
15
#include "llvm/ADT/StringSwitch.h"
16
17
using namespace clang;
18
19
// Once LLVM switches to C++17, the constexpr variables can be inline and we
20
// won't need this.
21
#define SANITIZER(NAME, ID) constexpr SanitizerMask SanitizerKind::ID;
22
#define SANITIZER_GROUP(NAME, ID, ALIAS)                                       \
23
  constexpr SanitizerMask SanitizerKind::ID;                                   \
24
  constexpr SanitizerMask SanitizerKind::ID##Group;
25
#include "clang/Basic/Sanitizers.def"
26
27
10.0k
SanitizerMask clang::parseSanitizerValue(StringRef Value, bool AllowGroups) {
28
10.0k
  SanitizerMask ParsedKind = llvm::StringSwitch<SanitizerMask>(Value)
29
532k
#define SANITIZER(NAME, ID) .Case(NAME, SanitizerKind::ID)
30
10.0k
#define SANITIZER_GROUP(NAME, ID, ALIAS)                                       \
31
110k
  .Case(NAME, AllowGroups ? 
SanitizerKind::ID102k
##Group :
SanitizerMask()7.93k
)
32
10.0k
#include "clang/Basic/Sanitizers.def"
33
10.0k
    .Default(SanitizerMask());
34
10.0k
  return ParsedKind;
35
10.0k
}
36
37
4.60k
SanitizerMask clang::expandSanitizerGroups(SanitizerMask Kinds) {
38
4.60k
#define SANITIZER(NAME, ID)
39
4.60k
#define SANITIZER_GROUP(NAME, ID, ALIAS)                                       \
40
50.6k
  if (Kinds & SanitizerKind::ID##Group)                                        \
41
50.6k
    
Kinds |= SanitizerKind::ID1.26k
;
42
4.60k
#include "clang/Basic/Sanitizers.def"
43
4.60k
  return Kinds;
44
4.60k
}
45
46
3
llvm::hash_code SanitizerMask::hash_value() const {
47
3
  return llvm::hash_combine_range(&maskLoToHigh[0], &maskLoToHigh[kNumElem]);
48
3
}
49
50
namespace clang {
51
3
llvm::hash_code hash_value(const clang::SanitizerMask &Arg) {
52
3
  return Arg.hash_value();
53
3
}
54
} // namespace clang