Coverage Report

Created: 2017-10-03 07:32

/Users/buildslave/jenkins/sharedspace/clang-stage2-coverage-R@2/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValVisitor.h
Line
Count
Source (jump to first uncovered line)
1
//===--- SValVisitor.h - Visitor for SVal subclasses ------------*- 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 the SValVisitor, SymExprVisitor, and MemRegionVisitor
11
//  interfaces, and also FullSValVisitor, which visits all three hierarchies.
12
//
13
//===----------------------------------------------------------------------===//
14
15
#ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_SVALVISITOR_H
16
#define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_SVALVISITOR_H
17
18
#include "clang/StaticAnalyzer/Core/PathSensitive/SVals.h"
19
#include "clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h"
20
#include "clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h"
21
22
namespace clang {
23
24
namespace ento {
25
26
/// SValVisitor - this class implements a simple visitor for SVal
27
/// subclasses.
28
template <typename ImplClass, typename RetTy = void> class SValVisitor {
29
public:
30
31
#define DISPATCH(NAME, CLASS) \
32
97.6k
  return static_cast<ImplClass *>(this)->Visit ## NAME(V.castAs<CLASS>())
33
34
32.5k
  RetTy Visit(SVal V) {
35
32.5k
    // Dispatch to VisitFooVal for each FooVal.
36
32.5k
    // Take namespaces (loc:: and nonloc::) into account.
37
32.5k
    switch (V.getBaseKind()) {
38
65.0k
#define BASIC_SVAL(Id, Parent) 
case SVal::Id ## Kind: 2
DISPATCH65.0k
(Id, Id);
39
32.5k
#include 
"clang/StaticAnalyzer/Core/PathSensitive/SVals.def"32.5k
40
25
    case SVal::LocKind:
41
25
      switch (V.getSubKind()) {
42
25
#define LOC_SVAL(Id, Parent) \
43
50
      
case loc::Id ## Kind: 25
DISPATCH50
(Loc ## Id, loc :: Id);
44
2
#include "clang/StaticAnalyzer/Core/PathSensitive/SVals.def"
45
25
      }
46
0
      
llvm_unreachable0
("Unknown Loc sub-kind!");
47
32.4k
    case SVal::NonLocKind:
48
32.4k
      switch (V.getSubKind()) {
49
32.4k
#define NONLOC_SVAL(Id, Parent) \
50
32.5k
      
case nonloc::Id ## Kind: 32.4k
DISPATCH32.5k
(NonLoc ## Id, nonloc :: Id);
51
0
#include "clang/StaticAnalyzer/Core/PathSensitive/SVals.def"
52
32.4k
      }
53
0
      llvm_unreachable("Unknown NonLoc sub-kind!");
54
32.5k
    }
55
0
    
llvm_unreachable0
("Unknown SVal kind!");
56
32.5k
  }
SimpleSValBuilder.cpp:clang::ento::SValVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::Visit(clang::ento::SVal)
Line
Count
Source
34
32.4k
  RetTy Visit(SVal V) {
35
32.4k
    // Dispatch to VisitFooVal for each FooVal.
36
32.4k
    // Take namespaces (loc:: and nonloc::) into account.
37
32.4k
    switch (V.getBaseKind()) {
38
32.4k
#define BASIC_SVAL(Id, Parent) case SVal::Id ## Kind: DISPATCH(Id, Id);
39
32.4k
#include 
"clang/StaticAnalyzer/Core/PathSensitive/SVals.def"32.4k
40
0
    case SVal::LocKind:
41
0
      switch (V.getSubKind()) {
42
0
#define LOC_SVAL(Id, Parent) \
43
0
      case loc::Id ## Kind: DISPATCH(Loc ## Id, loc :: Id);
44
0
#include "clang/StaticAnalyzer/Core/PathSensitive/SVals.def"
45
0
      }
46
0
      
llvm_unreachable0
("Unknown Loc sub-kind!");
47
32.4k
    case SVal::NonLocKind:
48
32.4k
      switch (V.getSubKind()) {
49
32.4k
#define NONLOC_SVAL(Id, Parent) \
50
32.4k
      case nonloc::Id ## Kind: DISPATCH(NonLoc ## Id, nonloc :: Id);
51
0
#include "clang/StaticAnalyzer/Core/PathSensitive/SVals.def"
52
32.4k
      }
53
0
      llvm_unreachable("Unknown NonLoc sub-kind!");
54
32.4k
    }
55
0
    
llvm_unreachable0
("Unknown SVal kind!");
56
  }
clang::ento::SValVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::Visit(clang::ento::SVal)
Line
Count
Source
34
46
  RetTy Visit(SVal V) {
35
46
    // Dispatch to VisitFooVal for each FooVal.
36
46
    // Take namespaces (loc:: and nonloc::) into account.
37
46
    switch (V.getBaseKind()) {
38
46
#define BASIC_SVAL(Id, Parent) case SVal::Id ## Kind: DISPATCH(Id, Id);
39
46
#include 
"clang/StaticAnalyzer/Core/PathSensitive/SVals.def"46
40
25
    case SVal::LocKind:
41
25
      switch (V.getSubKind()) {
42
25
#define LOC_SVAL(Id, Parent) \
43
25
      case loc::Id ## Kind: DISPATCH(Loc ## Id, loc :: Id);
44
2
#include "clang/StaticAnalyzer/Core/PathSensitive/SVals.def"
45
25
      }
46
0
      
llvm_unreachable0
("Unknown Loc sub-kind!");
47
19
    case SVal::NonLocKind:
48
19
      switch (V.getSubKind()) {
49
19
#define NONLOC_SVAL(Id, Parent) \
50
19
      case nonloc::Id ## Kind: DISPATCH(NonLoc ## Id, nonloc :: Id);
51
0
#include "clang/StaticAnalyzer/Core/PathSensitive/SVals.def"
52
19
      }
53
0
      llvm_unreachable("Unknown NonLoc sub-kind!");
54
46
    }
55
0
    
llvm_unreachable0
("Unknown SVal kind!");
56
  }
57
58
#define BASIC_SVAL(Id, Parent) \
59
0
  RetTy Visit ## Id(Id V) 
{ 0
DISPATCH0
(Parent, Id); }
Unexecuted instantiation: clang::ento::SValVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitDefinedOrUnknownSVal(clang::ento::DefinedOrUnknownSVal)
Unexecuted instantiation: clang::ento::SValVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitNonLoc(clang::ento::NonLoc)
Unexecuted instantiation: SimpleSValBuilder.cpp:clang::ento::SValVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::VisitUndefinedVal(clang::ento::UndefinedVal)
Unexecuted instantiation: SimpleSValBuilder.cpp:clang::ento::SValVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::VisitUnknownVal(clang::ento::UnknownVal)
Unexecuted instantiation: SimpleSValBuilder.cpp:clang::ento::SValVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::VisitDefinedOrUnknownSVal(clang::ento::DefinedOrUnknownSVal)
Unexecuted instantiation: SimpleSValBuilder.cpp:clang::ento::SValVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::VisitLoc(clang::ento::Loc)
Unexecuted instantiation: SimpleSValBuilder.cpp:clang::ento::SValVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::VisitDefinedSVal(clang::ento::DefinedSVal)
Unexecuted instantiation: SimpleSValBuilder.cpp:clang::ento::SValVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::VisitNonLoc(clang::ento::NonLoc)
Unexecuted instantiation: clang::ento::SValVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitLoc(clang::ento::Loc)
Unexecuted instantiation: clang::ento::SValVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitDefinedSVal(clang::ento::DefinedSVal)
60
#define ABSTRACT_SVAL(Id, Parent) \
61
  BASIC_SVAL(Id, Parent)
62
#define LOC_SVAL(Id, Parent) \
63
0
  RetTy VisitLoc ## Id(loc::Id V) 
{ 0
DISPATCH0
(Parent, Parent); }
Unexecuted instantiation: SimpleSValBuilder.cpp:clang::ento::SValVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::VisitLocGotoLabel(clang::ento::loc::GotoLabel)
Unexecuted instantiation: SimpleSValBuilder.cpp:clang::ento::SValVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::VisitLocMemRegionVal(clang::ento::loc::MemRegionVal)
Unexecuted instantiation: SimpleSValBuilder.cpp:clang::ento::SValVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::VisitLocConcreteInt(clang::ento::loc::ConcreteInt)
Unexecuted instantiation: clang::ento::SValVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitLocGotoLabel(clang::ento::loc::GotoLabel)
64
#define NONLOC_SVAL(Id, Parent) \
65
0
  RetTy VisitNonLoc ## Id(nonloc::Id V) 
{ 0
DISPATCH0
(Parent, Parent); }
Unexecuted instantiation: SimpleSValBuilder.cpp:clang::ento::SValVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::VisitNonLocConcreteInt(clang::ento::nonloc::ConcreteInt)
Unexecuted instantiation: clang::ento::SValVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitNonLocPointerToMember(clang::ento::nonloc::PointerToMember)
Unexecuted instantiation: SimpleSValBuilder.cpp:clang::ento::SValVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::VisitNonLocPointerToMember(clang::ento::nonloc::PointerToMember)
Unexecuted instantiation: SimpleSValBuilder.cpp:clang::ento::SValVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::VisitNonLocLocAsInteger(clang::ento::nonloc::LocAsInteger)
Unexecuted instantiation: SimpleSValBuilder.cpp:clang::ento::SValVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::VisitNonLocLazyCompoundVal(clang::ento::nonloc::LazyCompoundVal)
Unexecuted instantiation: SimpleSValBuilder.cpp:clang::ento::SValVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::VisitNonLocCompoundVal(clang::ento::nonloc::CompoundVal)
Unexecuted instantiation: clang::ento::SValVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitNonLocLocAsInteger(clang::ento::nonloc::LocAsInteger)
Unexecuted instantiation: clang::ento::SValVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitNonLocCompoundVal(clang::ento::nonloc::CompoundVal)
66
#include "clang/StaticAnalyzer/Core/PathSensitive/SVals.def"
67
68
  // Base case, ignore it. :)
69
  RetTy VisitSVal(SVal V) { return RetTy(); }
70
71
#undef DISPATCH
72
};
73
74
/// SymExprVisitor - this class implements a simple visitor for SymExpr
75
/// subclasses.
76
template <typename ImplClass, typename RetTy = void> class SymExprVisitor {
77
public:
78
79
#define DISPATCH(CLASS) \
80
101k
    return static_cast<ImplClass *>(this)->Visit ## CLASS(cast<CLASS>(S))
81
82
34.5k
  RetTy Visit(SymbolRef S) {
83
34.5k
    // Dispatch to VisitSymbolFoo for each SymbolFoo.
84
34.5k
    switch (S->getKind()) {
85
34.5k
#define SYMBOL(Id, Parent) \
86
68.0k
    
case SymExpr::Id ## Kind: 34.5k
DISPATCH68.0k
(Id);
87
84
#include "clang/StaticAnalyzer/Core/PathSensitive/Symbols.def"
88
34.5k
    }
89
0
    
llvm_unreachable0
("Unknown SymExpr kind!");
90
34.5k
  }
SimpleSValBuilder.cpp:clang::ento::SymExprVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::Visit(clang::ento::SymExpr const*)
Line
Count
Source
82
34.4k
  RetTy Visit(SymbolRef S) {
83
34.4k
    // Dispatch to VisitSymbolFoo for each SymbolFoo.
84
34.4k
    switch (S->getKind()) {
85
34.4k
#define SYMBOL(Id, Parent) \
86
34.4k
    case SymExpr::Id ## Kind: DISPATCH(Id);
87
84
#include "clang/StaticAnalyzer/Core/PathSensitive/Symbols.def"
88
34.4k
    }
89
0
    
llvm_unreachable0
("Unknown SymExpr kind!");
90
  }
clang::ento::SymExprVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::Visit(clang::ento::SymExpr const*)
Line
Count
Source
82
30
  RetTy Visit(SymbolRef S) {
83
30
    // Dispatch to VisitSymbolFoo for each SymbolFoo.
84
30
    switch (S->getKind()) {
85
30
#define SYMBOL(Id, Parent) \
86
30
    case SymExpr::Id ## Kind: DISPATCH(Id);
87
0
#include "clang/StaticAnalyzer/Core/PathSensitive/Symbols.def"
88
30
    }
89
0
    
llvm_unreachable0
("Unknown SymExpr kind!");
90
  }
91
92
  // If the implementation chooses not to implement a certain visit method, fall
93
  // back on visiting the superclass.
94
33.2k
#define SYMBOL(Id, Parent) RetTy Visit ## Id(const Id *S) 
{ 33.2k
DISPATCH33.2k
(Parent); }
SimpleSValBuilder.cpp:clang::ento::SymExprVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::VisitSymbolRegionValue(clang::ento::SymbolRegionValue const*)
Line
Count
Source
94
18.2k
#define SYMBOL(Id, Parent) RetTy Visit ## Id(const Id *S) 
{ 18.2k
DISPATCH18.2k
(Parent); }
SimpleSValBuilder.cpp:clang::ento::SymExprVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::VisitSymbolMetadata(clang::ento::SymbolMetadata const*)
Line
Count
Source
94
972
#define SYMBOL(Id, Parent) RetTy Visit ## Id(const Id *S) 
{ 972
DISPATCH972
(Parent); }
SimpleSValBuilder.cpp:clang::ento::SymExprVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::VisitSymbolExtent(clang::ento::SymbolExtent const*)
Line
Count
Source
94
1.05k
#define SYMBOL(Id, Parent) RetTy Visit ## Id(const Id *S) 
{ 1.05k
DISPATCH1.05k
(Parent); }
Unexecuted instantiation: clang::ento::SymExprVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitBinarySymExpr(clang::ento::BinarySymExpr const*)
SimpleSValBuilder.cpp:clang::ento::SymExprVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::VisitSymbolDerived(clang::ento::SymbolDerived const*)
Line
Count
Source
94
793
#define SYMBOL(Id, Parent) RetTy Visit ## Id(const Id *S) 
{ 793
DISPATCH793
(Parent); }
Unexecuted instantiation: clang::ento::SymExprVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitSymbolCast(clang::ento::SymbolCast const*)
SimpleSValBuilder.cpp:clang::ento::SymExprVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::VisitSymbolConjured(clang::ento::SymbolConjured const*)
Line
Count
Source
94
11.9k
#define SYMBOL(Id, Parent) RetTy Visit ## Id(const Id *S) 
{ 11.9k
DISPATCH11.9k
(Parent); }
SimpleSValBuilder.cpp:clang::ento::SymExprVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::VisitSymbolCast(clang::ento::SymbolCast const*)
Line
Count
Source
94
20
#define SYMBOL(Id, Parent) RetTy Visit ## Id(const Id *S) 
{ 20
DISPATCH20
(Parent); }
SimpleSValBuilder.cpp:clang::ento::SymExprVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::VisitBinarySymExpr(clang::ento::BinarySymExpr const*)
Line
Count
Source
94
84
#define SYMBOL(Id, Parent) RetTy Visit ## Id(const Id *S) 
{ 84
DISPATCH84
(Parent); }
Unexecuted instantiation: clang::ento::SymExprVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitIntSymExpr(clang::ento::IntSymExpr const*)
SimpleSValBuilder.cpp:clang::ento::SymExprVisitor<(anonymous namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal)::Simplifier, clang::ento::SVal>::VisitIntSymExpr(clang::ento::IntSymExpr const*)
Line
Count
Source
94
84
#define SYMBOL(Id, Parent) RetTy Visit ## Id(const Id *S) 
{ 84
DISPATCH84
(Parent); }
95
#define ABSTRACT_SYMBOL(Id, Parent) SYMBOL(Id, Parent)
96
#include "clang/StaticAnalyzer/Core/PathSensitive/Symbols.def"
97
98
  // Base case, ignore it. :)
99
  RetTy VisitSymExpr(SymbolRef S) { return RetTy(); }
100
101
#undef DISPATCH
102
};
103
104
/// MemRegionVisitor - this class implements a simple visitor for MemRegion
105
/// subclasses.
106
template <typename ImplClass, typename RetTy = void> class MemRegionVisitor {
107
public:
108
109
#define DISPATCH(CLASS) \
110
86
  return static_cast<ImplClass *>(this)->Visit ## CLASS(cast<CLASS>(R))
111
112
43
  RetTy Visit(const MemRegion *R) {
113
43
    // Dispatch to VisitFooRegion for each FooRegion.
114
43
    switch (R->getKind()) {
115
86
#define REGION(Id, Parent) 
case MemRegion::Id ## Kind: 43
DISPATCH86
(Id);
116
0
#include "clang/StaticAnalyzer/Core/PathSensitive/Regions.def"
117
43
    }
118
0
    
llvm_unreachable0
("Unknown MemRegion kind!");
119
43
  }
120
121
  // If the implementation chooses not to implement a certain visit method, fall
122
  // back on visiting the superclass.
123
#define REGION(Id, Parent) \
124
0
  RetTy Visit ## Id(const Id *R) 
{ 0
DISPATCH0
(Parent); }
Unexecuted instantiation: clang::ento::MemRegionVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitGlobalImmutableSpaceRegion(clang::ento::GlobalImmutableSpaceRegion const*)
Unexecuted instantiation: clang::ento::MemRegionVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitMemSpaceRegion(clang::ento::MemSpaceRegion const*)
Unexecuted instantiation: clang::ento::MemRegionVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitGlobalsSpaceRegion(clang::ento::GlobalsSpaceRegion const*)
Unexecuted instantiation: clang::ento::MemRegionVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitGlobalInternalSpaceRegion(clang::ento::GlobalInternalSpaceRegion const*)
Unexecuted instantiation: clang::ento::MemRegionVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitGlobalSystemSpaceRegion(clang::ento::GlobalSystemSpaceRegion const*)
Unexecuted instantiation: clang::ento::MemRegionVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitStaticGlobalSpaceRegion(clang::ento::StaticGlobalSpaceRegion const*)
Unexecuted instantiation: clang::ento::MemRegionVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitHeapSpaceRegion(clang::ento::HeapSpaceRegion const*)
Unexecuted instantiation: clang::ento::MemRegionVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitStackArgumentsSpaceRegion(clang::ento::StackArgumentsSpaceRegion const*)
Unexecuted instantiation: clang::ento::MemRegionVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitStackSpaceRegion(clang::ento::StackSpaceRegion const*)
Unexecuted instantiation: clang::ento::MemRegionVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitStackLocalsSpaceRegion(clang::ento::StackLocalsSpaceRegion const*)
Unexecuted instantiation: clang::ento::MemRegionVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitUnknownSpaceRegion(clang::ento::UnknownSpaceRegion const*)
Unexecuted instantiation: clang::ento::MemRegionVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitBlockDataRegion(clang::ento::BlockDataRegion const*)
Unexecuted instantiation: clang::ento::MemRegionVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitTypedRegion(clang::ento::TypedRegion const*)
Unexecuted instantiation: clang::ento::MemRegionVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitSubRegion(clang::ento::SubRegion const*)
Unexecuted instantiation: clang::ento::MemRegionVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitBlockCodeRegion(clang::ento::BlockCodeRegion const*)
Unexecuted instantiation: clang::ento::MemRegionVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitCodeTextRegion(clang::ento::CodeTextRegion const*)
Unexecuted instantiation: clang::ento::MemRegionVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitFunctionCodeRegion(clang::ento::FunctionCodeRegion const*)
Unexecuted instantiation: clang::ento::MemRegionVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitCXXThisRegion(clang::ento::CXXThisRegion const*)
Unexecuted instantiation: clang::ento::MemRegionVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitTypedValueRegion(clang::ento::TypedValueRegion const*)
Unexecuted instantiation: clang::ento::MemRegionVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitObjCStringRegion(clang::ento::ObjCStringRegion const*)
Unexecuted instantiation: clang::ento::MemRegionVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitCodeSpaceRegion(clang::ento::CodeSpaceRegion const*)
Unexecuted instantiation: clang::ento::MemRegionVisitor<clang::ento::SValExplainer, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::VisitNonStaticGlobalSpaceRegion(clang::ento::NonStaticGlobalSpaceRegion const*)
125
#define ABSTRACT_REGION(Id, Parent) \
126
  REGION(Id, Parent)
127
#include "clang/StaticAnalyzer/Core/PathSensitive/Regions.def"
128
129
  // Base case, ignore it. :)
130
  RetTy VisitMemRegion(const MemRegion *R) { return RetTy(); }
131
132
#undef DISPATCH
133
};
134
135
/// FullSValVisitor - a convenient mixed visitor for all three:
136
/// SVal, SymExpr and MemRegion subclasses.
137
template <typename ImplClass, typename RetTy = void>
138
class FullSValVisitor : public SValVisitor<ImplClass, RetTy>,
139
                        public SymExprVisitor<ImplClass, RetTy>,
140
                        public MemRegionVisitor<ImplClass, RetTy> {
141
public:
142
  using SValVisitor<ImplClass, RetTy>::Visit;
143
  using SymExprVisitor<ImplClass, RetTy>::Visit;
144
  using MemRegionVisitor<ImplClass, RetTy>::Visit;
145
};
146
147
} // end namespace ento
148
149
} // end namespace clang
150
151
#endif