Coverage Report

Created: 2018-09-25 23:22

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/BlockCounter.h
Line
Count
Source (jump to first uncovered line)
1
//==- BlockCounter.h - ADT for counting block visits ---------------*- C++ -*-//
2
//
3
//                     The LLVM Compiler Infrastructure
4
//
5
// This file is distributed under the University of Illinois Open Source
6
// License. See LICENSE.TXT for details.
7
//
8
//===----------------------------------------------------------------------===//
9
//
10
//  This file defines BlockCounter, an abstract data type used to count
11
//  the number of times a given block has been visited along a path
12
//  analyzed by CoreEngine.
13
//
14
//===----------------------------------------------------------------------===//
15
16
#ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_BLOCKCOUNTER_H
17
#define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_BLOCKCOUNTER_H
18
19
#include "llvm/Support/Allocator.h"
20
21
namespace clang {
22
23
class StackFrameContext;
24
25
namespace ento {
26
27
/// \class BlockCounter
28
/// An abstract data type used to count the number of times a given
29
/// block has been visited along a path analyzed by CoreEngine.
30
0
class BlockCounter {
31
  void *Data;
32
33
110k
  BlockCounter(void *D) : Data(D) {}
34
35
public:
36
9.75k
  BlockCounter() : Data(nullptr) {}
37
38
  unsigned getNumVisited(const StackFrameContext *CallSite,
39
                         unsigned BlockID) const;
40
41
  class Factory {
42
    void *F;
43
  public:
44
    Factory(llvm::BumpPtrAllocator& Alloc);
45
    ~Factory();
46
47
    BlockCounter GetEmptyCounter();
48
    BlockCounter IncrementCount(BlockCounter BC,
49
                                  const StackFrameContext *CallSite,
50
                                  unsigned BlockID);
51
  };
52
53
  friend class Factory;
54
};
55
56
} // end GR namespace
57
58
} // end clang namespace
59
60
#endif