Coverage Report

Created: 2022-07-16 07:03

/Users/buildslave/jenkins/workspace/coverage/llvm-project/clang/lib/AST/Stmt.cpp
Line
Count
Source (jump to first uncovered line)
1
//===- Stmt.cpp - Statement AST Node Implementation -----------------------===//
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 implements the Stmt class and statement subclasses.
10
//
11
//===----------------------------------------------------------------------===//
12
13
#include "clang/AST/Stmt.h"
14
#include "clang/AST/ASTContext.h"
15
#include "clang/AST/ASTDiagnostic.h"
16
#include "clang/AST/Attr.h"
17
#include "clang/AST/Decl.h"
18
#include "clang/AST/DeclGroup.h"
19
#include "clang/AST/Expr.h"
20
#include "clang/AST/ExprCXX.h"
21
#include "clang/AST/ExprConcepts.h"
22
#include "clang/AST/ExprObjC.h"
23
#include "clang/AST/ExprOpenMP.h"
24
#include "clang/AST/StmtCXX.h"
25
#include "clang/AST/StmtObjC.h"
26
#include "clang/AST/StmtOpenMP.h"
27
#include "clang/AST/Type.h"
28
#include "clang/Basic/CharInfo.h"
29
#include "clang/Basic/LLVM.h"
30
#include "clang/Basic/SourceLocation.h"
31
#include "clang/Basic/TargetInfo.h"
32
#include "clang/Lex/Token.h"
33
#include "llvm/ADT/SmallVector.h"
34
#include "llvm/ADT/StringExtras.h"
35
#include "llvm/ADT/StringRef.h"
36
#include "llvm/Support/Casting.h"
37
#include "llvm/Support/Compiler.h"
38
#include "llvm/Support/ErrorHandling.h"
39
#include "llvm/Support/MathExtras.h"
40
#include "llvm/Support/raw_ostream.h"
41
#include <algorithm>
42
#include <cassert>
43
#include <cstring>
44
#include <string>
45
#include <type_traits>
46
#include <utility>
47
48
using namespace clang;
49
50
static struct StmtClassNameTable {
51
  const char *Name;
52
  unsigned Counter;
53
  unsigned Size;
54
} StmtClassInfo[Stmt::lastStmtConstant+1];
55
56
40.5k
static StmtClassNameTable &getStmtInfoTableEntry(Stmt::StmtClass E) {
57
40.5k
  static bool Initialized = false;
58
40.5k
  if (Initialized)
59
39.9k
    return StmtClassInfo[E];
60
61
  // Initialize the table on the first use.
62
619
  Initialized = true;
63
619
#define ABSTRACT_STMT(STMT)
64
619
#define STMT(CLASS, PARENT) \
65
142k
  StmtClassInfo[(unsigned)Stmt::CLASS##Class].Name = #CLASS;    \
66
142k
  StmtClassInfo[(unsigned)Stmt::CLASS##Class].Size = sizeof(CLASS);
67
619
#include "clang/AST/StmtNodes.inc"
68
69
619
  return StmtClassInfo[E];
70
40.5k
}
71
72
void *Stmt::operator new(size_t bytes, const ASTContext& C,
73
24.2M
                         unsigned alignment) {
74
24.2M
  return ::operator new(bytes, C, alignment);
75
24.2M
}
76
77
40.5k
const char *Stmt::getStmtClassName() const {
78
40.5k
  return getStmtInfoTableEntry((StmtClass) StmtBits.sClass).Name;
79
40.5k
}
80
81
// Check that no statement / expression class is polymorphic. LLVM style RTTI
82
// should be used instead. If absolutely needed an exception can still be added
83
// here by defining the appropriate macro (but please don't do this).
84
#define STMT(CLASS, PARENT) \
85
  static_assert(!std::is_polymorphic<CLASS>::value, \
86
                #CLASS " should not be polymorphic!");
87
#include "clang/AST/StmtNodes.inc"
88
89
// Check that no statement / expression class has a non-trival destructor.
90
// Statements and expressions are allocated with the BumpPtrAllocator from
91
// ASTContext and therefore their destructor is not executed.
92
#define STMT(CLASS, PARENT)                                                    \
93
  static_assert(std::is_trivially_destructible<CLASS>::value,                  \
94
                #CLASS " should be trivially destructible!");
95
// FIXME: InitListExpr is not trivially destructible due to its ASTVector.
96
#define INITLISTEXPR(CLASS, PARENT)
97
#include "clang/AST/StmtNodes.inc"
98
99
4
void Stmt::PrintStats() {
100
  // Ensure the table is primed.
101
4
  getStmtInfoTableEntry(Stmt::NullStmtClass);
102
103
4
  unsigned sum = 0;
104
4
  llvm::errs() << "\n*** Stmt/Expr Stats:\n";
105
932
  for (int i = 0; i != Stmt::lastStmtConstant+1; 
i++928
) {
106
928
    if (StmtClassInfo[i].Name == nullptr) 
continue4
;
107
924
    sum += StmtClassInfo[i].Counter;
108
924
  }
109
4
  llvm::errs() << "  " << sum << " stmts/exprs total.\n";
110
4
  sum = 0;
111
932
  for (int i = 0; i != Stmt::lastStmtConstant+1; 
i++928
) {
112
928
    if (StmtClassInfo[i].Name == nullptr) 
continue4
;
113
924
    if (StmtClassInfo[i].Counter == 0) 
continue910
;
114
14
    llvm::errs() << "    " << StmtClassInfo[i].Counter << " "
115
14
                 << StmtClassInfo[i].Name << ", " << StmtClassInfo[i].Size
116
14
                 << " each (" << StmtClassInfo[i].Counter*StmtClassInfo[i].Size
117
14
                 << " bytes)\n";
118
14
    sum += StmtClassInfo[i].Counter*StmtClassInfo[i].Size;
119
14
  }
120
121
4
  llvm::errs() << "Total bytes = " << sum << "\n";
122
4
}
123
124
14
void Stmt::addStmtClass(StmtClass s) {
125
14
  ++getStmtInfoTableEntry(s).Counter;
126
14
}
127
128
bool Stmt::StatisticsEnabled = false;
129
4
void Stmt::EnableStatistics() {
130
4
  StatisticsEnabled = true;
131
4
}
132
133
static std::pair<Stmt::Likelihood, const Attr *>
134
353
getLikelihood(ArrayRef<const Attr *> Attrs) {
135
353
  for (const auto *A : Attrs) {
136
187
    if (isa<LikelyAttr>(A))
137
82
      return std::make_pair(Stmt::LH_Likely, A);
138
139
105
    if (isa<UnlikelyAttr>(A))
140
103
      return std::make_pair(Stmt::LH_Unlikely, A);
141
105
  }
142
143
168
  return std::make_pair(Stmt::LH_None, nullptr);
144
353
}
145
146
1.26M
static std::pair<Stmt::Likelihood, const Attr *> getLikelihood(const Stmt *S) {
147
1.26M
  if (const auto *AS = dyn_cast_or_null<AttributedStmt>(S))
148
166
    return getLikelihood(AS->getAttrs());
149
150
1.26M
  return std::make_pair(Stmt::LH_None, nullptr);
151
1.26M
}
152
153
187
Stmt::Likelihood Stmt::getLikelihood(ArrayRef<const Attr *> Attrs) {
154
187
  return ::getLikelihood(Attrs).first;
155
187
}
156
157
125
Stmt::Likelihood Stmt::getLikelihood(const Stmt *S) {
158
125
  return ::getLikelihood(S).first;
159
125
}
160
161
2.18k
const Attr *Stmt::getLikelihoodAttr(const Stmt *S) {
162
2.18k
  return ::getLikelihood(S).second;
163
2.18k
}
164
165
3.40k
Stmt::Likelihood Stmt::getLikelihood(const Stmt *Then, const Stmt *Else) {
166
3.40k
  Likelihood LHT = ::getLikelihood(Then).first;
167
3.40k
  Likelihood LHE = ::getLikelihood(Else).first;
168
3.40k
  if (LHE == LH_None)
169
3.40k
    return LHT;
170
171
  // If the same attribute is used on both branches there's a conflict.
172
0
  if (LHT == LHE)
173
0
    return LH_None;
174
175
0
  if (LHT != LH_None)
176
0
    return LHT;
177
178
  // Invert the value of Else to get the value for Then.
179
0
  return LHE == LH_Likely ? LH_Unlikely : LH_Likely;
180
0
}
181
182
std::tuple<bool, const Attr *, const Attr *>
183
628k
Stmt::determineLikelihoodConflict(const Stmt *Then, const Stmt *Else) {
184
628k
  std::pair<Likelihood, const Attr *> LHT = ::getLikelihood(Then);
185
628k
  std::pair<Likelihood, const Attr *> LHE = ::getLikelihood(Else);
186
  // If the same attribute is used on both branches there's a conflict.
187
628k
  if (LHT.first != LH_None && 
LHT.first == LHE.first96
)
188
2
    return std::make_tuple(true, LHT.second, LHE.second);
189
190
628k
  return std::make_tuple(false, nullptr, nullptr);
191
628k
}
192
193
/// Skip no-op (attributed, compound) container stmts and skip captured
194
/// stmt at the top, if \a IgnoreCaptured is true.
195
668k
Stmt *Stmt::IgnoreContainers(bool IgnoreCaptured) {
196
668k
  Stmt *S = this;
197
668k
  if (IgnoreCaptured)
198
219k
    if (auto CapS = dyn_cast_or_null<CapturedStmt>(S))
199
201k
      S = CapS->getCapturedStmt();
200
699k
  while (true) {
201
699k
    if (auto AS = dyn_cast_or_null<AttributedStmt>(S))
202
52
      S = AS->getSubStmt();
203
699k
    else if (auto CS = dyn_cast_or_null<CompoundStmt>(S)) {
204
66.3k
      if (CS->size() != 1)
205
35.1k
        break;
206
31.1k
      S = CS->body_back();
207
31.1k
    } else
208
633k
      break;
209
699k
  }
210
668k
  return S;
211
668k
}
212
213
/// Strip off all label-like statements.
214
///
215
/// This will strip off label statements, case statements, attributed
216
/// statements and default statements recursively.
217
811k
const Stmt *Stmt::stripLabelLikeStatements() const {
218
811k
  const Stmt *S = this;
219
814k
  while (true) {
220
814k
    if (const auto *LS = dyn_cast<LabelStmt>(S))
221
652
      S = LS->getSubStmt();
222
813k
    else if (const auto *SC = dyn_cast<SwitchCase>(S))
223
2.32k
      S = SC->getSubStmt();
224
811k
    else if (const auto *AS = dyn_cast<AttributedStmt>(S))
225
135
      S = AS->getSubStmt();
226
811k
    else
227
811k
      return S;
228
814k
  }
229
811k
}
230
231
namespace {
232
233
  struct good {};
234
  struct bad {};
235
236
  // These silly little functions have to be static inline to suppress
237
  // unused warnings, and they have to be defined to suppress other
238
  // warnings.
239
0
  static good is_good(good) { return good(); }
240
241
  typedef Stmt::child_range children_t();
242
0
  template <class T> good implements_children(children_t T::*) {
243
0
    return good();
244
0
  }
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::AsmStmt>(llvm::iterator_range<clang::StmtIterator> (clang::AsmStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::MSAsmStmt>(llvm::iterator_range<clang::StmtIterator> (clang::MSAsmStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::BreakStmt>(llvm::iterator_range<clang::StmtIterator> (clang::BreakStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXCatchStmt>(llvm::iterator_range<clang::StmtIterator> (clang::CXXCatchStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXForRangeStmt>(llvm::iterator_range<clang::StmtIterator> (clang::CXXForRangeStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXTryStmt>(llvm::iterator_range<clang::StmtIterator> (clang::CXXTryStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CapturedStmt>(llvm::iterator_range<clang::StmtIterator> (clang::CapturedStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CompoundStmt>(llvm::iterator_range<clang::StmtIterator> (clang::CompoundStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ContinueStmt>(llvm::iterator_range<clang::StmtIterator> (clang::ContinueStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CoreturnStmt>(llvm::iterator_range<clang::StmtIterator> (clang::CoreturnStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CoroutineBodyStmt>(llvm::iterator_range<clang::StmtIterator> (clang::CoroutineBodyStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::DeclStmt>(llvm::iterator_range<clang::StmtIterator> (clang::DeclStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::DoStmt>(llvm::iterator_range<clang::StmtIterator> (clang::DoStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ForStmt>(llvm::iterator_range<clang::StmtIterator> (clang::ForStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::GotoStmt>(llvm::iterator_range<clang::StmtIterator> (clang::GotoStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::IfStmt>(llvm::iterator_range<clang::StmtIterator> (clang::IfStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::IndirectGotoStmt>(llvm::iterator_range<clang::StmtIterator> (clang::IndirectGotoStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::MSDependentExistsStmt>(llvm::iterator_range<clang::StmtIterator> (clang::MSDependentExistsStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::NullStmt>(llvm::iterator_range<clang::StmtIterator> (clang::NullStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::OMPCanonicalLoop>(llvm::iterator_range<clang::StmtIterator> (clang::OMPCanonicalLoop::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::OMPExecutableDirective>(llvm::iterator_range<clang::StmtIterator> (clang::OMPExecutableDirective::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCAtCatchStmt>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCAtCatchStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCAtFinallyStmt>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCAtFinallyStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCAtSynchronizedStmt>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCAtSynchronizedStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCAtThrowStmt>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCAtThrowStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCAtTryStmt>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCAtTryStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCAutoreleasePoolStmt>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCAutoreleasePoolStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCForCollectionStmt>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCForCollectionStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ReturnStmt>(llvm::iterator_range<clang::StmtIterator> (clang::ReturnStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::SEHExceptStmt>(llvm::iterator_range<clang::StmtIterator> (clang::SEHExceptStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::SEHFinallyStmt>(llvm::iterator_range<clang::StmtIterator> (clang::SEHFinallyStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::SEHLeaveStmt>(llvm::iterator_range<clang::StmtIterator> (clang::SEHLeaveStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::SEHTryStmt>(llvm::iterator_range<clang::StmtIterator> (clang::SEHTryStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CaseStmt>(llvm::iterator_range<clang::StmtIterator> (clang::CaseStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::DefaultStmt>(llvm::iterator_range<clang::StmtIterator> (clang::DefaultStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::SwitchStmt>(llvm::iterator_range<clang::StmtIterator> (clang::SwitchStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::AttributedStmt>(llvm::iterator_range<clang::StmtIterator> (clang::AttributedStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::BinaryConditionalOperator>(llvm::iterator_range<clang::StmtIterator> (clang::BinaryConditionalOperator::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ConditionalOperator>(llvm::iterator_range<clang::StmtIterator> (clang::ConditionalOperator::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::AddrLabelExpr>(llvm::iterator_range<clang::StmtIterator> (clang::AddrLabelExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ArrayInitIndexExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ArrayInitIndexExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ArrayInitLoopExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ArrayInitLoopExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ArraySubscriptExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ArraySubscriptExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ArrayTypeTraitExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ArrayTypeTraitExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::AsTypeExpr>(llvm::iterator_range<clang::StmtIterator> (clang::AsTypeExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::AtomicExpr>(llvm::iterator_range<clang::StmtIterator> (clang::AtomicExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::BinaryOperator>(llvm::iterator_range<clang::StmtIterator> (clang::BinaryOperator::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::BlockExpr>(llvm::iterator_range<clang::StmtIterator> (clang::BlockExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXBindTemporaryExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXBindTemporaryExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXBoolLiteralExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXBoolLiteralExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXConstructExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXConstructExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXDefaultArgExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXDefaultArgExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXDefaultInitExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXDefaultInitExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXDeleteExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXDeleteExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXDependentScopeMemberExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXDependentScopeMemberExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXFoldExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXFoldExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXInheritedCtorInitExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXInheritedCtorInitExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXNewExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXNewExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXNoexceptExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXNoexceptExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXNullPtrLiteralExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXNullPtrLiteralExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXPseudoDestructorExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXPseudoDestructorExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXRewrittenBinaryOperator>(llvm::iterator_range<clang::StmtIterator> (clang::CXXRewrittenBinaryOperator::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXScalarValueInitExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXScalarValueInitExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXStdInitializerListExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXStdInitializerListExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXThisExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXThisExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXThrowExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXThrowExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXTypeidExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXTypeidExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXUnresolvedConstructExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXUnresolvedConstructExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXUuidofExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXUuidofExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CallExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CallExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CastExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CastExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CharacterLiteral>(llvm::iterator_range<clang::StmtIterator> (clang::CharacterLiteral::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ChooseExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ChooseExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CompoundLiteralExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CompoundLiteralExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ConceptSpecializationExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ConceptSpecializationExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ConvertVectorExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ConvertVectorExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CoroutineSuspendExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CoroutineSuspendExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::DeclRefExpr>(llvm::iterator_range<clang::StmtIterator> (clang::DeclRefExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::DependentCoawaitExpr>(llvm::iterator_range<clang::StmtIterator> (clang::DependentCoawaitExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::DependentScopeDeclRefExpr>(llvm::iterator_range<clang::StmtIterator> (clang::DependentScopeDeclRefExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::DesignatedInitExpr>(llvm::iterator_range<clang::StmtIterator> (clang::DesignatedInitExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::DesignatedInitUpdateExpr>(llvm::iterator_range<clang::StmtIterator> (clang::DesignatedInitUpdateExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ExpressionTraitExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ExpressionTraitExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ExtVectorElementExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ExtVectorElementExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::FixedPointLiteral>(llvm::iterator_range<clang::StmtIterator> (clang::FixedPointLiteral::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::FloatingLiteral>(llvm::iterator_range<clang::StmtIterator> (clang::FloatingLiteral::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ConstantExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ConstantExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ExprWithCleanups>(llvm::iterator_range<clang::StmtIterator> (clang::ExprWithCleanups::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::FunctionParmPackExpr>(llvm::iterator_range<clang::StmtIterator> (clang::FunctionParmPackExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::GNUNullExpr>(llvm::iterator_range<clang::StmtIterator> (clang::GNUNullExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::GenericSelectionExpr>(llvm::iterator_range<clang::StmtIterator> (clang::GenericSelectionExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ImaginaryLiteral>(llvm::iterator_range<clang::StmtIterator> (clang::ImaginaryLiteral::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ImplicitValueInitExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ImplicitValueInitExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::InitListExpr>(llvm::iterator_range<clang::StmtIterator> (clang::InitListExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::IntegerLiteral>(llvm::iterator_range<clang::StmtIterator> (clang::IntegerLiteral::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::LambdaExpr>(llvm::iterator_range<clang::StmtIterator> (clang::LambdaExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::MSPropertyRefExpr>(llvm::iterator_range<clang::StmtIterator> (clang::MSPropertyRefExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::MSPropertySubscriptExpr>(llvm::iterator_range<clang::StmtIterator> (clang::MSPropertySubscriptExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::MaterializeTemporaryExpr>(llvm::iterator_range<clang::StmtIterator> (clang::MaterializeTemporaryExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::MatrixSubscriptExpr>(llvm::iterator_range<clang::StmtIterator> (clang::MatrixSubscriptExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::MemberExpr>(llvm::iterator_range<clang::StmtIterator> (clang::MemberExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::NoInitExpr>(llvm::iterator_range<clang::StmtIterator> (clang::NoInitExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::OMPArraySectionExpr>(llvm::iterator_range<clang::StmtIterator> (clang::OMPArraySectionExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::OMPArrayShapingExpr>(llvm::iterator_range<clang::StmtIterator> (clang::OMPArrayShapingExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::OMPIteratorExpr>(llvm::iterator_range<clang::StmtIterator> (clang::OMPIteratorExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCArrayLiteral>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCArrayLiteral::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCAvailabilityCheckExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCAvailabilityCheckExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCBoolLiteralExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCBoolLiteralExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCBoxedExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCBoxedExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCDictionaryLiteral>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCDictionaryLiteral::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCEncodeExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCEncodeExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCIndirectCopyRestoreExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCIndirectCopyRestoreExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCIsaExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCIsaExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCIvarRefExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCIvarRefExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCMessageExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCMessageExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCPropertyRefExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCPropertyRefExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCProtocolExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCProtocolExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCSelectorExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCSelectorExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCStringLiteral>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCStringLiteral::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCSubscriptRefExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCSubscriptRefExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::OffsetOfExpr>(llvm::iterator_range<clang::StmtIterator> (clang::OffsetOfExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::OpaqueValueExpr>(llvm::iterator_range<clang::StmtIterator> (clang::OpaqueValueExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::UnresolvedLookupExpr>(llvm::iterator_range<clang::StmtIterator> (clang::UnresolvedLookupExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::UnresolvedMemberExpr>(llvm::iterator_range<clang::StmtIterator> (clang::UnresolvedMemberExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::PackExpansionExpr>(llvm::iterator_range<clang::StmtIterator> (clang::PackExpansionExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ParenExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ParenExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ParenListExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ParenListExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::PredefinedExpr>(llvm::iterator_range<clang::StmtIterator> (clang::PredefinedExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::PseudoObjectExpr>(llvm::iterator_range<clang::StmtIterator> (clang::PseudoObjectExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::RecoveryExpr>(llvm::iterator_range<clang::StmtIterator> (clang::RecoveryExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::RequiresExpr>(llvm::iterator_range<clang::StmtIterator> (clang::RequiresExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::SYCLUniqueStableNameExpr>(llvm::iterator_range<clang::StmtIterator> (clang::SYCLUniqueStableNameExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ShuffleVectorExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ShuffleVectorExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::SizeOfPackExpr>(llvm::iterator_range<clang::StmtIterator> (clang::SizeOfPackExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::SourceLocExpr>(llvm::iterator_range<clang::StmtIterator> (clang::SourceLocExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::StmtExpr>(llvm::iterator_range<clang::StmtIterator> (clang::StmtExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::StringLiteral>(llvm::iterator_range<clang::StmtIterator> (clang::StringLiteral::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::SubstNonTypeTemplateParmExpr>(llvm::iterator_range<clang::StmtIterator> (clang::SubstNonTypeTemplateParmExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::SubstNonTypeTemplateParmPackExpr>(llvm::iterator_range<clang::StmtIterator> (clang::SubstNonTypeTemplateParmPackExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::TypeTraitExpr>(llvm::iterator_range<clang::StmtIterator> (clang::TypeTraitExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::TypoExpr>(llvm::iterator_range<clang::StmtIterator> (clang::TypoExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::UnaryExprOrTypeTraitExpr>(llvm::iterator_range<clang::StmtIterator> (clang::UnaryExprOrTypeTraitExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::UnaryOperator>(llvm::iterator_range<clang::StmtIterator> (clang::UnaryOperator::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::VAArgExpr>(llvm::iterator_range<clang::StmtIterator> (clang::VAArgExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::LabelStmt>(llvm::iterator_range<clang::StmtIterator> (clang::LabelStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::WhileStmt>(llvm::iterator_range<clang::StmtIterator> (clang::WhileStmt::*)())
245
  LLVM_ATTRIBUTE_UNUSED
246
0
  static bad implements_children(children_t Stmt::*) {
247
0
    return bad();
248
0
  }
249
250
  typedef SourceLocation getBeginLoc_t() const;
251
0
  template <class T> good implements_getBeginLoc(getBeginLoc_t T::*) {
252
0
    return good();
253
0
  }
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::GCCAsmStmt>(clang::SourceLocation (clang::GCCAsmStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::MSAsmStmt>(clang::SourceLocation (clang::MSAsmStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::BreakStmt>(clang::SourceLocation (clang::BreakStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXCatchStmt>(clang::SourceLocation (clang::CXXCatchStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXForRangeStmt>(clang::SourceLocation (clang::CXXForRangeStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXTryStmt>(clang::SourceLocation (clang::CXXTryStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CapturedStmt>(clang::SourceLocation (clang::CapturedStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CompoundStmt>(clang::SourceLocation (clang::CompoundStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ContinueStmt>(clang::SourceLocation (clang::ContinueStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CoreturnStmt>(clang::SourceLocation (clang::CoreturnStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CoroutineBodyStmt>(clang::SourceLocation (clang::CoroutineBodyStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::DeclStmt>(clang::SourceLocation (clang::DeclStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::DoStmt>(clang::SourceLocation (clang::DoStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ForStmt>(clang::SourceLocation (clang::ForStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::GotoStmt>(clang::SourceLocation (clang::GotoStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::IfStmt>(clang::SourceLocation (clang::IfStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::IndirectGotoStmt>(clang::SourceLocation (clang::IndirectGotoStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::MSDependentExistsStmt>(clang::SourceLocation (clang::MSDependentExistsStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::NullStmt>(clang::SourceLocation (clang::NullStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::OMPCanonicalLoop>(clang::SourceLocation (clang::OMPCanonicalLoop::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::OMPExecutableDirective>(clang::SourceLocation (clang::OMPExecutableDirective::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCAtCatchStmt>(clang::SourceLocation (clang::ObjCAtCatchStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCAtFinallyStmt>(clang::SourceLocation (clang::ObjCAtFinallyStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCAtSynchronizedStmt>(clang::SourceLocation (clang::ObjCAtSynchronizedStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCAtThrowStmt>(clang::SourceLocation (clang::ObjCAtThrowStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCAtTryStmt>(clang::SourceLocation (clang::ObjCAtTryStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCAutoreleasePoolStmt>(clang::SourceLocation (clang::ObjCAutoreleasePoolStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCForCollectionStmt>(clang::SourceLocation (clang::ObjCForCollectionStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ReturnStmt>(clang::SourceLocation (clang::ReturnStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::SEHExceptStmt>(clang::SourceLocation (clang::SEHExceptStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::SEHFinallyStmt>(clang::SourceLocation (clang::SEHFinallyStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::SEHLeaveStmt>(clang::SourceLocation (clang::SEHLeaveStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::SEHTryStmt>(clang::SourceLocation (clang::SEHTryStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CaseStmt>(clang::SourceLocation (clang::CaseStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::DefaultStmt>(clang::SourceLocation (clang::DefaultStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::SwitchStmt>(clang::SourceLocation (clang::SwitchStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::AttributedStmt>(clang::SourceLocation (clang::AttributedStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::BinaryConditionalOperator>(clang::SourceLocation (clang::BinaryConditionalOperator::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ConditionalOperator>(clang::SourceLocation (clang::ConditionalOperator::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::AddrLabelExpr>(clang::SourceLocation (clang::AddrLabelExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ArrayInitIndexExpr>(clang::SourceLocation (clang::ArrayInitIndexExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ArrayInitLoopExpr>(clang::SourceLocation (clang::ArrayInitLoopExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ArraySubscriptExpr>(clang::SourceLocation (clang::ArraySubscriptExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ArrayTypeTraitExpr>(clang::SourceLocation (clang::ArrayTypeTraitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::AsTypeExpr>(clang::SourceLocation (clang::AsTypeExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::AtomicExpr>(clang::SourceLocation (clang::AtomicExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::BinaryOperator>(clang::SourceLocation (clang::BinaryOperator::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::BlockExpr>(clang::SourceLocation (clang::BlockExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXBindTemporaryExpr>(clang::SourceLocation (clang::CXXBindTemporaryExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXBoolLiteralExpr>(clang::SourceLocation (clang::CXXBoolLiteralExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXConstructExpr>(clang::SourceLocation (clang::CXXConstructExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXTemporaryObjectExpr>(clang::SourceLocation (clang::CXXTemporaryObjectExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXDefaultArgExpr>(clang::SourceLocation (clang::CXXDefaultArgExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXDefaultInitExpr>(clang::SourceLocation (clang::CXXDefaultInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXDeleteExpr>(clang::SourceLocation (clang::CXXDeleteExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXDependentScopeMemberExpr>(clang::SourceLocation (clang::CXXDependentScopeMemberExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXFoldExpr>(clang::SourceLocation (clang::CXXFoldExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXInheritedCtorInitExpr>(clang::SourceLocation (clang::CXXInheritedCtorInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXNewExpr>(clang::SourceLocation (clang::CXXNewExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXNoexceptExpr>(clang::SourceLocation (clang::CXXNoexceptExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXNullPtrLiteralExpr>(clang::SourceLocation (clang::CXXNullPtrLiteralExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXPseudoDestructorExpr>(clang::SourceLocation (clang::CXXPseudoDestructorExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXRewrittenBinaryOperator>(clang::SourceLocation (clang::CXXRewrittenBinaryOperator::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXScalarValueInitExpr>(clang::SourceLocation (clang::CXXScalarValueInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXStdInitializerListExpr>(clang::SourceLocation (clang::CXXStdInitializerListExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXThisExpr>(clang::SourceLocation (clang::CXXThisExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXThrowExpr>(clang::SourceLocation (clang::CXXThrowExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXTypeidExpr>(clang::SourceLocation (clang::CXXTypeidExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXUnresolvedConstructExpr>(clang::SourceLocation (clang::CXXUnresolvedConstructExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXUuidofExpr>(clang::SourceLocation (clang::CXXUuidofExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CallExpr>(clang::SourceLocation (clang::CallExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXOperatorCallExpr>(clang::SourceLocation (clang::CXXOperatorCallExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::UserDefinedLiteral>(clang::SourceLocation (clang::UserDefinedLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::BuiltinBitCastExpr>(clang::SourceLocation (clang::BuiltinBitCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CStyleCastExpr>(clang::SourceLocation (clang::CStyleCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXFunctionalCastExpr>(clang::SourceLocation (clang::CXXFunctionalCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXNamedCastExpr>(clang::SourceLocation (clang::CXXNamedCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCBridgedCastExpr>(clang::SourceLocation (clang::ObjCBridgedCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ImplicitCastExpr>(clang::SourceLocation (clang::ImplicitCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CharacterLiteral>(clang::SourceLocation (clang::CharacterLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ChooseExpr>(clang::SourceLocation (clang::ChooseExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CompoundLiteralExpr>(clang::SourceLocation (clang::CompoundLiteralExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ConceptSpecializationExpr>(clang::SourceLocation (clang::ConceptSpecializationExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ConvertVectorExpr>(clang::SourceLocation (clang::ConvertVectorExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CoroutineSuspendExpr>(clang::SourceLocation (clang::CoroutineSuspendExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::DeclRefExpr>(clang::SourceLocation (clang::DeclRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::DependentCoawaitExpr>(clang::SourceLocation (clang::DependentCoawaitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::DependentScopeDeclRefExpr>(clang::SourceLocation (clang::DependentScopeDeclRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::DesignatedInitExpr>(clang::SourceLocation (clang::DesignatedInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::DesignatedInitUpdateExpr>(clang::SourceLocation (clang::DesignatedInitUpdateExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ExpressionTraitExpr>(clang::SourceLocation (clang::ExpressionTraitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ExtVectorElementExpr>(clang::SourceLocation (clang::ExtVectorElementExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::FixedPointLiteral>(clang::SourceLocation (clang::FixedPointLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::FloatingLiteral>(clang::SourceLocation (clang::FloatingLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ConstantExpr>(clang::SourceLocation (clang::ConstantExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ExprWithCleanups>(clang::SourceLocation (clang::ExprWithCleanups::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::FunctionParmPackExpr>(clang::SourceLocation (clang::FunctionParmPackExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::GNUNullExpr>(clang::SourceLocation (clang::GNUNullExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::GenericSelectionExpr>(clang::SourceLocation (clang::GenericSelectionExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ImaginaryLiteral>(clang::SourceLocation (clang::ImaginaryLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ImplicitValueInitExpr>(clang::SourceLocation (clang::ImplicitValueInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::InitListExpr>(clang::SourceLocation (clang::InitListExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::IntegerLiteral>(clang::SourceLocation (clang::IntegerLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::LambdaExpr>(clang::SourceLocation (clang::LambdaExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::MSPropertyRefExpr>(clang::SourceLocation (clang::MSPropertyRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::MSPropertySubscriptExpr>(clang::SourceLocation (clang::MSPropertySubscriptExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::MaterializeTemporaryExpr>(clang::SourceLocation (clang::MaterializeTemporaryExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::MatrixSubscriptExpr>(clang::SourceLocation (clang::MatrixSubscriptExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::MemberExpr>(clang::SourceLocation (clang::MemberExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::NoInitExpr>(clang::SourceLocation (clang::NoInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::OMPArraySectionExpr>(clang::SourceLocation (clang::OMPArraySectionExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::OMPArrayShapingExpr>(clang::SourceLocation (clang::OMPArrayShapingExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::OMPIteratorExpr>(clang::SourceLocation (clang::OMPIteratorExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCArrayLiteral>(clang::SourceLocation (clang::ObjCArrayLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCAvailabilityCheckExpr>(clang::SourceLocation (clang::ObjCAvailabilityCheckExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCBoolLiteralExpr>(clang::SourceLocation (clang::ObjCBoolLiteralExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCBoxedExpr>(clang::SourceLocation (clang::ObjCBoxedExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCDictionaryLiteral>(clang::SourceLocation (clang::ObjCDictionaryLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCEncodeExpr>(clang::SourceLocation (clang::ObjCEncodeExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCIndirectCopyRestoreExpr>(clang::SourceLocation (clang::ObjCIndirectCopyRestoreExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCIsaExpr>(clang::SourceLocation (clang::ObjCIsaExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCIvarRefExpr>(clang::SourceLocation (clang::ObjCIvarRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCMessageExpr>(clang::SourceLocation (clang::ObjCMessageExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCPropertyRefExpr>(clang::SourceLocation (clang::ObjCPropertyRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCProtocolExpr>(clang::SourceLocation (clang::ObjCProtocolExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCSelectorExpr>(clang::SourceLocation (clang::ObjCSelectorExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCStringLiteral>(clang::SourceLocation (clang::ObjCStringLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCSubscriptRefExpr>(clang::SourceLocation (clang::ObjCSubscriptRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::OffsetOfExpr>(clang::SourceLocation (clang::OffsetOfExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::OpaqueValueExpr>(clang::SourceLocation (clang::OpaqueValueExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::UnresolvedLookupExpr>(clang::SourceLocation (clang::UnresolvedLookupExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::UnresolvedMemberExpr>(clang::SourceLocation (clang::UnresolvedMemberExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::PackExpansionExpr>(clang::SourceLocation (clang::PackExpansionExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ParenExpr>(clang::SourceLocation (clang::ParenExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ParenListExpr>(clang::SourceLocation (clang::ParenListExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::PredefinedExpr>(clang::SourceLocation (clang::PredefinedExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::PseudoObjectExpr>(clang::SourceLocation (clang::PseudoObjectExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::RecoveryExpr>(clang::SourceLocation (clang::RecoveryExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::RequiresExpr>(clang::SourceLocation (clang::RequiresExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::SYCLUniqueStableNameExpr>(clang::SourceLocation (clang::SYCLUniqueStableNameExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ShuffleVectorExpr>(clang::SourceLocation (clang::ShuffleVectorExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::SizeOfPackExpr>(clang::SourceLocation (clang::SizeOfPackExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::SourceLocExpr>(clang::SourceLocation (clang::SourceLocExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::StmtExpr>(clang::SourceLocation (clang::StmtExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::StringLiteral>(clang::SourceLocation (clang::StringLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::SubstNonTypeTemplateParmExpr>(clang::SourceLocation (clang::SubstNonTypeTemplateParmExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::SubstNonTypeTemplateParmPackExpr>(clang::SourceLocation (clang::SubstNonTypeTemplateParmPackExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::TypeTraitExpr>(clang::SourceLocation (clang::TypeTraitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::TypoExpr>(clang::SourceLocation (clang::TypoExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::UnaryExprOrTypeTraitExpr>(clang::SourceLocation (clang::UnaryExprOrTypeTraitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::UnaryOperator>(clang::SourceLocation (clang::UnaryOperator::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::VAArgExpr>(clang::SourceLocation (clang::VAArgExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::LabelStmt>(clang::SourceLocation (clang::LabelStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::WhileStmt>(clang::SourceLocation (clang::WhileStmt::*)() const)
254
  LLVM_ATTRIBUTE_UNUSED
255
0
  static bad implements_getBeginLoc(getBeginLoc_t Stmt::*) { return bad(); }
256
257
  typedef SourceLocation getLocEnd_t() const;
258
0
  template <class T> good implements_getEndLoc(getLocEnd_t T::*) {
259
0
    return good();
260
0
  }
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::GCCAsmStmt>(clang::SourceLocation (clang::GCCAsmStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::MSAsmStmt>(clang::SourceLocation (clang::MSAsmStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::BreakStmt>(clang::SourceLocation (clang::BreakStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXCatchStmt>(clang::SourceLocation (clang::CXXCatchStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXForRangeStmt>(clang::SourceLocation (clang::CXXForRangeStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXTryStmt>(clang::SourceLocation (clang::CXXTryStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CapturedStmt>(clang::SourceLocation (clang::CapturedStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CompoundStmt>(clang::SourceLocation (clang::CompoundStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ContinueStmt>(clang::SourceLocation (clang::ContinueStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CoreturnStmt>(clang::SourceLocation (clang::CoreturnStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CoroutineBodyStmt>(clang::SourceLocation (clang::CoroutineBodyStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::DeclStmt>(clang::SourceLocation (clang::DeclStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::DoStmt>(clang::SourceLocation (clang::DoStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ForStmt>(clang::SourceLocation (clang::ForStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::GotoStmt>(clang::SourceLocation (clang::GotoStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::IfStmt>(clang::SourceLocation (clang::IfStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::IndirectGotoStmt>(clang::SourceLocation (clang::IndirectGotoStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::MSDependentExistsStmt>(clang::SourceLocation (clang::MSDependentExistsStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::NullStmt>(clang::SourceLocation (clang::NullStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::OMPCanonicalLoop>(clang::SourceLocation (clang::OMPCanonicalLoop::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::OMPExecutableDirective>(clang::SourceLocation (clang::OMPExecutableDirective::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCAtCatchStmt>(clang::SourceLocation (clang::ObjCAtCatchStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCAtFinallyStmt>(clang::SourceLocation (clang::ObjCAtFinallyStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCAtSynchronizedStmt>(clang::SourceLocation (clang::ObjCAtSynchronizedStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCAtThrowStmt>(clang::SourceLocation (clang::ObjCAtThrowStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCAtTryStmt>(clang::SourceLocation (clang::ObjCAtTryStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCAutoreleasePoolStmt>(clang::SourceLocation (clang::ObjCAutoreleasePoolStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCForCollectionStmt>(clang::SourceLocation (clang::ObjCForCollectionStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ReturnStmt>(clang::SourceLocation (clang::ReturnStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::SEHExceptStmt>(clang::SourceLocation (clang::SEHExceptStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::SEHFinallyStmt>(clang::SourceLocation (clang::SEHFinallyStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::SEHLeaveStmt>(clang::SourceLocation (clang::SEHLeaveStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::SEHTryStmt>(clang::SourceLocation (clang::SEHTryStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CaseStmt>(clang::SourceLocation (clang::CaseStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::DefaultStmt>(clang::SourceLocation (clang::DefaultStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::SwitchStmt>(clang::SourceLocation (clang::SwitchStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::AttributedStmt>(clang::SourceLocation (clang::AttributedStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::BinaryConditionalOperator>(clang::SourceLocation (clang::BinaryConditionalOperator::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ConditionalOperator>(clang::SourceLocation (clang::ConditionalOperator::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::AddrLabelExpr>(clang::SourceLocation (clang::AddrLabelExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ArrayInitIndexExpr>(clang::SourceLocation (clang::ArrayInitIndexExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ArrayInitLoopExpr>(clang::SourceLocation (clang::ArrayInitLoopExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ArraySubscriptExpr>(clang::SourceLocation (clang::ArraySubscriptExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ArrayTypeTraitExpr>(clang::SourceLocation (clang::ArrayTypeTraitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::AsTypeExpr>(clang::SourceLocation (clang::AsTypeExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::AtomicExpr>(clang::SourceLocation (clang::AtomicExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::BinaryOperator>(clang::SourceLocation (clang::BinaryOperator::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::BlockExpr>(clang::SourceLocation (clang::BlockExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXBindTemporaryExpr>(clang::SourceLocation (clang::CXXBindTemporaryExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXBoolLiteralExpr>(clang::SourceLocation (clang::CXXBoolLiteralExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXConstructExpr>(clang::SourceLocation (clang::CXXConstructExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXTemporaryObjectExpr>(clang::SourceLocation (clang::CXXTemporaryObjectExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXDefaultArgExpr>(clang::SourceLocation (clang::CXXDefaultArgExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXDefaultInitExpr>(clang::SourceLocation (clang::CXXDefaultInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXDeleteExpr>(clang::SourceLocation (clang::CXXDeleteExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXDependentScopeMemberExpr>(clang::SourceLocation (clang::CXXDependentScopeMemberExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXFoldExpr>(clang::SourceLocation (clang::CXXFoldExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXInheritedCtorInitExpr>(clang::SourceLocation (clang::CXXInheritedCtorInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXNewExpr>(clang::SourceLocation (clang::CXXNewExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXNoexceptExpr>(clang::SourceLocation (clang::CXXNoexceptExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXNullPtrLiteralExpr>(clang::SourceLocation (clang::CXXNullPtrLiteralExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXPseudoDestructorExpr>(clang::SourceLocation (clang::CXXPseudoDestructorExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXRewrittenBinaryOperator>(clang::SourceLocation (clang::CXXRewrittenBinaryOperator::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXScalarValueInitExpr>(clang::SourceLocation (clang::CXXScalarValueInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXStdInitializerListExpr>(clang::SourceLocation (clang::CXXStdInitializerListExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXThisExpr>(clang::SourceLocation (clang::CXXThisExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXThrowExpr>(clang::SourceLocation (clang::CXXThrowExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXTypeidExpr>(clang::SourceLocation (clang::CXXTypeidExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXUnresolvedConstructExpr>(clang::SourceLocation (clang::CXXUnresolvedConstructExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXUuidofExpr>(clang::SourceLocation (clang::CXXUuidofExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CallExpr>(clang::SourceLocation (clang::CallExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXOperatorCallExpr>(clang::SourceLocation (clang::CXXOperatorCallExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::UserDefinedLiteral>(clang::SourceLocation (clang::UserDefinedLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::BuiltinBitCastExpr>(clang::SourceLocation (clang::BuiltinBitCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CStyleCastExpr>(clang::SourceLocation (clang::CStyleCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXFunctionalCastExpr>(clang::SourceLocation (clang::CXXFunctionalCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXNamedCastExpr>(clang::SourceLocation (clang::CXXNamedCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCBridgedCastExpr>(clang::SourceLocation (clang::ObjCBridgedCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ImplicitCastExpr>(clang::SourceLocation (clang::ImplicitCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CharacterLiteral>(clang::SourceLocation (clang::CharacterLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ChooseExpr>(clang::SourceLocation (clang::ChooseExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CompoundLiteralExpr>(clang::SourceLocation (clang::CompoundLiteralExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ConceptSpecializationExpr>(clang::SourceLocation (clang::ConceptSpecializationExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ConvertVectorExpr>(clang::SourceLocation (clang::ConvertVectorExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CoroutineSuspendExpr>(clang::SourceLocation (clang::CoroutineSuspendExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::DeclRefExpr>(clang::SourceLocation (clang::DeclRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::DependentCoawaitExpr>(clang::SourceLocation (clang::DependentCoawaitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::DependentScopeDeclRefExpr>(clang::SourceLocation (clang::DependentScopeDeclRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::DesignatedInitExpr>(clang::SourceLocation (clang::DesignatedInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::DesignatedInitUpdateExpr>(clang::SourceLocation (clang::DesignatedInitUpdateExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ExpressionTraitExpr>(clang::SourceLocation (clang::ExpressionTraitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ExtVectorElementExpr>(clang::SourceLocation (clang::ExtVectorElementExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::FixedPointLiteral>(clang::SourceLocation (clang::FixedPointLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::FloatingLiteral>(clang::SourceLocation (clang::FloatingLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ConstantExpr>(clang::SourceLocation (clang::ConstantExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ExprWithCleanups>(clang::SourceLocation (clang::ExprWithCleanups::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::FunctionParmPackExpr>(clang::SourceLocation (clang::FunctionParmPackExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::GNUNullExpr>(clang::SourceLocation (clang::GNUNullExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::GenericSelectionExpr>(clang::SourceLocation (clang::GenericSelectionExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ImaginaryLiteral>(clang::SourceLocation (clang::ImaginaryLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ImplicitValueInitExpr>(clang::SourceLocation (clang::ImplicitValueInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::InitListExpr>(clang::SourceLocation (clang::InitListExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::IntegerLiteral>(clang::SourceLocation (clang::IntegerLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::LambdaExpr>(clang::SourceLocation (clang::LambdaExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::MSPropertyRefExpr>(clang::SourceLocation (clang::MSPropertyRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::MSPropertySubscriptExpr>(clang::SourceLocation (clang::MSPropertySubscriptExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::MaterializeTemporaryExpr>(clang::SourceLocation (clang::MaterializeTemporaryExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::MatrixSubscriptExpr>(clang::SourceLocation (clang::MatrixSubscriptExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::MemberExpr>(clang::SourceLocation (clang::MemberExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::NoInitExpr>(clang::SourceLocation (clang::NoInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::OMPArraySectionExpr>(clang::SourceLocation (clang::OMPArraySectionExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::OMPArrayShapingExpr>(clang::SourceLocation (clang::OMPArrayShapingExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::OMPIteratorExpr>(clang::SourceLocation (clang::OMPIteratorExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCArrayLiteral>(clang::SourceLocation (clang::ObjCArrayLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCAvailabilityCheckExpr>(clang::SourceLocation (clang::ObjCAvailabilityCheckExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCBoolLiteralExpr>(clang::SourceLocation (clang::ObjCBoolLiteralExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCBoxedExpr>(clang::SourceLocation (clang::ObjCBoxedExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCDictionaryLiteral>(clang::SourceLocation (clang::ObjCDictionaryLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCEncodeExpr>(clang::SourceLocation (clang::ObjCEncodeExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCIndirectCopyRestoreExpr>(clang::SourceLocation (clang::ObjCIndirectCopyRestoreExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCIsaExpr>(clang::SourceLocation (clang::ObjCIsaExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCIvarRefExpr>(clang::SourceLocation (clang::ObjCIvarRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCMessageExpr>(clang::SourceLocation (clang::ObjCMessageExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCPropertyRefExpr>(clang::SourceLocation (clang::ObjCPropertyRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCProtocolExpr>(clang::SourceLocation (clang::ObjCProtocolExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCSelectorExpr>(clang::SourceLocation (clang::ObjCSelectorExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCStringLiteral>(clang::SourceLocation (clang::ObjCStringLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCSubscriptRefExpr>(clang::SourceLocation (clang::ObjCSubscriptRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::OffsetOfExpr>(clang::SourceLocation (clang::OffsetOfExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::OpaqueValueExpr>(clang::SourceLocation (clang::OpaqueValueExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::UnresolvedLookupExpr>(clang::SourceLocation (clang::UnresolvedLookupExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::UnresolvedMemberExpr>(clang::SourceLocation (clang::UnresolvedMemberExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::PackExpansionExpr>(clang::SourceLocation (clang::PackExpansionExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ParenExpr>(clang::SourceLocation (clang::ParenExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ParenListExpr>(clang::SourceLocation (clang::ParenListExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::PredefinedExpr>(clang::SourceLocation (clang::PredefinedExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::PseudoObjectExpr>(clang::SourceLocation (clang::PseudoObjectExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::RecoveryExpr>(clang::SourceLocation (clang::RecoveryExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::RequiresExpr>(clang::SourceLocation (clang::RequiresExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::SYCLUniqueStableNameExpr>(clang::SourceLocation (clang::SYCLUniqueStableNameExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ShuffleVectorExpr>(clang::SourceLocation (clang::ShuffleVectorExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::SizeOfPackExpr>(clang::SourceLocation (clang::SizeOfPackExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::SourceLocExpr>(clang::SourceLocation (clang::SourceLocExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::StmtExpr>(clang::SourceLocation (clang::StmtExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::StringLiteral>(clang::SourceLocation (clang::StringLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::SubstNonTypeTemplateParmExpr>(clang::SourceLocation (clang::SubstNonTypeTemplateParmExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::SubstNonTypeTemplateParmPackExpr>(clang::SourceLocation (clang::SubstNonTypeTemplateParmPackExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::TypeTraitExpr>(clang::SourceLocation (clang::TypeTraitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::TypoExpr>(clang::SourceLocation (clang::TypoExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::UnaryExprOrTypeTraitExpr>(clang::SourceLocation (clang::UnaryExprOrTypeTraitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::UnaryOperator>(clang::SourceLocation (clang::UnaryOperator::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::VAArgExpr>(clang::SourceLocation (clang::VAArgExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::LabelStmt>(clang::SourceLocation (clang::LabelStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::WhileStmt>(clang::SourceLocation (clang::WhileStmt::*)() const)
261
  LLVM_ATTRIBUTE_UNUSED
262
0
  static bad implements_getEndLoc(getLocEnd_t Stmt::*) { return bad(); }
263
264
#define ASSERT_IMPLEMENTS_children(type) \
265
  (void) is_good(implements_children(&type::children))
266
#define ASSERT_IMPLEMENTS_getBeginLoc(type)                                    \
267
  (void)is_good(implements_getBeginLoc(&type::getBeginLoc))
268
#define ASSERT_IMPLEMENTS_getEndLoc(type)                                      \
269
  (void)is_good(implements_getEndLoc(&type::getEndLoc))
270
271
} // namespace
272
273
/// Check whether the various Stmt classes implement their member
274
/// functions.
275
LLVM_ATTRIBUTE_UNUSED
276
0
static inline void check_implementations() {
277
0
#define ABSTRACT_STMT(type)
278
0
#define STMT(type, base)                                                       \
279
0
  ASSERT_IMPLEMENTS_children(type);                                            \
280
0
  ASSERT_IMPLEMENTS_getBeginLoc(type);                                         \
281
0
  ASSERT_IMPLEMENTS_getEndLoc(type);
282
0
#include "clang/AST/StmtNodes.inc"
283
0
}
284
285
107M
Stmt::child_range Stmt::children() {
286
107M
  switch (getStmtClass()) {
287
0
  case Stmt::NoStmtClass: llvm_unreachable("statement without class");
288
0
#define ABSTRACT_STMT(type)
289
0
#define STMT(type, base) \
290
107M
  case Stmt::type##Class: \
291
107M
    return static_cast<type*>(this)->children();
292
107M
#include 
"clang/AST/StmtNodes.inc"0
293
107M
  }
294
0
  llvm_unreachable("unknown statement kind!");
295
0
}
296
297
// Amusing macro metaprogramming hack: check whether a class provides
298
// a more specific implementation of getSourceRange.
299
//
300
// See also Expr.cpp:getExprLoc().
301
namespace {
302
303
  /// This implementation is used when a class provides a custom
304
  /// implementation of getSourceRange.
305
  template <class S, class T>
306
  SourceRange getSourceRangeImpl(const Stmt *stmt,
307
74.2k
                                 SourceRange (T::*v)() const) {
308
74.2k
    return static_cast<const S*>(stmt)->getSourceRange();
309
74.2k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CapturedStmt, clang::CapturedStmt>(clang::Stmt const*, clang::SourceRange (clang::CapturedStmt::*)() const)
Line
Count
Source
307
10.6k
                                 SourceRange (T::*v)() const) {
308
10.6k
    return static_cast<const S*>(stmt)->getSourceRange();
309
10.6k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXNewExpr, clang::CXXNewExpr>(clang::Stmt const*, clang::SourceRange (clang::CXXNewExpr::*)() const)
Line
Count
Source
307
9.13k
                                 SourceRange (T::*v)() const) {
308
9.13k
    return static_cast<const S*>(stmt)->getSourceRange();
309
9.13k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXNoexceptExpr, clang::CXXNoexceptExpr>(clang::Stmt const*, clang::SourceRange (clang::CXXNoexceptExpr::*)() const)
Line
Count
Source
307
11
                                 SourceRange (T::*v)() const) {
308
11
    return static_cast<const S*>(stmt)->getSourceRange();
309
11
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXRewrittenBinaryOperator, clang::CXXRewrittenBinaryOperator>(clang::Stmt const*, clang::SourceRange (clang::CXXRewrittenBinaryOperator::*)() const)
Line
Count
Source
307
21
                                 SourceRange (T::*v)() const) {
308
21
    return static_cast<const S*>(stmt)->getSourceRange();
309
21
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXStdInitializerListExpr, clang::CXXStdInitializerListExpr>(clang::Stmt const*, clang::SourceRange (clang::CXXStdInitializerListExpr::*)() const)
Line
Count
Source
307
57
                                 SourceRange (T::*v)() const) {
308
57
    return static_cast<const S*>(stmt)->getSourceRange();
309
57
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXTypeidExpr, clang::CXXTypeidExpr>(clang::Stmt const*, clang::SourceRange (clang::CXXTypeidExpr::*)() const)
Line
Count
Source
307
1.31k
                                 SourceRange (T::*v)() const) {
308
1.31k
    return static_cast<const S*>(stmt)->getSourceRange();
309
1.31k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXUuidofExpr, clang::CXXUuidofExpr>(clang::Stmt const*, clang::SourceRange (clang::CXXUuidofExpr::*)() const)
Line
Count
Source
307
45
                                 SourceRange (T::*v)() const) {
308
45
    return static_cast<const S*>(stmt)->getSourceRange();
309
45
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXOperatorCallExpr, clang::CXXOperatorCallExpr>(clang::Stmt const*, clang::SourceRange (clang::CXXOperatorCallExpr::*)() const)
Line
Count
Source
307
51.6k
                                 SourceRange (T::*v)() const) {
308
51.6k
    return static_cast<const S*>(stmt)->getSourceRange();
309
51.6k
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::MSPropertyRefExpr, clang::MSPropertyRefExpr>(clang::Stmt const*, clang::SourceRange (clang::MSPropertyRefExpr::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCArrayLiteral, clang::ObjCArrayLiteral>(clang::Stmt const*, clang::SourceRange (clang::ObjCArrayLiteral::*)() const)
Line
Count
Source
307
431
                                 SourceRange (T::*v)() const) {
308
431
    return static_cast<const S*>(stmt)->getSourceRange();
309
431
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCAvailabilityCheckExpr, clang::ObjCAvailabilityCheckExpr>(clang::Stmt const*, clang::SourceRange (clang::ObjCAvailabilityCheckExpr::*)() const)
Line
Count
Source
307
22
                                 SourceRange (T::*v)() const) {
308
22
    return static_cast<const S*>(stmt)->getSourceRange();
309
22
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCBoxedExpr, clang::ObjCBoxedExpr>(clang::Stmt const*, clang::SourceRange (clang::ObjCBoxedExpr::*)() const)
Line
Count
Source
307
702
                                 SourceRange (T::*v)() const) {
308
702
    return static_cast<const S*>(stmt)->getSourceRange();
309
702
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCDictionaryLiteral, clang::ObjCDictionaryLiteral>(clang::Stmt const*, clang::SourceRange (clang::ObjCDictionaryLiteral::*)() const)
Line
Count
Source
307
162
                                 SourceRange (T::*v)() const) {
308
162
    return static_cast<const S*>(stmt)->getSourceRange();
309
162
  }
310
311
  /// This implementation is used when a class doesn't provide a custom
312
  /// implementation of getSourceRange.  Overload resolution should pick it over
313
  /// the implementation above because it's more specialized according to
314
  /// function template partial ordering.
315
  template <class S>
316
  SourceRange getSourceRangeImpl(const Stmt *stmt,
317
15.6M
                                 SourceRange (Stmt::*v)() const) {
318
15.6M
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
15.6M
                       static_cast<const S *>(stmt)->getEndLoc());
320
15.6M
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::GCCAsmStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
12
                                 SourceRange (Stmt::*v)() const) {
318
12
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
12
                       static_cast<const S *>(stmt)->getEndLoc());
320
12
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::MSAsmStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::BreakStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
204
                                 SourceRange (Stmt::*v)() const) {
318
204
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
204
                       static_cast<const S *>(stmt)->getEndLoc());
320
204
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXCatchStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
158
                                 SourceRange (Stmt::*v)() const) {
318
158
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
158
                       static_cast<const S *>(stmt)->getEndLoc());
320
158
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXForRangeStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
626
                                 SourceRange (Stmt::*v)() const) {
318
626
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
626
                       static_cast<const S *>(stmt)->getEndLoc());
320
626
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXTryStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
181
                                 SourceRange (Stmt::*v)() const) {
318
181
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
181
                       static_cast<const S *>(stmt)->getEndLoc());
320
181
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CompoundStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
546k
                                 SourceRange (Stmt::*v)() const) {
318
546k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
546k
                       static_cast<const S *>(stmt)->getEndLoc());
320
546k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ContinueStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
31
                                 SourceRange (Stmt::*v)() const) {
318
31
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
31
                       static_cast<const S *>(stmt)->getEndLoc());
320
31
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CoreturnStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
20
                                 SourceRange (Stmt::*v)() const) {
318
20
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
20
                       static_cast<const S *>(stmt)->getEndLoc());
320
20
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CoroutineBodyStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
132
                                 SourceRange (Stmt::*v)() const) {
318
132
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
132
                       static_cast<const S *>(stmt)->getEndLoc());
320
132
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::DeclStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
447k
                                 SourceRange (Stmt::*v)() const) {
318
447k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
447k
                       static_cast<const S *>(stmt)->getEndLoc());
320
447k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::DoStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
903
                                 SourceRange (Stmt::*v)() const) {
318
903
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
903
                       static_cast<const S *>(stmt)->getEndLoc());
320
903
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ForStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
68.0k
                                 SourceRange (Stmt::*v)() const) {
318
68.0k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
68.0k
                       static_cast<const S *>(stmt)->getEndLoc());
320
68.0k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::GotoStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
40
                                 SourceRange (Stmt::*v)() const) {
318
40
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
40
                       static_cast<const S *>(stmt)->getEndLoc());
320
40
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::IfStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
8.67k
                                 SourceRange (Stmt::*v)() const) {
318
8.67k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
8.67k
                       static_cast<const S *>(stmt)->getEndLoc());
320
8.67k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::IndirectGotoStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
10
                                 SourceRange (Stmt::*v)() const) {
318
10
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
10
                       static_cast<const S *>(stmt)->getEndLoc());
320
10
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::MSDependentExistsStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
34
                                 SourceRange (Stmt::*v)() const) {
318
34
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
34
                       static_cast<const S *>(stmt)->getEndLoc());
320
34
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::NullStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
1.13k
                                 SourceRange (Stmt::*v)() const) {
318
1.13k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
1.13k
                       static_cast<const S *>(stmt)->getEndLoc());
320
1.13k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPCanonicalLoop>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
48
                                 SourceRange (Stmt::*v)() const) {
318
48
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
48
                       static_cast<const S *>(stmt)->getEndLoc());
320
48
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPAtomicDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
4.78k
                                 SourceRange (Stmt::*v)() const) {
318
4.78k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
4.78k
                       static_cast<const S *>(stmt)->getEndLoc());
320
4.78k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPBarrierDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
1
                                 SourceRange (Stmt::*v)() const) {
318
1
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
1
                       static_cast<const S *>(stmt)->getEndLoc());
320
1
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPCancelDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
1
                                 SourceRange (Stmt::*v)() const) {
318
1
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
1
                       static_cast<const S *>(stmt)->getEndLoc());
320
1
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPCancellationPointDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
1
                                 SourceRange (Stmt::*v)() const) {
318
1
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
1
                       static_cast<const S *>(stmt)->getEndLoc());
320
1
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPCriticalDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
118
                                 SourceRange (Stmt::*v)() const) {
318
118
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
118
                       static_cast<const S *>(stmt)->getEndLoc());
320
118
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPDepobjDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPDispatchDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
42
                                 SourceRange (Stmt::*v)() const) {
318
42
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
42
                       static_cast<const S *>(stmt)->getEndLoc());
320
42
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPFlushDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
1
                                 SourceRange (Stmt::*v)() const) {
318
1
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
1
                       static_cast<const S *>(stmt)->getEndLoc());
320
1
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPInteropDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
56
                                 SourceRange (Stmt::*v)() const) {
318
56
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
56
                       static_cast<const S *>(stmt)->getEndLoc());
320
56
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPDistributeDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
473
                                 SourceRange (Stmt::*v)() const) {
318
473
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
473
                       static_cast<const S *>(stmt)->getEndLoc());
320
473
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPDistributeParallelForDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
2.45k
                                 SourceRange (Stmt::*v)() const) {
318
2.45k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
2.45k
                       static_cast<const S *>(stmt)->getEndLoc());
320
2.45k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPDistributeParallelForSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
2.18k
                                 SourceRange (Stmt::*v)() const) {
318
2.18k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
2.18k
                       static_cast<const S *>(stmt)->getEndLoc());
320
2.18k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPDistributeSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
815
                                 SourceRange (Stmt::*v)() const) {
318
815
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
815
                       static_cast<const S *>(stmt)->getEndLoc());
320
815
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPForDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
1.40k
                                 SourceRange (Stmt::*v)() const) {
318
1.40k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
1.40k
                       static_cast<const S *>(stmt)->getEndLoc());
320
1.40k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPForSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
1.10k
                                 SourceRange (Stmt::*v)() const) {
318
1.10k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
1.10k
                       static_cast<const S *>(stmt)->getEndLoc());
320
1.10k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPGenericLoopDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
60
                                 SourceRange (Stmt::*v)() const) {
318
60
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
60
                       static_cast<const S *>(stmt)->getEndLoc());
320
60
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPMaskedTaskLoopDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPMaskedTaskLoopSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPMasterTaskLoopDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
213
                                 SourceRange (Stmt::*v)() const) {
318
213
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
213
                       static_cast<const S *>(stmt)->getEndLoc());
320
213
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPMasterTaskLoopSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
287
                                 SourceRange (Stmt::*v)() const) {
318
287
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
287
                       static_cast<const S *>(stmt)->getEndLoc());
320
287
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPParallelForDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
841
                                 SourceRange (Stmt::*v)() const) {
318
841
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
841
                       static_cast<const S *>(stmt)->getEndLoc());
320
841
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPParallelForSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
419
                                 SourceRange (Stmt::*v)() const) {
318
419
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
419
                       static_cast<const S *>(stmt)->getEndLoc());
320
419
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPParallelGenericLoopDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPParallelMaskedTaskLoopDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPParallelMaskedTaskLoopSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPParallelMasterTaskLoopDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
232
                                 SourceRange (Stmt::*v)() const) {
318
232
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
232
                       static_cast<const S *>(stmt)->getEndLoc());
320
232
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPParallelMasterTaskLoopSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
317
                                 SourceRange (Stmt::*v)() const) {
318
317
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
317
                       static_cast<const S *>(stmt)->getEndLoc());
320
317
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
732
                                 SourceRange (Stmt::*v)() const) {
318
732
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
732
                       static_cast<const S *>(stmt)->getEndLoc());
320
732
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetParallelForSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
2.31k
                                 SourceRange (Stmt::*v)() const) {
318
2.31k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
2.31k
                       static_cast<const S *>(stmt)->getEndLoc());
320
2.31k
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetParallelGenericLoopDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
1.93k
                                 SourceRange (Stmt::*v)() const) {
318
1.93k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
1.93k
                       static_cast<const S *>(stmt)->getEndLoc());
320
1.93k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetTeamsDistributeDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
2.39k
                                 SourceRange (Stmt::*v)() const) {
318
2.39k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
2.39k
                       static_cast<const S *>(stmt)->getEndLoc());
320
2.39k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetTeamsDistributeParallelForDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
3.37k
                                 SourceRange (Stmt::*v)() const) {
318
3.37k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
3.37k
                       static_cast<const S *>(stmt)->getEndLoc());
320
3.37k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetTeamsDistributeParallelForSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
4.95k
                                 SourceRange (Stmt::*v)() const) {
318
4.95k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
4.95k
                       static_cast<const S *>(stmt)->getEndLoc());
320
4.95k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetTeamsDistributeSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
2.97k
                                 SourceRange (Stmt::*v)() const) {
318
2.97k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
2.97k
                       static_cast<const S *>(stmt)->getEndLoc());
320
2.97k
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetTeamsGenericLoopDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTaskLoopDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
203
                                 SourceRange (Stmt::*v)() const) {
318
203
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
203
                       static_cast<const S *>(stmt)->getEndLoc());
320
203
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTaskLoopSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
292
                                 SourceRange (Stmt::*v)() const) {
318
292
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
292
                       static_cast<const S *>(stmt)->getEndLoc());
320
292
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTeamsDistributeDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
484
                                 SourceRange (Stmt::*v)() const) {
318
484
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
484
                       static_cast<const S *>(stmt)->getEndLoc());
320
484
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTeamsDistributeParallelForDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
2.06k
                                 SourceRange (Stmt::*v)() const) {
318
2.06k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
2.06k
                       static_cast<const S *>(stmt)->getEndLoc());
320
2.06k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTeamsDistributeParallelForSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
2.28k
                                 SourceRange (Stmt::*v)() const) {
318
2.28k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
2.28k
                       static_cast<const S *>(stmt)->getEndLoc());
320
2.28k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTeamsDistributeSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
674
                                 SourceRange (Stmt::*v)() const) {
318
674
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
674
                       static_cast<const S *>(stmt)->getEndLoc());
320
674
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTeamsGenericLoopDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTileDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
28
                                 SourceRange (Stmt::*v)() const) {
318
28
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
28
                       static_cast<const S *>(stmt)->getEndLoc());
320
28
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPUnrollDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
22
                                 SourceRange (Stmt::*v)() const) {
318
22
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
22
                       static_cast<const S *>(stmt)->getEndLoc());
320
22
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPMaskedDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
52
                                 SourceRange (Stmt::*v)() const) {
318
52
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
52
                       static_cast<const S *>(stmt)->getEndLoc());
320
52
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPMasterDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
32
                                 SourceRange (Stmt::*v)() const) {
318
32
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
32
                       static_cast<const S *>(stmt)->getEndLoc());
320
32
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPMetaDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPOrderedDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
62
                                 SourceRange (Stmt::*v)() const) {
318
62
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
62
                       static_cast<const S *>(stmt)->getEndLoc());
320
62
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPParallelDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
1.99k
                                 SourceRange (Stmt::*v)() const) {
318
1.99k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
1.99k
                       static_cast<const S *>(stmt)->getEndLoc());
320
1.99k
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPParallelMaskedDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPParallelMasterDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
41
                                 SourceRange (Stmt::*v)() const) {
318
41
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
41
                       static_cast<const S *>(stmt)->getEndLoc());
320
41
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPParallelSectionsDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
71
                                 SourceRange (Stmt::*v)() const) {
318
71
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
71
                       static_cast<const S *>(stmt)->getEndLoc());
320
71
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPScanDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
16
                                 SourceRange (Stmt::*v)() const) {
318
16
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
16
                       static_cast<const S *>(stmt)->getEndLoc());
320
16
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPSectionDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
55
                                 SourceRange (Stmt::*v)() const) {
318
55
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
55
                       static_cast<const S *>(stmt)->getEndLoc());
320
55
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPSectionsDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
200
                                 SourceRange (Stmt::*v)() const) {
318
200
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
200
                       static_cast<const S *>(stmt)->getEndLoc());
320
200
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPSingleDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
139
                                 SourceRange (Stmt::*v)() const) {
318
139
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
139
                       static_cast<const S *>(stmt)->getEndLoc());
320
139
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetDataDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
408
                                 SourceRange (Stmt::*v)() const) {
318
408
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
408
                       static_cast<const S *>(stmt)->getEndLoc());
320
408
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
8.38k
                                 SourceRange (Stmt::*v)() const) {
318
8.38k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
8.38k
                       static_cast<const S *>(stmt)->getEndLoc());
320
8.38k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetEnterDataDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
226
                                 SourceRange (Stmt::*v)() const) {
318
226
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
226
                       static_cast<const S *>(stmt)->getEndLoc());
320
226
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetExitDataDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
170
                                 SourceRange (Stmt::*v)() const) {
318
170
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
170
                       static_cast<const S *>(stmt)->getEndLoc());
320
170
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetParallelDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
2.22k
                                 SourceRange (Stmt::*v)() const) {
318
2.22k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
2.22k
                       static_cast<const S *>(stmt)->getEndLoc());
320
2.22k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetParallelForDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
2.06k
                                 SourceRange (Stmt::*v)() const) {
318
2.06k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
2.06k
                       static_cast<const S *>(stmt)->getEndLoc());
320
2.06k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetTeamsDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
2.80k
                                 SourceRange (Stmt::*v)() const) {
318
2.80k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
2.80k
                       static_cast<const S *>(stmt)->getEndLoc());
320
2.80k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetUpdateDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
484
                                 SourceRange (Stmt::*v)() const) {
318
484
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
484
                       static_cast<const S *>(stmt)->getEndLoc());
320
484
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTaskDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
442
                                 SourceRange (Stmt::*v)() const) {
318
442
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
442
                       static_cast<const S *>(stmt)->getEndLoc());
320
442
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTaskgroupDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
84
                                 SourceRange (Stmt::*v)() const) {
318
84
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
84
                       static_cast<const S *>(stmt)->getEndLoc());
320
84
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTaskwaitDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
1
                                 SourceRange (Stmt::*v)() const) {
318
1
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
1
                       static_cast<const S *>(stmt)->getEndLoc());
320
1
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTaskyieldDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
1
                                 SourceRange (Stmt::*v)() const) {
318
1
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
1
                       static_cast<const S *>(stmt)->getEndLoc());
320
1
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTeamsDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
2.90k
                                 SourceRange (Stmt::*v)() const) {
318
2.90k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
2.90k
                       static_cast<const S *>(stmt)->getEndLoc());
320
2.90k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCAtCatchStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
28
                                 SourceRange (Stmt::*v)() const) {
318
28
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
28
                       static_cast<const S *>(stmt)->getEndLoc());
320
28
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCAtFinallyStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
21
                                 SourceRange (Stmt::*v)() const) {
318
21
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
21
                       static_cast<const S *>(stmt)->getEndLoc());
320
21
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCAtSynchronizedStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
75
                                 SourceRange (Stmt::*v)() const) {
318
75
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
75
                       static_cast<const S *>(stmt)->getEndLoc());
320
75
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCAtThrowStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
11
                                 SourceRange (Stmt::*v)() const) {
318
11
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
11
                       static_cast<const S *>(stmt)->getEndLoc());
320
11
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCAtTryStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
32
                                 SourceRange (Stmt::*v)() const) {
318
32
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
32
                       static_cast<const S *>(stmt)->getEndLoc());
320
32
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCAutoreleasePoolStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
10
                                 SourceRange (Stmt::*v)() const) {
318
10
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
10
                       static_cast<const S *>(stmt)->getEndLoc());
320
10
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCForCollectionStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
572
                                 SourceRange (Stmt::*v)() const) {
318
572
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
572
                       static_cast<const S *>(stmt)->getEndLoc());
320
572
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ReturnStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
141k
                                 SourceRange (Stmt::*v)() const) {
318
141k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
141k
                       static_cast<const S *>(stmt)->getEndLoc());
320
141k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::SEHExceptStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
24
                                 SourceRange (Stmt::*v)() const) {
318
24
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
24
                       static_cast<const S *>(stmt)->getEndLoc());
320
24
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::SEHFinallyStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
54
                                 SourceRange (Stmt::*v)() const) {
318
54
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
54
                       static_cast<const S *>(stmt)->getEndLoc());
320
54
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::SEHLeaveStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
2
                                 SourceRange (Stmt::*v)() const) {
318
2
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
2
                       static_cast<const S *>(stmt)->getEndLoc());
320
2
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::SEHTryStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
78
                                 SourceRange (Stmt::*v)() const) {
318
78
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
78
                       static_cast<const S *>(stmt)->getEndLoc());
320
78
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CaseStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
786
                                 SourceRange (Stmt::*v)() const) {
318
786
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
786
                       static_cast<const S *>(stmt)->getEndLoc());
320
786
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::DefaultStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
143
                                 SourceRange (Stmt::*v)() const) {
318
143
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
143
                       static_cast<const S *>(stmt)->getEndLoc());
320
143
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::SwitchStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
565
                                 SourceRange (Stmt::*v)() const) {
318
565
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
565
                       static_cast<const S *>(stmt)->getEndLoc());
320
565
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::AttributedStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
18
                                 SourceRange (Stmt::*v)() const) {
318
18
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
18
                       static_cast<const S *>(stmt)->getEndLoc());
320
18
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::BinaryConditionalOperator>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
198
                                 SourceRange (Stmt::*v)() const) {
318
198
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
198
                       static_cast<const S *>(stmt)->getEndLoc());
320
198
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ConditionalOperator>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
13.3k
                                 SourceRange (Stmt::*v)() const) {
318
13.3k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
13.3k
                       static_cast<const S *>(stmt)->getEndLoc());
320
13.3k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::AddrLabelExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
613
                                 SourceRange (Stmt::*v)() const) {
318
613
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
613
                       static_cast<const S *>(stmt)->getEndLoc());
320
613
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ArrayInitIndexExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
322
                                 SourceRange (Stmt::*v)() const) {
318
322
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
322
                       static_cast<const S *>(stmt)->getEndLoc());
320
322
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ArrayInitLoopExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
899
                                 SourceRange (Stmt::*v)() const) {
318
899
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
899
                       static_cast<const S *>(stmt)->getEndLoc());
320
899
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ArraySubscriptExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
90.3k
                                 SourceRange (Stmt::*v)() const) {
318
90.3k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
90.3k
                       static_cast<const S *>(stmt)->getEndLoc());
320
90.3k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ArrayTypeTraitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
42
                                 SourceRange (Stmt::*v)() const) {
318
42
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
42
                       static_cast<const S *>(stmt)->getEndLoc());
320
42
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::AsTypeExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::AtomicExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
66
                                 SourceRange (Stmt::*v)() const) {
318
66
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
66
                       static_cast<const S *>(stmt)->getEndLoc());
320
66
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::BinaryOperator>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
470k
                                 SourceRange (Stmt::*v)() const) {
318
470k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
470k
                       static_cast<const S *>(stmt)->getEndLoc());
320
470k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CompoundAssignOperator>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
13.2k
                                 SourceRange (Stmt::*v)() const) {
318
13.2k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
13.2k
                       static_cast<const S *>(stmt)->getEndLoc());
320
13.2k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::BlockExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
2.67k
                                 SourceRange (Stmt::*v)() const) {
318
2.67k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
2.67k
                       static_cast<const S *>(stmt)->getEndLoc());
320
2.67k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXBindTemporaryExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
10.3k
                                 SourceRange (Stmt::*v)() const) {
318
10.3k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
10.3k
                       static_cast<const S *>(stmt)->getEndLoc());
320
10.3k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXBoolLiteralExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
4.77k
                                 SourceRange (Stmt::*v)() const) {
318
4.77k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
4.77k
                       static_cast<const S *>(stmt)->getEndLoc());
320
4.77k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXConstructExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
226k
                                 SourceRange (Stmt::*v)() const) {
318
226k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
226k
                       static_cast<const S *>(stmt)->getEndLoc());
320
226k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXTemporaryObjectExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
26.9k
                                 SourceRange (Stmt::*v)() const) {
318
26.9k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
26.9k
                       static_cast<const S *>(stmt)->getEndLoc());
320
26.9k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXDefaultArgExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
6.03k
                                 SourceRange (Stmt::*v)() const) {
318
6.03k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
6.03k
                       static_cast<const S *>(stmt)->getEndLoc());
320
6.03k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXDefaultInitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
3.14k
                                 SourceRange (Stmt::*v)() const) {
318
3.14k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
3.14k
                       static_cast<const S *>(stmt)->getEndLoc());
320
3.14k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXDeleteExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
1.84k
                                 SourceRange (Stmt::*v)() const) {
318
1.84k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
1.84k
                       static_cast<const S *>(stmt)->getEndLoc());
320
1.84k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXDependentScopeMemberExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
5.04k
                                 SourceRange (Stmt::*v)() const) {
318
5.04k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
5.04k
                       static_cast<const S *>(stmt)->getEndLoc());
320
5.04k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXFoldExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
120
                                 SourceRange (Stmt::*v)() const) {
318
120
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
120
                       static_cast<const S *>(stmt)->getEndLoc());
320
120
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXInheritedCtorInitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
69
                                 SourceRange (Stmt::*v)() const) {
318
69
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
69
                       static_cast<const S *>(stmt)->getEndLoc());
320
69
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXNullPtrLiteralExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
9.15k
                                 SourceRange (Stmt::*v)() const) {
318
9.15k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
9.15k
                       static_cast<const S *>(stmt)->getEndLoc());
320
9.15k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXPseudoDestructorExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
577
                                 SourceRange (Stmt::*v)() const) {
318
577
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
577
                       static_cast<const S *>(stmt)->getEndLoc());
320
577
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXScalarValueInitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
267
                                 SourceRange (Stmt::*v)() const) {
318
267
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
267
                       static_cast<const S *>(stmt)->getEndLoc());
320
267
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXThisExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
144k
                                 SourceRange (Stmt::*v)() const) {
318
144k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
144k
                       static_cast<const S *>(stmt)->getEndLoc());
320
144k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXThrowExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
25
                                 SourceRange (Stmt::*v)() const) {
318
25
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
25
                       static_cast<const S *>(stmt)->getEndLoc());
320
25
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXUnresolvedConstructExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
297
                                 SourceRange (Stmt::*v)() const) {
318
297
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
297
                       static_cast<const S *>(stmt)->getEndLoc());
320
297
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CallExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
1.46M
                                 SourceRange (Stmt::*v)() const) {
318
1.46M
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
1.46M
                       static_cast<const S *>(stmt)->getEndLoc());
320
1.46M
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CUDAKernelCallExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXMemberCallExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
103k
                                 SourceRange (Stmt::*v)() const) {
318
103k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
103k
                       static_cast<const S *>(stmt)->getEndLoc());
320
103k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::UserDefinedLiteral>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
132
                                 SourceRange (Stmt::*v)() const) {
318
132
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
132
                       static_cast<const S *>(stmt)->getEndLoc());
320
132
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::BuiltinBitCastExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
81
                                 SourceRange (Stmt::*v)() const) {
318
81
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
81
                       static_cast<const S *>(stmt)->getEndLoc());
320
81
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CStyleCastExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
427k
                                 SourceRange (Stmt::*v)() const) {
318
427k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
427k
                       static_cast<const S *>(stmt)->getEndLoc());
320
427k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXFunctionalCastExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
33.5k
                                 SourceRange (Stmt::*v)() const) {
318
33.5k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
33.5k
                       static_cast<const S *>(stmt)->getEndLoc());
320
33.5k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXAddrspaceCastExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
6
                                 SourceRange (Stmt::*v)() const) {
318
6
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
6
                       static_cast<const S *>(stmt)->getEndLoc());
320
6
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXConstCastExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
725
                                 SourceRange (Stmt::*v)() const) {
318
725
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
725
                       static_cast<const S *>(stmt)->getEndLoc());
320
725
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXDynamicCastExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
116
                                 SourceRange (Stmt::*v)() const) {
318
116
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
116
                       static_cast<const S *>(stmt)->getEndLoc());
320
116
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXReinterpretCastExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
491
                                 SourceRange (Stmt::*v)() const) {
318
491
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
491
                       static_cast<const S *>(stmt)->getEndLoc());
320
491
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXStaticCastExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
19.0k
                                 SourceRange (Stmt::*v)() const) {
318
19.0k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
19.0k
                       static_cast<const S *>(stmt)->getEndLoc());
320
19.0k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCBridgedCastExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
76
                                 SourceRange (Stmt::*v)() const) {
318
76
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
76
                       static_cast<const S *>(stmt)->getEndLoc());
320
76
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ImplicitCastExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
4.70M
                                 SourceRange (Stmt::*v)() const) {
318
4.70M
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
4.70M
                       static_cast<const S *>(stmt)->getEndLoc());
320
4.70M
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CharacterLiteral>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
5.06k
                                 SourceRange (Stmt::*v)() const) {
318
5.06k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
5.06k
                       static_cast<const S *>(stmt)->getEndLoc());
320
5.06k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ChooseExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
6
                                 SourceRange (Stmt::*v)() const) {
318
6
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
6
                       static_cast<const S *>(stmt)->getEndLoc());
320
6
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CompoundLiteralExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
1.40k
                                 SourceRange (Stmt::*v)() const) {
318
1.40k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
1.40k
                       static_cast<const S *>(stmt)->getEndLoc());
320
1.40k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ConceptSpecializationExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
7.53k
                                 SourceRange (Stmt::*v)() const) {
318
7.53k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
7.53k
                       static_cast<const S *>(stmt)->getEndLoc());
320
7.53k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ConvertVectorExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
1.62k
                                 SourceRange (Stmt::*v)() const) {
318
1.62k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
1.62k
                       static_cast<const S *>(stmt)->getEndLoc());
320
1.62k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CoawaitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
38
                                 SourceRange (Stmt::*v)() const) {
318
38
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
38
                       static_cast<const S *>(stmt)->getEndLoc());
320
38
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CoyieldExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::DeclRefExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
3.93M
                                 SourceRange (Stmt::*v)() const) {
318
3.93M
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
3.93M
                       static_cast<const S *>(stmt)->getEndLoc());
320
3.93M
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::DependentCoawaitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::DependentScopeDeclRefExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
23.7k
                                 SourceRange (Stmt::*v)() const) {
318
23.7k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
23.7k
                       static_cast<const S *>(stmt)->getEndLoc());
320
23.7k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::DesignatedInitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
285
                                 SourceRange (Stmt::*v)() const) {
318
285
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
285
                       static_cast<const S *>(stmt)->getEndLoc());
320
285
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::DesignatedInitUpdateExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
24
                                 SourceRange (Stmt::*v)() const) {
318
24
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
24
                       static_cast<const S *>(stmt)->getEndLoc());
320
24
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ExpressionTraitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
8
                                 SourceRange (Stmt::*v)() const) {
318
8
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
8
                       static_cast<const S *>(stmt)->getEndLoc());
320
8
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ExtVectorElementExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
43
                                 SourceRange (Stmt::*v)() const) {
318
43
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
43
                       static_cast<const S *>(stmt)->getEndLoc());
320
43
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::FixedPointLiteral>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
122
                                 SourceRange (Stmt::*v)() const) {
318
122
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
122
                       static_cast<const S *>(stmt)->getEndLoc());
320
122
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::FloatingLiteral>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
6.46k
                                 SourceRange (Stmt::*v)() const) {
318
6.46k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
6.46k
                       static_cast<const S *>(stmt)->getEndLoc());
320
6.46k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ConstantExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
198k
                                 SourceRange (Stmt::*v)() const) {
318
198k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
198k
                       static_cast<const S *>(stmt)->getEndLoc());
320
198k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ExprWithCleanups>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
5.87k
                                 SourceRange (Stmt::*v)() const) {
318
5.87k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
5.87k
                       static_cast<const S *>(stmt)->getEndLoc());
320
5.87k
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::FunctionParmPackExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::GNUNullExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
628
                                 SourceRange (Stmt::*v)() const) {
318
628
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
628
                       static_cast<const S *>(stmt)->getEndLoc());
320
628
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::GenericSelectionExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
25
                                 SourceRange (Stmt::*v)() const) {
318
25
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
25
                       static_cast<const S *>(stmt)->getEndLoc());
320
25
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ImaginaryLiteral>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
98
                                 SourceRange (Stmt::*v)() const) {
318
98
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
98
                       static_cast<const S *>(stmt)->getEndLoc());
320
98
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ImplicitValueInitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
230
                                 SourceRange (Stmt::*v)() const) {
318
230
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
230
                       static_cast<const S *>(stmt)->getEndLoc());
320
230
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::InitListExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
174k
                                 SourceRange (Stmt::*v)() const) {
318
174k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
174k
                       static_cast<const S *>(stmt)->getEndLoc());
320
174k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::IntegerLiteral>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
239k
                                 SourceRange (Stmt::*v)() const) {
318
239k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
239k
                       static_cast<const S *>(stmt)->getEndLoc());
320
239k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::LambdaExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
1.84k
                                 SourceRange (Stmt::*v)() const) {
318
1.84k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
1.84k
                       static_cast<const S *>(stmt)->getEndLoc());
320
1.84k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::MSPropertySubscriptExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
72
                                 SourceRange (Stmt::*v)() const) {
318
72
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
72
                       static_cast<const S *>(stmt)->getEndLoc());
320
72
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::MaterializeTemporaryExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
47.0k
                                 SourceRange (Stmt::*v)() const) {
318
47.0k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
47.0k
                       static_cast<const S *>(stmt)->getEndLoc());
320
47.0k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::MatrixSubscriptExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
13
                                 SourceRange (Stmt::*v)() const) {
318
13
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
13
                       static_cast<const S *>(stmt)->getEndLoc());
320
13
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::MemberExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
510k
                                 SourceRange (Stmt::*v)() const) {
318
510k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
510k
                       static_cast<const S *>(stmt)->getEndLoc());
320
510k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::NoInitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
231
                                 SourceRange (Stmt::*v)() const) {
318
231
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
231
                       static_cast<const S *>(stmt)->getEndLoc());
320
231
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPArraySectionExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
24.6k
                                 SourceRange (Stmt::*v)() const) {
318
24.6k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
24.6k
                       static_cast<const S *>(stmt)->getEndLoc());
320
24.6k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPArrayShapingExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
289
                                 SourceRange (Stmt::*v)() const) {
318
289
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
289
                       static_cast<const S *>(stmt)->getEndLoc());
320
289
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPIteratorExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCBoolLiteralExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
233
                                 SourceRange (Stmt::*v)() const) {
318
233
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
233
                       static_cast<const S *>(stmt)->getEndLoc());
320
233
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCEncodeExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
50
                                 SourceRange (Stmt::*v)() const) {
318
50
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
50
                       static_cast<const S *>(stmt)->getEndLoc());
320
50
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCIndirectCopyRestoreExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
7
                                 SourceRange (Stmt::*v)() const) {
318
7
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
7
                       static_cast<const S *>(stmt)->getEndLoc());
320
7
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCIsaExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
22
                                 SourceRange (Stmt::*v)() const) {
318
22
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
22
                       static_cast<const S *>(stmt)->getEndLoc());
320
22
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCIvarRefExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
2.70k
                                 SourceRange (Stmt::*v)() const) {
318
2.70k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
2.70k
                       static_cast<const S *>(stmt)->getEndLoc());
320
2.70k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCMessageExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
42.2k
                                 SourceRange (Stmt::*v)() const) {
318
42.2k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
42.2k
                       static_cast<const S *>(stmt)->getEndLoc());
320
42.2k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCPropertyRefExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
348
                                 SourceRange (Stmt::*v)() const) {
318
348
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
348
                       static_cast<const S *>(stmt)->getEndLoc());
320
348
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCProtocolExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
29
                                 SourceRange (Stmt::*v)() const) {
318
29
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
29
                       static_cast<const S *>(stmt)->getEndLoc());
320
29
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCSelectorExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
103
                                 SourceRange (Stmt::*v)() const) {
318
103
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
103
                       static_cast<const S *>(stmt)->getEndLoc());
320
103
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCStringLiteral>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
4.17k
                                 SourceRange (Stmt::*v)() const) {
318
4.17k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
4.17k
                       static_cast<const S *>(stmt)->getEndLoc());
320
4.17k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCSubscriptRefExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
352
                                 SourceRange (Stmt::*v)() const) {
318
352
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
352
                       static_cast<const S *>(stmt)->getEndLoc());
320
352
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OffsetOfExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
65
                                 SourceRange (Stmt::*v)() const) {
318
65
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
65
                       static_cast<const S *>(stmt)->getEndLoc());
320
65
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OpaqueValueExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
13.6k
                                 SourceRange (Stmt::*v)() const) {
318
13.6k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
13.6k
                       static_cast<const S *>(stmt)->getEndLoc());
320
13.6k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::UnresolvedLookupExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
353k
                                 SourceRange (Stmt::*v)() const) {
318
353k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
353k
                       static_cast<const S *>(stmt)->getEndLoc());
320
353k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::UnresolvedMemberExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
69.5k
                                 SourceRange (Stmt::*v)() const) {
318
69.5k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
69.5k
                       static_cast<const S *>(stmt)->getEndLoc());
320
69.5k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::PackExpansionExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
26
                                 SourceRange (Stmt::*v)() const) {
318
26
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
26
                       static_cast<const S *>(stmt)->getEndLoc());
320
26
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ParenExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
151k
                                 SourceRange (Stmt::*v)() const) {
318
151k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
151k
                       static_cast<const S *>(stmt)->getEndLoc());
320
151k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ParenListExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
343k
                                 SourceRange (Stmt::*v)() const) {
318
343k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
343k
                       static_cast<const S *>(stmt)->getEndLoc());
320
343k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::PredefinedExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
500
                                 SourceRange (Stmt::*v)() const) {
318
500
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
500
                       static_cast<const S *>(stmt)->getEndLoc());
320
500
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::PseudoObjectExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
1.95k
                                 SourceRange (Stmt::*v)() const) {
318
1.95k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
1.95k
                       static_cast<const S *>(stmt)->getEndLoc());
320
1.95k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::RecoveryExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
387
                                 SourceRange (Stmt::*v)() const) {
318
387
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
387
                       static_cast<const S *>(stmt)->getEndLoc());
320
387
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::RequiresExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
2.50k
                                 SourceRange (Stmt::*v)() const) {
318
2.50k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
2.50k
                       static_cast<const S *>(stmt)->getEndLoc());
320
2.50k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::SYCLUniqueStableNameExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
10
                                 SourceRange (Stmt::*v)() const) {
318
10
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
10
                       static_cast<const S *>(stmt)->getEndLoc());
320
10
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ShuffleVectorExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
2.55k
                                 SourceRange (Stmt::*v)() const) {
318
2.55k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
2.55k
                       static_cast<const S *>(stmt)->getEndLoc());
320
2.55k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::SizeOfPackExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
59
                                 SourceRange (Stmt::*v)() const) {
318
59
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
59
                       static_cast<const S *>(stmt)->getEndLoc());
320
59
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::SourceLocExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
20
                                 SourceRange (Stmt::*v)() const) {
318
20
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
20
                       static_cast<const S *>(stmt)->getEndLoc());
320
20
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::StmtExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
122
                                 SourceRange (Stmt::*v)() const) {
318
122
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
122
                       static_cast<const S *>(stmt)->getEndLoc());
320
122
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::StringLiteral>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
21.6k
                                 SourceRange (Stmt::*v)() const) {
318
21.6k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
21.6k
                       static_cast<const S *>(stmt)->getEndLoc());
320
21.6k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::SubstNonTypeTemplateParmExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
3.87k
                                 SourceRange (Stmt::*v)() const) {
318
3.87k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
3.87k
                       static_cast<const S *>(stmt)->getEndLoc());
320
3.87k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::SubstNonTypeTemplateParmPackExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
1
                                 SourceRange (Stmt::*v)() const) {
318
1
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
1
                       static_cast<const S *>(stmt)->getEndLoc());
320
1
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::TypeTraitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
17.5k
                                 SourceRange (Stmt::*v)() const) {
318
17.5k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
17.5k
                       static_cast<const S *>(stmt)->getEndLoc());
320
17.5k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::TypoExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
27
                                 SourceRange (Stmt::*v)() const) {
318
27
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
27
                       static_cast<const S *>(stmt)->getEndLoc());
320
27
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::UnaryExprOrTypeTraitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
42.7k
                                 SourceRange (Stmt::*v)() const) {
318
42.7k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
42.7k
                       static_cast<const S *>(stmt)->getEndLoc());
320
42.7k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::UnaryOperator>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
319k
                                 SourceRange (Stmt::*v)() const) {
318
319k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
319k
                       static_cast<const S *>(stmt)->getEndLoc());
320
319k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::VAArgExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
183
                                 SourceRange (Stmt::*v)() const) {
318
183
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
183
                       static_cast<const S *>(stmt)->getEndLoc());
320
183
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::LabelStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
328
                                 SourceRange (Stmt::*v)() const) {
318
328
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
328
                       static_cast<const S *>(stmt)->getEndLoc());
320
328
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::WhileStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
317
2.29k
                                 SourceRange (Stmt::*v)() const) {
318
2.29k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
319
2.29k
                       static_cast<const S *>(stmt)->getEndLoc());
320
2.29k
  }
321
322
} // namespace
323
324
15.7M
SourceRange Stmt::getSourceRange() const {
325
15.7M
  switch (getStmtClass()) {
326
0
  case Stmt::NoStmtClass: llvm_unreachable("statement without class");
327
0
#define ABSTRACT_STMT(type)
328
0
#define STMT(type, base) \
329
15.7M
  case Stmt::type##Class: \
330
15.7M
    return getSourceRangeImpl<type>(this, &type::getSourceRange);
331
15.7M
#include 
"clang/AST/StmtNodes.inc"0
332
15.7M
  }
333
0
  llvm_unreachable("unknown statement kind!");
334
0
}
335
336
220M
SourceLocation Stmt::getBeginLoc() const {
337
220M
  switch (getStmtClass()) {
338
0
  case Stmt::NoStmtClass: llvm_unreachable("statement without class");
339
0
#define ABSTRACT_STMT(type)
340
0
#define STMT(type, base)                                                       \
341
220M
  case Stmt::type##Class:                                                      \
342
220M
    return static_cast<const type *>(this)->getBeginLoc();
343
220M
#include 
"clang/AST/StmtNodes.inc"0
344
220M
  }
345
0
  llvm_unreachable("unknown statement kind");
346
0
}
347
348
20.7M
SourceLocation Stmt::getEndLoc() const {
349
20.7M
  switch (getStmtClass()) {
350
0
  case Stmt::NoStmtClass: llvm_unreachable("statement without class");
351
0
#define ABSTRACT_STMT(type)
352
0
#define STMT(type, base)                                                       \
353
20.7M
  case Stmt::type##Class:                                                      \
354
20.7M
    return static_cast<const type *>(this)->getEndLoc();
355
20.7M
#include 
"clang/AST/StmtNodes.inc"0
356
20.7M
  }
357
0
  llvm_unreachable("unknown statement kind");
358
0
}
359
360
553
int64_t Stmt::getID(const ASTContext &Context) const {
361
553
  return Context.getAllocator().identifyKnownAlignedObject<Stmt>(this);
362
553
}
363
364
CompoundStmt::CompoundStmt(ArrayRef<Stmt *> Stmts, FPOptionsOverride FPFeatures,
365
                           SourceLocation LB, SourceLocation RB)
366
5.18M
    : Stmt(CompoundStmtClass), LBraceLoc(LB), RBraceLoc(RB) {
367
5.18M
  CompoundStmtBits.NumStmts = Stmts.size();
368
5.18M
  CompoundStmtBits.HasFPFeatures = FPFeatures.requiresTrailingStorage();
369
5.18M
  setStmts(Stmts);
370
5.18M
  if (hasStoredFPFeatures())
371
277k
    setStoredFPFeatures(FPFeatures);
372
5.18M
}
373
374
5.71M
void CompoundStmt::setStmts(ArrayRef<Stmt *> Stmts) {
375
5.71M
  assert(CompoundStmtBits.NumStmts == Stmts.size() &&
376
5.71M
         "NumStmts doesn't fit in bits of CompoundStmtBits.NumStmts!");
377
378
0
  std::copy(Stmts.begin(), Stmts.end(), body_begin());
379
5.71M
}
380
381
CompoundStmt *CompoundStmt::Create(const ASTContext &C, ArrayRef<Stmt *> Stmts,
382
                                   FPOptionsOverride FPFeatures,
383
5.18M
                                   SourceLocation LB, SourceLocation RB) {
384
5.18M
  void *Mem =
385
5.18M
      C.Allocate(totalSizeToAlloc<Stmt *, FPOptionsOverride>(
386
5.18M
                     Stmts.size(), FPFeatures.requiresTrailingStorage()),
387
5.18M
                 alignof(CompoundStmt));
388
5.18M
  return new (Mem) CompoundStmt(Stmts, FPFeatures, LB, RB);
389
5.18M
}
390
391
CompoundStmt *CompoundStmt::CreateEmpty(const ASTContext &C, unsigned NumStmts,
392
530k
                                        bool HasFPFeatures) {
393
530k
  void *Mem = C.Allocate(
394
530k
      totalSizeToAlloc<Stmt *, FPOptionsOverride>(NumStmts, HasFPFeatures),
395
530k
      alignof(CompoundStmt));
396
530k
  CompoundStmt *New = new (Mem) CompoundStmt(EmptyShell());
397
530k
  New->CompoundStmtBits.NumStmts = NumStmts;
398
530k
  New->CompoundStmtBits.HasFPFeatures = HasFPFeatures;
399
530k
  return New;
400
530k
}
401
402
15.5k
const Expr *ValueStmt::getExprStmt() const {
403
15.5k
  const Stmt *S = this;
404
15.6k
  do {
405
15.6k
    if (const auto *E = dyn_cast<Expr>(S))
406
15.5k
      return E;
407
408
44
    if (const auto *LS = dyn_cast<LabelStmt>(S))
409
36
      S = LS->getSubStmt();
410
8
    else if (const auto *AS = dyn_cast<AttributedStmt>(S))
411
8
      S = AS->getSubStmt();
412
0
    else
413
0
      llvm_unreachable("unknown kind of ValueStmt");
414
44
  } while (isa<ValueStmt>(S));
415
416
4
  return nullptr;
417
15.5k
}
418
419
108
const char *LabelStmt::getName() const {
420
108
  return getDecl()->getIdentifier()->getNameStart();
421
108
}
422
423
AttributedStmt *AttributedStmt::Create(const ASTContext &C, SourceLocation Loc,
424
                                       ArrayRef<const Attr*> Attrs,
425
1.73k
                                       Stmt *SubStmt) {
426
1.73k
  assert(!Attrs.empty() && "Attrs should not be empty");
427
0
  void *Mem = C.Allocate(totalSizeToAlloc<const Attr *>(Attrs.size()),
428
1.73k
                         alignof(AttributedStmt));
429
1.73k
  return new (Mem) AttributedStmt(Loc, Attrs, SubStmt);
430
1.73k
}
431
432
AttributedStmt *AttributedStmt::CreateEmpty(const ASTContext &C,
433
91
                                            unsigned NumAttrs) {
434
91
  assert(NumAttrs > 0 && "NumAttrs should be greater than zero");
435
0
  void *Mem = C.Allocate(totalSizeToAlloc<const Attr *>(NumAttrs),
436
91
                         alignof(AttributedStmt));
437
91
  return new (Mem) AttributedStmt(EmptyShell(), NumAttrs);
438
91
}
439
440
1.87k
std::string AsmStmt::generateAsmString(const ASTContext &C) const {
441
1.87k
  if (const auto *gccAsmStmt = dyn_cast<GCCAsmStmt>(this))
442
1.71k
    return gccAsmStmt->generateAsmString(C);
443
165
  if (const auto *msAsmStmt = dyn_cast<MSAsmStmt>(this))
444
165
    return msAsmStmt->generateAsmString(C);
445
0
  llvm_unreachable("unknown asm statement kind!");
446
0
}
447
448
10.6k
StringRef AsmStmt::getOutputConstraint(unsigned i) const {
449
10.6k
  if (const auto *gccAsmStmt = dyn_cast<GCCAsmStmt>(this))
450
10.5k
    return gccAsmStmt->getOutputConstraint(i);
451
54
  if (const auto *msAsmStmt = dyn_cast<MSAsmStmt>(this))
452
54
    return msAsmStmt->getOutputConstraint(i);
453
0
  llvm_unreachable("unknown asm statement kind!");
454
0
}
455
456
1.48k
const Expr *AsmStmt::getOutputExpr(unsigned i) const {
457
1.48k
  if (const auto *gccAsmStmt = dyn_cast<GCCAsmStmt>(this))
458
1.45k
    return gccAsmStmt->getOutputExpr(i);
459
27
  if (const auto *msAsmStmt = dyn_cast<MSAsmStmt>(this))
460
27
    return msAsmStmt->getOutputExpr(i);
461
0
  llvm_unreachable("unknown asm statement kind!");
462
0
}
463
464
3.42k
StringRef AsmStmt::getInputConstraint(unsigned i) const {
465
3.42k
  if (const auto *gccAsmStmt = dyn_cast<GCCAsmStmt>(this))
466
3.20k
    return gccAsmStmt->getInputConstraint(i);
467
226
  if (const auto *msAsmStmt = dyn_cast<MSAsmStmt>(this))
468
226
    return msAsmStmt->getInputConstraint(i);
469
0
  llvm_unreachable("unknown asm statement kind!");
470
0
}
471
472
1.74k
const Expr *AsmStmt::getInputExpr(unsigned i) const {
473
1.74k
  if (const auto *gccAsmStmt = dyn_cast<GCCAsmStmt>(this))
474
1.63k
    return gccAsmStmt->getInputExpr(i);
475
113
  if (const auto *msAsmStmt = dyn_cast<MSAsmStmt>(this))
476
113
    return msAsmStmt->getInputExpr(i);
477
0
  llvm_unreachable("unknown asm statement kind!");
478
0
}
479
480
1.33k
StringRef AsmStmt::getClobber(unsigned i) const {
481
1.33k
  if (const auto *gccAsmStmt = dyn_cast<GCCAsmStmt>(this))
482
1.14k
    return gccAsmStmt->getClobber(i);
483
194
  if (const auto *msAsmStmt = dyn_cast<MSAsmStmt>(this))
484
194
    return msAsmStmt->getClobber(i);
485
0
  llvm_unreachable("unknown asm statement kind!");
486
0
}
487
488
/// getNumPlusOperands - Return the number of output operands that have a "+"
489
/// constraint.
490
8.40k
unsigned AsmStmt::getNumPlusOperands() const {
491
8.40k
  unsigned Res = 0;
492
16.4k
  for (unsigned i = 0, e = getNumOutputs(); i != e; 
++i8.08k
)
493
8.08k
    if (isOutputPlusConstraint(i))
494
1.80k
      ++Res;
495
8.40k
  return Res;
496
8.40k
}
497
498
8.75k
char GCCAsmStmt::AsmStringPiece::getModifier() const {
499
8.75k
  assert(isOperand() && "Only Operands can have modifiers.");
500
8.75k
  return isLetter(Str[0]) ? 
Str[0]239
:
'\0'8.52k
;
501
8.75k
}
502
503
1.14k
StringRef GCCAsmStmt::getClobber(unsigned i) const {
504
1.14k
  return getClobberStringLiteral(i)->getString();
505
1.14k
}
506
507
1.75k
Expr *GCCAsmStmt::getOutputExpr(unsigned i) {
508
1.75k
  return cast<Expr>(Exprs[i]);
509
1.75k
}
510
511
/// getOutputConstraint - Return the constraint string for the specified
512
/// output operand.  All output constraints are known to be non-empty (either
513
/// '=' or '+').
514
10.5k
StringRef GCCAsmStmt::getOutputConstraint(unsigned i) const {
515
10.5k
  return getOutputConstraintLiteral(i)->getString();
516
10.5k
}
517
518
1.87k
Expr *GCCAsmStmt::getInputExpr(unsigned i) {
519
1.87k
  return cast<Expr>(Exprs[i + NumOutputs]);
520
1.87k
}
521
522
2
void GCCAsmStmt::setInputExpr(unsigned i, Expr *E) {
523
2
  Exprs[i + NumOutputs] = E;
524
2
}
525
526
61
AddrLabelExpr *GCCAsmStmt::getLabelExpr(unsigned i) const {
527
61
  return cast<AddrLabelExpr>(Exprs[i + NumOutputs + NumInputs]);
528
61
}
529
530
57
StringRef GCCAsmStmt::getLabelName(unsigned i) const {
531
57
  return getLabelExpr(i)->getLabel()->getName();
532
57
}
533
534
/// getInputConstraint - Return the specified input constraint.  Unlike output
535
/// constraints, these can be empty.
536
3.20k
StringRef GCCAsmStmt::getInputConstraint(unsigned i) const {
537
3.20k
  return getInputConstraintLiteral(i)->getString();
538
3.20k
}
539
540
void GCCAsmStmt::setOutputsAndInputsAndClobbers(const ASTContext &C,
541
                                                IdentifierInfo **Names,
542
                                                StringLiteral **Constraints,
543
                                                Stmt **Exprs,
544
                                                unsigned NumOutputs,
545
                                                unsigned NumInputs,
546
                                                unsigned NumLabels,
547
                                                StringLiteral **Clobbers,
548
11
                                                unsigned NumClobbers) {
549
11
  this->NumOutputs = NumOutputs;
550
11
  this->NumInputs = NumInputs;
551
11
  this->NumClobbers = NumClobbers;
552
11
  this->NumLabels = NumLabels;
553
554
11
  unsigned NumExprs = NumOutputs + NumInputs + NumLabels;
555
556
11
  C.Deallocate(this->Names);
557
11
  this->Names = new (C) IdentifierInfo*[NumExprs];
558
11
  std::copy(Names, Names + NumExprs, this->Names);
559
560
11
  C.Deallocate(this->Exprs);
561
11
  this->Exprs = new (C) Stmt*[NumExprs];
562
11
  std::copy(Exprs, Exprs + NumExprs, this->Exprs);
563
564
11
  unsigned NumConstraints = NumOutputs + NumInputs;
565
11
  C.Deallocate(this->Constraints);
566
11
  this->Constraints = new (C) StringLiteral*[NumConstraints];
567
11
  std::copy(Constraints, Constraints + NumConstraints, this->Constraints);
568
569
11
  C.Deallocate(this->Clobbers);
570
11
  this->Clobbers = new (C) StringLiteral*[NumClobbers];
571
11
  std::copy(Clobbers, Clobbers + NumClobbers, this->Clobbers);
572
11
}
573
574
/// getNamedOperand - Given a symbolic operand reference like %[foo],
575
/// translate this into a numeric value needed to reference the same operand.
576
/// This returns -1 if the operand name is invalid.
577
416
int GCCAsmStmt::getNamedOperand(StringRef SymbolicName) const {
578
  // Check if this is an output operand.
579
416
  unsigned NumOutputs = getNumOutputs();
580
682
  for (unsigned i = 0; i != NumOutputs; 
++i266
)
581
447
    if (getOutputName(i) == SymbolicName)
582
181
      return i;
583
584
235
  unsigned NumInputs = getNumInputs();
585
333
  for (unsigned i = 0; i != NumInputs; 
++i98
)
586
298
    if (getInputName(i) == SymbolicName)
587
200
      return NumOutputs + i;
588
589
44
  
for (unsigned i = 0, e = getNumLabels(); 35
i != e;
++i9
)
590
35
    if (getLabelName(i) == SymbolicName)
591
26
      return NumOutputs + NumInputs + getNumPlusOperands() + i;
592
593
  // Not found.
594
9
  return -1;
595
35
}
596
597
/// AnalyzeAsmString - Analyze the asm string of the current asm, decomposing
598
/// it into pieces.  If the asm string is erroneous, emit errors and return
599
/// true, otherwise return false.
600
unsigned GCCAsmStmt::AnalyzeAsmString(SmallVectorImpl<AsmStringPiece>&Pieces,
601
6.80k
                                const ASTContext &C, unsigned &DiagOffs) const {
602
6.80k
  StringRef Str = getAsmString()->getString();
603
6.80k
  const char *StrStart = Str.begin();
604
6.80k
  const char *StrEnd = Str.end();
605
6.80k
  const char *CurPtr = StrStart;
606
607
  // "Simple" inline asms have no constraints or operands, just convert the asm
608
  // string to escape $'s.
609
6.80k
  if (isSimple()) {
610
535
    std::string Result;
611
4.63k
    for (; CurPtr != StrEnd; 
++CurPtr4.09k
) {
612
4.09k
      switch (*CurPtr) {
613
8
      case '$':
614
8
        Result += "$$";
615
8
        break;
616
4.09k
      default:
617
4.09k
        Result += *CurPtr;
618
4.09k
        break;
619
4.09k
      }
620
4.09k
    }
621
535
    Pieces.push_back(AsmStringPiece(Result));
622
535
    return 0;
623
535
  }
624
625
  // CurStringPiece - The current string that we are building up as we scan the
626
  // asm string.
627
6.26k
  std::string CurStringPiece;
628
629
6.26k
  bool HasVariants = !C.getTargetInfo().hasNoAsmVariants();
630
631
6.26k
  unsigned LastAsmStringToken = 0;
632
6.26k
  unsigned LastAsmStringOffset = 0;
633
634
88.5k
  while (true) {
635
    // Done with the string?
636
88.5k
    if (CurPtr == StrEnd) {
637
6.24k
      if (!CurStringPiece.empty())
638
3.95k
        Pieces.push_back(AsmStringPiece(CurStringPiece));
639
6.24k
      return 0;
640
6.24k
    }
641
642
82.2k
    char CurChar = *CurPtr++;
643
82.2k
    switch (CurChar) {
644
717
    case '$': CurStringPiece += "$$"; continue;
645
386
    case '{': CurStringPiece += (HasVariants ? 
"$("354
:
"{"32
); continue;
646
376
    case '|': CurStringPiece += (HasVariants ? 
"$|"356
:
"|"20
); continue;
647
386
    case '}': CurStringPiece += (HasVariants ? 
"$)"354
:
"}"32
); continue;
648
9.53k
    case '%':
649
9.53k
      break;
650
70.8k
    default:
651
70.8k
      CurStringPiece += CurChar;
652
70.8k
      continue;
653
82.2k
    }
654
655
9.53k
    const TargetInfo &TI = C.getTargetInfo();
656
657
    // Escaped "%" character in asm string.
658
9.53k
    if (CurPtr == StrEnd) {
659
      // % at end of string is invalid (no escape).
660
1
      DiagOffs = CurPtr-StrStart-1;
661
1
      return diag::err_asm_invalid_escape;
662
1
    }
663
    // Handle escaped char and continue looping over the asm string.
664
9.53k
    char EscapedChar = *CurPtr++;
665
9.53k
    switch (EscapedChar) {
666
8.80k
    default:
667
      // Handle target-specific escaped characters.
668
8.80k
      if (auto MaybeReplaceStr = TI.handleAsmEscapedChar(EscapedChar)) {
669
0
        CurStringPiece += *MaybeReplaceStr;
670
0
        continue;
671
0
      }
672
8.80k
      break;
673
8.80k
    case '%': // %% -> %
674
720
    case '{': // %{ -> {
675
732
    case '}': // %} -> }
676
732
      CurStringPiece += EscapedChar;
677
732
      continue;
678
2
    case '=': // %= -> Generate a unique ID.
679
2
      CurStringPiece += "${:uid}";
680
2
      continue;
681
9.53k
    }
682
683
    // Otherwise, we have an operand.  If we have accumulated a string so far,
684
    // add it to the Pieces list.
685
8.80k
    if (!CurStringPiece.empty()) {
686
8.77k
      Pieces.push_back(AsmStringPiece(CurStringPiece));
687
8.77k
      CurStringPiece.clear();
688
8.77k
    }
689
690
    // Handle operands that have asmSymbolicName (e.g., %x[foo]) and those that
691
    // don't (e.g., %x4). 'x' following the '%' is the constraint modifier.
692
693
8.80k
    const char *Begin = CurPtr - 1; // Points to the character following '%'.
694
8.80k
    const char *Percent = Begin - 1; // Points to '%'.
695
696
8.80k
    if (isLetter(EscapedChar)) {
697
248
      if (CurPtr == StrEnd) { // Premature end.
698
1
        DiagOffs = CurPtr-StrStart-1;
699
1
        return diag::err_asm_invalid_escape;
700
1
      }
701
247
      EscapedChar = *CurPtr++;
702
247
    }
703
704
8.79k
    const SourceManager &SM = C.getSourceManager();
705
8.79k
    const LangOptions &LO = C.getLangOpts();
706
707
    // Handle operands that don't have asmSymbolicName (e.g., %x4).
708
8.79k
    if (isDigit(EscapedChar)) {
709
      // %n - Assembler operand n
710
8.38k
      unsigned N = 0;
711
712
8.38k
      --CurPtr;
713
16.7k
      while (CurPtr != StrEnd && 
isDigit(*CurPtr)15.2k
)
714
8.38k
        N = N*10 + ((*CurPtr++)-'0');
715
716
8.38k
      unsigned NumOperands = getNumOutputs() + getNumPlusOperands() +
717
8.38k
                             getNumInputs() + getNumLabels();
718
8.38k
      if (N >= NumOperands) {
719
10
        DiagOffs = CurPtr-StrStart-1;
720
10
        return diag::err_asm_invalid_operand_number;
721
10
      }
722
723
      // Str contains "x4" (Operand without the leading %).
724
8.37k
      std::string Str(Begin, CurPtr - Begin);
725
726
      // (BeginLoc, EndLoc) represents the range of the operand we are currently
727
      // processing. Unlike Str, the range includes the leading '%'.
728
8.37k
      SourceLocation BeginLoc = getAsmString()->getLocationOfByte(
729
8.37k
          Percent - StrStart, SM, LO, TI, &LastAsmStringToken,
730
8.37k
          &LastAsmStringOffset);
731
8.37k
      SourceLocation EndLoc = getAsmString()->getLocationOfByte(
732
8.37k
          CurPtr - StrStart, SM, LO, TI, &LastAsmStringToken,
733
8.37k
          &LastAsmStringOffset);
734
735
8.37k
      Pieces.emplace_back(N, std::move(Str), BeginLoc, EndLoc);
736
8.37k
      continue;
737
8.38k
    }
738
739
    // Handle operands that have asmSymbolicName (e.g., %x[foo]).
740
419
    if (EscapedChar == '[') {
741
418
      DiagOffs = CurPtr-StrStart-1;
742
743
      // Find the ']'.
744
418
      const char *NameEnd = (const char*)memchr(CurPtr, ']', StrEnd-CurPtr);
745
418
      if (NameEnd == nullptr)
746
1
        return diag::err_asm_unterminated_symbolic_operand_name;
747
417
      if (NameEnd == CurPtr)
748
1
        return diag::err_asm_empty_symbolic_operand_name;
749
750
416
      StringRef SymbolicName(CurPtr, NameEnd - CurPtr);
751
752
416
      int N = getNamedOperand(SymbolicName);
753
416
      if (N == -1) {
754
        // Verify that an operand with that name exists.
755
9
        DiagOffs = CurPtr-StrStart;
756
9
        return diag::err_asm_unknown_symbolic_operand_name;
757
9
      }
758
759
      // Str contains "x[foo]" (Operand without the leading %).
760
407
      std::string Str(Begin, NameEnd + 1 - Begin);
761
762
      // (BeginLoc, EndLoc) represents the range of the operand we are currently
763
      // processing. Unlike Str, the range includes the leading '%'.
764
407
      SourceLocation BeginLoc = getAsmString()->getLocationOfByte(
765
407
          Percent - StrStart, SM, LO, TI, &LastAsmStringToken,
766
407
          &LastAsmStringOffset);
767
407
      SourceLocation EndLoc = getAsmString()->getLocationOfByte(
768
407
          NameEnd + 1 - StrStart, SM, LO, TI, &LastAsmStringToken,
769
407
          &LastAsmStringOffset);
770
771
407
      Pieces.emplace_back(N, std::move(Str), BeginLoc, EndLoc);
772
773
407
      CurPtr = NameEnd+1;
774
407
      continue;
775
416
    }
776
777
1
    DiagOffs = CurPtr-StrStart-1;
778
1
    return diag::err_asm_invalid_escape;
779
419
  }
780
6.26k
}
781
782
/// Assemble final IR asm string (GCC-style).
783
1.71k
std::string GCCAsmStmt::generateAsmString(const ASTContext &C) const {
784
  // Analyze the asm string to decompose it into its pieces.  We know that Sema
785
  // has already done this, so it is guaranteed to be successful.
786
1.71k
  SmallVector<GCCAsmStmt::AsmStringPiece, 4> Pieces;
787
1.71k
  unsigned DiagOffs;
788
1.71k
  AnalyzeAsmString(Pieces, C, DiagOffs);
789
790
1.71k
  std::string AsmString;
791
6.44k
  for (const auto &Piece : Pieces) {
792
6.44k
    if (Piece.isString())
793
3.70k
      AsmString += Piece.getString();
794
2.74k
    else if (Piece.getModifier() == '\0')
795
2.67k
      AsmString += '$' + llvm::utostr(Piece.getOperandNo());
796
65
    else
797
65
      AsmString += "${" + llvm::utostr(Piece.getOperandNo()) + ':' +
798
65
                   Piece.getModifier() + '}';
799
6.44k
  }
800
1.71k
  return AsmString;
801
1.71k
}
802
803
/// Assemble final IR asm string (MS-style).
804
165
std::string MSAsmStmt::generateAsmString(const ASTContext &C) const {
805
  // FIXME: This needs to be translated into the IR string representation.
806
165
  SmallVector<StringRef, 8> Pieces;
807
165
  AsmStr.split(Pieces, "\n\t");
808
165
  std::string MSAsmString;
809
540
  for (size_t I = 0, E = Pieces.size(); I < E; 
++I375
) {
810
375
    StringRef Instruction = Pieces[I];
811
    // For vex/vex2/vex3/evex masm style prefix, convert it to att style
812
    // since we don't support masm style prefix in backend.
813
375
    if (Instruction.startswith("vex "))
814
2
      MSAsmString += '{' + Instruction.substr(0, 3).str() + '}' +
815
2
                     Instruction.substr(3).str();
816
373
    else if (Instruction.startswith("vex2 ") ||
817
373
             
Instruction.startswith("vex3 ")371
||
Instruction.startswith("evex ")369
)
818
6
      MSAsmString += '{' + Instruction.substr(0, 4).str() + '}' +
819
6
                     Instruction.substr(4).str();
820
367
    else
821
367
      MSAsmString += Instruction.str();
822
    // If this is not the last instruction, adding back the '\n\t'.
823
375
    if (I < E - 1)
824
210
      MSAsmString += "\n\t";
825
375
  }
826
165
  return MSAsmString;
827
165
}
828
829
27
Expr *MSAsmStmt::getOutputExpr(unsigned i) {
830
27
  return cast<Expr>(Exprs[i]);
831
27
}
832
833
113
Expr *MSAsmStmt::getInputExpr(unsigned i) {
834
113
  return cast<Expr>(Exprs[i + NumOutputs]);
835
113
}
836
837
0
void MSAsmStmt::setInputExpr(unsigned i, Expr *E) {
838
0
  Exprs[i + NumOutputs] = E;
839
0
}
840
841
//===----------------------------------------------------------------------===//
842
// Constructors
843
//===----------------------------------------------------------------------===//
844
845
GCCAsmStmt::GCCAsmStmt(const ASTContext &C, SourceLocation asmloc,
846
                       bool issimple, bool isvolatile, unsigned numoutputs,
847
                       unsigned numinputs, IdentifierInfo **names,
848
                       StringLiteral **constraints, Expr **exprs,
849
                       StringLiteral *asmstr, unsigned numclobbers,
850
                       StringLiteral **clobbers, unsigned numlabels,
851
                       SourceLocation rparenloc)
852
    : AsmStmt(GCCAsmStmtClass, asmloc, issimple, isvolatile, numoutputs,
853
              numinputs, numclobbers),
854
5.23k
              RParenLoc(rparenloc), AsmStr(asmstr), NumLabels(numlabels) {
855
5.23k
  unsigned NumExprs = NumOutputs + NumInputs + NumLabels;
856
857
5.23k
  Names = new (C) IdentifierInfo*[NumExprs];
858
5.23k
  std::copy(names, names + NumExprs, Names);
859
860
5.23k
  Exprs = new (C) Stmt*[NumExprs];
861
5.23k
  std::copy(exprs, exprs + NumExprs, Exprs);
862
863
5.23k
  unsigned NumConstraints = NumOutputs + NumInputs;
864
5.23k
  Constraints = new (C) StringLiteral*[NumConstraints];
865
5.23k
  std::copy(constraints, constraints + NumConstraints, Constraints);
866
867
5.23k
  Clobbers = new (C) StringLiteral*[NumClobbers];
868
5.23k
  std::copy(clobbers, clobbers + NumClobbers, Clobbers);
869
5.23k
}
870
871
MSAsmStmt::MSAsmStmt(const ASTContext &C, SourceLocation asmloc,
872
                     SourceLocation lbraceloc, bool issimple, bool isvolatile,
873
                     ArrayRef<Token> asmtoks, unsigned numoutputs,
874
                     unsigned numinputs,
875
                     ArrayRef<StringRef> constraints, ArrayRef<Expr*> exprs,
876
                     StringRef asmstr, ArrayRef<StringRef> clobbers,
877
                     SourceLocation endloc)
878
    : AsmStmt(MSAsmStmtClass, asmloc, issimple, isvolatile, numoutputs,
879
              numinputs, clobbers.size()), LBraceLoc(lbraceloc),
880
227
              EndLoc(endloc), NumAsmToks(asmtoks.size()) {
881
227
  initialize(C, asmstr, asmtoks, constraints, exprs, clobbers);
882
227
}
883
884
616
static StringRef copyIntoContext(const ASTContext &C, StringRef str) {
885
616
  return str.copy(C);
886
616
}
887
888
void MSAsmStmt::initialize(const ASTContext &C, StringRef asmstr,
889
                           ArrayRef<Token> asmtoks,
890
                           ArrayRef<StringRef> constraints,
891
                           ArrayRef<Expr*> exprs,
892
227
                           ArrayRef<StringRef> clobbers) {
893
227
  assert(NumAsmToks == asmtoks.size());
894
0
  assert(NumClobbers == clobbers.size());
895
896
0
  assert(exprs.size() == NumOutputs + NumInputs);
897
0
  assert(exprs.size() == constraints.size());
898
899
0
  AsmStr = copyIntoContext(C, asmstr);
900
901
227
  Exprs = new (C) Stmt*[exprs.size()];
902
227
  std::copy(exprs.begin(), exprs.end(), Exprs);
903
904
227
  AsmToks = new (C) Token[asmtoks.size()];
905
227
  std::copy(asmtoks.begin(), asmtoks.end(), AsmToks);
906
907
227
  Constraints = new (C) StringRef[exprs.size()];
908
227
  std::transform(constraints.begin(), constraints.end(), Constraints,
909
227
                 [&](StringRef Constraint) {
910
153
                   return copyIntoContext(C, Constraint);
911
153
                 });
912
913
227
  Clobbers = new (C) StringRef[NumClobbers];
914
  // FIXME: Avoid the allocation/copy if at all possible.
915
227
  std::transform(clobbers.begin(), clobbers.end(), Clobbers,
916
236
                 [&](StringRef Clobber) {
917
236
                   return copyIntoContext(C, Clobber);
918
236
                 });
919
227
}
920
921
IfStmt::IfStmt(const ASTContext &Ctx, SourceLocation IL, IfStatementKind Kind,
922
               Stmt *Init, VarDecl *Var, Expr *Cond, SourceLocation LPL,
923
               SourceLocation RPL, Stmt *Then, SourceLocation EL, Stmt *Else)
924
773k
    : Stmt(IfStmtClass), LParenLoc(LPL), RParenLoc(RPL) {
925
773k
  bool HasElse = Else != nullptr;
926
773k
  bool HasVar = Var != nullptr;
927
773k
  bool HasInit = Init != nullptr;
928
773k
  IfStmtBits.HasElse = HasElse;
929
773k
  IfStmtBits.HasVar = HasVar;
930
773k
  IfStmtBits.HasInit = HasInit;
931
932
773k
  setStatementKind(Kind);
933
934
773k
  setCond(Cond);
935
773k
  setThen(Then);
936
773k
  if (HasElse)
937
158k
    setElse(Else);
938
773k
  if (HasVar)
939
529
    setConditionVariable(Ctx, Var);
940
773k
  if (HasInit)
941
256
    setInit(Init);
942
943
773k
  setIfLoc(IL);
944
773k
  if (HasElse)
945
158k
    setElseLoc(EL);
946
773k
}
947
948
IfStmt::IfStmt(EmptyShell Empty, bool HasElse, bool HasVar, bool HasInit)
949
149k
    : Stmt(IfStmtClass, Empty) {
950
149k
  IfStmtBits.HasElse = HasElse;
951
149k
  IfStmtBits.HasVar = HasVar;
952
149k
  IfStmtBits.HasInit = HasInit;
953
149k
}
954
955
IfStmt *IfStmt::Create(const ASTContext &Ctx, SourceLocation IL,
956
                       IfStatementKind Kind, Stmt *Init, VarDecl *Var,
957
                       Expr *Cond, SourceLocation LPL, SourceLocation RPL,
958
773k
                       Stmt *Then, SourceLocation EL, Stmt *Else) {
959
773k
  bool HasElse = Else != nullptr;
960
773k
  bool HasVar = Var != nullptr;
961
773k
  bool HasInit = Init != nullptr;
962
773k
  void *Mem = Ctx.Allocate(
963
773k
      totalSizeToAlloc<Stmt *, SourceLocation>(
964
773k
          NumMandatoryStmtPtr + HasElse + HasVar + HasInit, HasElse),
965
773k
      alignof(IfStmt));
966
773k
  return new (Mem)
967
773k
      IfStmt(Ctx, IL, Kind, Init, Var, Cond, LPL, RPL, Then, EL, Else);
968
773k
}
969
970
IfStmt *IfStmt::CreateEmpty(const ASTContext &Ctx, bool HasElse, bool HasVar,
971
149k
                            bool HasInit) {
972
149k
  void *Mem = Ctx.Allocate(
973
149k
      totalSizeToAlloc<Stmt *, SourceLocation>(
974
149k
          NumMandatoryStmtPtr + HasElse + HasVar + HasInit, HasElse),
975
149k
      alignof(IfStmt));
976
149k
  return new (Mem) IfStmt(EmptyShell(), HasElse, HasVar, HasInit);
977
149k
}
978
979
604k
VarDecl *IfStmt::getConditionVariable() {
980
604k
  auto *DS = getConditionVariableDeclStmt();
981
604k
  if (!DS)
982
603k
    return nullptr;
983
718
  return cast<VarDecl>(DS->getSingleDecl());
984
604k
}
985
986
655
void IfStmt::setConditionVariable(const ASTContext &Ctx, VarDecl *V) {
987
655
  assert(hasVarStorage() &&
988
655
         "This if statement has no storage for a condition variable!");
989
990
655
  if (!V) {
991
0
    getTrailingObjects<Stmt *>()[varOffset()] = nullptr;
992
0
    return;
993
0
  }
994
995
655
  SourceRange VarRange = V->getSourceRange();
996
655
  getTrailingObjects<Stmt *>()[varOffset()] = new (Ctx)
997
655
      DeclStmt(DeclGroupRef(V), VarRange.getBegin(), VarRange.getEnd());
998
655
}
999
1000
40.6k
bool IfStmt::isObjCAvailabilityCheck() const {
1001
40.6k
  return isa<ObjCAvailabilityCheckExpr>(getCond());
1002
40.6k
}
1003
1004
657
Optional<Stmt *> IfStmt::getNondiscardedCase(const ASTContext &Ctx) {
1005
657
  if (!isConstexpr() || 
getCond()->isValueDependent()6
)
1006
651
    return None;
1007
6
  return !getCond()->EvaluateKnownConstInt(Ctx) ? 
getElse()4
:
getThen()2
;
1008
657
}
1009
1010
Optional<const Stmt *>
1011
100
IfStmt::getNondiscardedCase(const ASTContext &Ctx) const {
1012
100
  if (Optional<Stmt *> Result =
1013
100
          const_cast<IfStmt *>(this)->getNondiscardedCase(Ctx))
1014
3
    return *Result;
1015
97
  return None;
1016
100
}
1017
1018
ForStmt::ForStmt(const ASTContext &C, Stmt *Init, Expr *Cond, VarDecl *condVar,
1019
                 Expr *Inc, Stmt *Body, SourceLocation FL, SourceLocation LP,
1020
                 SourceLocation RP)
1021
  : Stmt(ForStmtClass), LParenLoc(LP), RParenLoc(RP)
1022
316k
{
1023
316k
  SubExprs[INIT] = Init;
1024
316k
  setConditionVariable(C, condVar);
1025
316k
  SubExprs[COND] = Cond;
1026
316k
  SubExprs[INC] = Inc;
1027
316k
  SubExprs[BODY] = Body;
1028
316k
  ForStmtBits.ForLoc = FL;
1029
316k
}
1030
1031
227k
VarDecl *ForStmt::getConditionVariable() const {
1032
227k
  if (!SubExprs[CONDVAR])
1033
227k
    return nullptr;
1034
1035
190
  auto *DS = cast<DeclStmt>(SubExprs[CONDVAR]);
1036
190
  return cast<VarDecl>(DS->getSingleDecl());
1037
227k
}
1038
1039
353k
void ForStmt::setConditionVariable(const ASTContext &C, VarDecl *V) {
1040
353k
  if (!V) {
1041
353k
    SubExprs[CONDVAR] = nullptr;
1042
353k
    return;
1043
353k
  }
1044
1045
93
  SourceRange VarRange = V->getSourceRange();
1046
93
  SubExprs[CONDVAR] = new (C) DeclStmt(DeclGroupRef(V), VarRange.getBegin(),
1047
93
                                       VarRange.getEnd());
1048
93
}
1049
1050
SwitchStmt::SwitchStmt(const ASTContext &Ctx, Stmt *Init, VarDecl *Var,
1051
                       Expr *Cond, SourceLocation LParenLoc,
1052
                       SourceLocation RParenLoc)
1053
    : Stmt(SwitchStmtClass), FirstCase(nullptr), LParenLoc(LParenLoc),
1054
9.01k
      RParenLoc(RParenLoc) {
1055
9.01k
  bool HasInit = Init != nullptr;
1056
9.01k
  bool HasVar = Var != nullptr;
1057
9.01k
  SwitchStmtBits.HasInit = HasInit;
1058
9.01k
  SwitchStmtBits.HasVar = HasVar;
1059
9.01k
  SwitchStmtBits.AllEnumCasesCovered = false;
1060
1061
9.01k
  setCond(Cond);
1062
9.01k
  setBody(nullptr);
1063
9.01k
  if (HasInit)
1064
90
    setInit(Init);
1065
9.01k
  if (HasVar)
1066
56
    setConditionVariable(Ctx, Var);
1067
1068
9.01k
  setSwitchLoc(SourceLocation{});
1069
9.01k
}
1070
1071
SwitchStmt::SwitchStmt(EmptyShell Empty, bool HasInit, bool HasVar)
1072
2.33k
    : Stmt(SwitchStmtClass, Empty) {
1073
2.33k
  SwitchStmtBits.HasInit = HasInit;
1074
2.33k
  SwitchStmtBits.HasVar = HasVar;
1075
2.33k
  SwitchStmtBits.AllEnumCasesCovered = false;
1076
2.33k
}
1077
1078
SwitchStmt *SwitchStmt::Create(const ASTContext &Ctx, Stmt *Init, VarDecl *Var,
1079
                               Expr *Cond, SourceLocation LParenLoc,
1080
9.01k
                               SourceLocation RParenLoc) {
1081
9.01k
  bool HasInit = Init != nullptr;
1082
9.01k
  bool HasVar = Var != nullptr;
1083
9.01k
  void *Mem = Ctx.Allocate(
1084
9.01k
      totalSizeToAlloc<Stmt *>(NumMandatoryStmtPtr + HasInit + HasVar),
1085
9.01k
      alignof(SwitchStmt));
1086
9.01k
  return new (Mem) SwitchStmt(Ctx, Init, Var, Cond, LParenLoc, RParenLoc);
1087
9.01k
}
1088
1089
SwitchStmt *SwitchStmt::CreateEmpty(const ASTContext &Ctx, bool HasInit,
1090
2.33k
                                    bool HasVar) {
1091
2.33k
  void *Mem = Ctx.Allocate(
1092
2.33k
      totalSizeToAlloc<Stmt *>(NumMandatoryStmtPtr + HasInit + HasVar),
1093
2.33k
      alignof(SwitchStmt));
1094
2.33k
  return new (Mem) SwitchStmt(EmptyShell(), HasInit, HasVar);
1095
2.33k
}
1096
1097
10.5k
VarDecl *SwitchStmt::getConditionVariable() {
1098
10.5k
  auto *DS = getConditionVariableDeclStmt();
1099
10.5k
  if (!DS)
1100
10.4k
    return nullptr;
1101
140
  return cast<VarDecl>(DS->getSingleDecl());
1102
10.5k
}
1103
1104
56
void SwitchStmt::setConditionVariable(const ASTContext &Ctx, VarDecl *V) {
1105
56
  assert(hasVarStorage() &&
1106
56
         "This switch statement has no storage for a condition variable!");
1107
1108
56
  if (!V) {
1109
0
    getTrailingObjects<Stmt *>()[varOffset()] = nullptr;
1110
0
    return;
1111
0
  }
1112
1113
56
  SourceRange VarRange = V->getSourceRange();
1114
56
  getTrailingObjects<Stmt *>()[varOffset()] = new (Ctx)
1115
56
      DeclStmt(DeclGroupRef(V), VarRange.getBegin(), VarRange.getEnd());
1116
56
}
1117
1118
WhileStmt::WhileStmt(const ASTContext &Ctx, VarDecl *Var, Expr *Cond,
1119
                     Stmt *Body, SourceLocation WL, SourceLocation LParenLoc,
1120
                     SourceLocation RParenLoc)
1121
61.9k
    : Stmt(WhileStmtClass) {
1122
61.9k
  bool HasVar = Var != nullptr;
1123
61.9k
  WhileStmtBits.HasVar = HasVar;
1124
1125
61.9k
  setCond(Cond);
1126
61.9k
  setBody(Body);
1127
61.9k
  if (HasVar)
1128
600
    setConditionVariable(Ctx, Var);
1129
1130
61.9k
  setWhileLoc(WL);
1131
61.9k
  setLParenLoc(LParenLoc);
1132
61.9k
  setRParenLoc(RParenLoc);
1133
61.9k
}
1134
1135
WhileStmt::WhileStmt(EmptyShell Empty, bool HasVar)
1136
9.43k
    : Stmt(WhileStmtClass, Empty) {
1137
9.43k
  WhileStmtBits.HasVar = HasVar;
1138
9.43k
}
1139
1140
WhileStmt *WhileStmt::Create(const ASTContext &Ctx, VarDecl *Var, Expr *Cond,
1141
                             Stmt *Body, SourceLocation WL,
1142
                             SourceLocation LParenLoc,
1143
61.9k
                             SourceLocation RParenLoc) {
1144
61.9k
  bool HasVar = Var != nullptr;
1145
61.9k
  void *Mem =
1146
61.9k
      Ctx.Allocate(totalSizeToAlloc<Stmt *>(NumMandatoryStmtPtr + HasVar),
1147
61.9k
                   alignof(WhileStmt));
1148
61.9k
  return new (Mem) WhileStmt(Ctx, Var, Cond, Body, WL, LParenLoc, RParenLoc);
1149
61.9k
}
1150
1151
9.43k
WhileStmt *WhileStmt::CreateEmpty(const ASTContext &Ctx, bool HasVar) {
1152
9.43k
  void *Mem =
1153
9.43k
      Ctx.Allocate(totalSizeToAlloc<Stmt *>(NumMandatoryStmtPtr + HasVar),
1154
9.43k
                   alignof(WhileStmt));
1155
9.43k
  return new (Mem) WhileStmt(EmptyShell(), HasVar);
1156
9.43k
}
1157
1158
1.07M
VarDecl *WhileStmt::getConditionVariable() {
1159
1.07M
  auto *DS = getConditionVariableDeclStmt();
1160
1.07M
  if (!DS)
1161
1.07M
    return nullptr;
1162
324
  return cast<VarDecl>(DS->getSingleDecl());
1163
1.07M
}
1164
1165
663
void WhileStmt::setConditionVariable(const ASTContext &Ctx, VarDecl *V) {
1166
663
  assert(hasVarStorage() &&
1167
663
         "This while statement has no storage for a condition variable!");
1168
1169
663
  if (!V) {
1170
0
    getTrailingObjects<Stmt *>()[varOffset()] = nullptr;
1171
0
    return;
1172
0
  }
1173
1174
663
  SourceRange VarRange = V->getSourceRange();
1175
663
  getTrailingObjects<Stmt *>()[varOffset()] = new (Ctx)
1176
663
      DeclStmt(DeclGroupRef(V), VarRange.getBegin(), VarRange.getEnd());
1177
663
}
1178
1179
// IndirectGotoStmt
1180
162
LabelDecl *IndirectGotoStmt::getConstantTarget() {
1181
162
  if (auto *E = dyn_cast<AddrLabelExpr>(getTarget()->IgnoreParenImpCasts()))
1182
20
    return E->getLabel();
1183
142
  return nullptr;
1184
162
}
1185
1186
// ReturnStmt
1187
ReturnStmt::ReturnStmt(SourceLocation RL, Expr *E, const VarDecl *NRVOCandidate)
1188
3.76M
    : Stmt(ReturnStmtClass), RetExpr(E) {
1189
3.76M
  bool HasNRVOCandidate = NRVOCandidate != nullptr;
1190
3.76M
  ReturnStmtBits.HasNRVOCandidate = HasNRVOCandidate;
1191
3.76M
  if (HasNRVOCandidate)
1192
77.3k
    setNRVOCandidate(NRVOCandidate);
1193
3.76M
  setReturnLoc(RL);
1194
3.76M
}
1195
1196
ReturnStmt::ReturnStmt(EmptyShell Empty, bool HasNRVOCandidate)
1197
285k
    : Stmt(ReturnStmtClass, Empty) {
1198
285k
  ReturnStmtBits.HasNRVOCandidate = HasNRVOCandidate;
1199
285k
}
1200
1201
ReturnStmt *ReturnStmt::Create(const ASTContext &Ctx, SourceLocation RL,
1202
3.76M
                               Expr *E, const VarDecl *NRVOCandidate) {
1203
3.76M
  bool HasNRVOCandidate = NRVOCandidate != nullptr;
1204
3.76M
  void *Mem = Ctx.Allocate(totalSizeToAlloc<const VarDecl *>(HasNRVOCandidate),
1205
3.76M
                           alignof(ReturnStmt));
1206
3.76M
  return new (Mem) ReturnStmt(RL, E, NRVOCandidate);
1207
3.76M
}
1208
1209
ReturnStmt *ReturnStmt::CreateEmpty(const ASTContext &Ctx,
1210
285k
                                    bool HasNRVOCandidate) {
1211
285k
  void *Mem = Ctx.Allocate(totalSizeToAlloc<const VarDecl *>(HasNRVOCandidate),
1212
285k
                           alignof(ReturnStmt));
1213
285k
  return new (Mem) ReturnStmt(EmptyShell(), HasNRVOCandidate);
1214
285k
}
1215
1216
// CaseStmt
1217
CaseStmt *CaseStmt::Create(const ASTContext &Ctx, Expr *lhs, Expr *rhs,
1218
                           SourceLocation caseLoc, SourceLocation ellipsisLoc,
1219
38.1k
                           SourceLocation colonLoc) {
1220
38.1k
  bool CaseStmtIsGNURange = rhs != nullptr;
1221
38.1k
  void *Mem = Ctx.Allocate(
1222
38.1k
      totalSizeToAlloc<Stmt *, SourceLocation>(
1223
38.1k
          NumMandatoryStmtPtr + CaseStmtIsGNURange, CaseStmtIsGNURange),
1224
38.1k
      alignof(CaseStmt));
1225
38.1k
  return new (Mem) CaseStmt(lhs, rhs, caseLoc, ellipsisLoc, colonLoc);
1226
38.1k
}
1227
1228
CaseStmt *CaseStmt::CreateEmpty(const ASTContext &Ctx,
1229
13.8k
                                bool CaseStmtIsGNURange) {
1230
13.8k
  void *Mem = Ctx.Allocate(
1231
13.8k
      totalSizeToAlloc<Stmt *, SourceLocation>(
1232
13.8k
          NumMandatoryStmtPtr + CaseStmtIsGNURange, CaseStmtIsGNURange),
1233
13.8k
      alignof(CaseStmt));
1234
13.8k
  return new (Mem) CaseStmt(EmptyShell(), CaseStmtIsGNURange);
1235
13.8k
}
1236
1237
SEHTryStmt::SEHTryStmt(bool IsCXXTry, SourceLocation TryLoc, Stmt *TryBlock,
1238
                       Stmt *Handler)
1239
280
    : Stmt(SEHTryStmtClass), IsCXXTry(IsCXXTry), TryLoc(TryLoc) {
1240
280
  Children[TRY]     = TryBlock;
1241
280
  Children[HANDLER] = Handler;
1242
280
}
1243
1244
SEHTryStmt* SEHTryStmt::Create(const ASTContext &C, bool IsCXXTry,
1245
                               SourceLocation TryLoc, Stmt *TryBlock,
1246
280
                               Stmt *Handler) {
1247
280
  return new(C) SEHTryStmt(IsCXXTry,TryLoc,TryBlock,Handler);
1248
280
}
1249
1250
236
SEHExceptStmt* SEHTryStmt::getExceptHandler() const {
1251
236
  return dyn_cast<SEHExceptStmt>(getHandler());
1252
236
}
1253
1254
398
SEHFinallyStmt* SEHTryStmt::getFinallyHandler() const {
1255
398
  return dyn_cast<SEHFinallyStmt>(getHandler());
1256
398
}
1257
1258
SEHExceptStmt::SEHExceptStmt(SourceLocation Loc, Expr *FilterExpr, Stmt *Block)
1259
132
    : Stmt(SEHExceptStmtClass), Loc(Loc) {
1260
132
  Children[FILTER_EXPR] = FilterExpr;
1261
132
  Children[BLOCK]       = Block;
1262
132
}
1263
1264
SEHExceptStmt* SEHExceptStmt::Create(const ASTContext &C, SourceLocation Loc,
1265
132
                                     Expr *FilterExpr, Stmt *Block) {
1266
132
  return new(C) SEHExceptStmt(Loc,FilterExpr,Block);
1267
132
}
1268
1269
SEHFinallyStmt::SEHFinallyStmt(SourceLocation Loc, Stmt *Block)
1270
148
    : Stmt(SEHFinallyStmtClass), Loc(Loc), Block(Block) {}
1271
1272
SEHFinallyStmt* SEHFinallyStmt::Create(const ASTContext &C, SourceLocation Loc,
1273
148
                                       Stmt *Block) {
1274
148
  return new(C)SEHFinallyStmt(Loc,Block);
1275
148
}
1276
1277
CapturedStmt::Capture::Capture(SourceLocation Loc, VariableCaptureKind Kind,
1278
                               VarDecl *Var)
1279
414k
    : VarAndKind(Var, Kind), Loc(Loc) {
1280
414k
  switch (Kind) {
1281
10.7k
  case VCK_This:
1282
10.7k
    assert(!Var && "'this' capture cannot have a variable!");
1283
0
    break;
1284
207k
  case VCK_ByRef:
1285
207k
    assert(Var && "capturing by reference must have a variable!");
1286
0
    break;
1287
187k
  case VCK_ByCopy:
1288
187k
    assert(Var && "capturing by copy must have a variable!");
1289
0
    break;
1290
8.91k
  case VCK_VLAType:
1291
8.91k
    assert(!Var &&
1292
8.91k
           "Variable-length array type capture cannot have a variable!");
1293
0
    break;
1294
414k
  }
1295
414k
}
1296
1297
CapturedStmt::VariableCaptureKind
1298
4.45M
CapturedStmt::Capture::getCaptureKind() const {
1299
4.45M
  return VarAndKind.getInt();
1300
4.45M
}
1301
1302
1.50M
VarDecl *CapturedStmt::Capture::getCapturedVar() const {
1303
1.50M
  assert((capturesVariable() || capturesVariableByCopy()) &&
1304
1.50M
         "No variable available for 'this' or VAT capture");
1305
0
  return VarAndKind.getPointer();
1306
1.50M
}
1307
1308
3.17M
CapturedStmt::Capture *CapturedStmt::getStoredCaptures() const {
1309
3.17M
  unsigned Size = sizeof(CapturedStmt) + sizeof(Stmt *) * (NumCaptures + 1);
1310
1311
  // Offset of the first Capture object.
1312
3.17M
  unsigned FirstCaptureOffset = llvm::alignTo(Size, alignof(Capture));
1313
1314
3.17M
  return reinterpret_cast<Capture *>(
1315
3.17M
      reinterpret_cast<char *>(const_cast<CapturedStmt *>(this))
1316
3.17M
      + FirstCaptureOffset);
1317
3.17M
}
1318
1319
CapturedStmt::CapturedStmt(Stmt *S, CapturedRegionKind Kind,
1320
                           ArrayRef<Capture> Captures,
1321
                           ArrayRef<Expr *> CaptureInits,
1322
                           CapturedDecl *CD,
1323
                           RecordDecl *RD)
1324
  : Stmt(CapturedStmtClass), NumCaptures(Captures.size()),
1325
596k
    CapDeclAndKind(CD, Kind), TheRecordDecl(RD) {
1326
596k
  assert( S && "null captured statement");
1327
0
  assert(CD && "null captured declaration for captured statement");
1328
0
  assert(RD && "null record declaration for captured statement");
1329
1330
  // Copy initialization expressions.
1331
0
  Stmt **Stored = getStoredStmts();
1332
1.01M
  for (unsigned I = 0, N = NumCaptures; I != N; 
++I414k
)
1333
414k
    *Stored++ = CaptureInits[I];
1334
1335
  // Copy the statement being captured.
1336
596k
  *Stored = S;
1337
1338
  // Copy all Capture objects.
1339
596k
  Capture *Buffer = getStoredCaptures();
1340
596k
  std::copy(Captures.begin(), Captures.end(), Buffer);
1341
596k
}
1342
1343
CapturedStmt::CapturedStmt(EmptyShell Empty, unsigned NumCaptures)
1344
  : Stmt(CapturedStmtClass, Empty), NumCaptures(NumCaptures),
1345
32.3k
    CapDeclAndKind(nullptr, CR_Default) {
1346
32.3k
  getStoredStmts()[NumCaptures] = nullptr;
1347
32.3k
}
1348
1349
CapturedStmt *CapturedStmt::Create(const ASTContext &Context, Stmt *S,
1350
                                   CapturedRegionKind Kind,
1351
                                   ArrayRef<Capture> Captures,
1352
                                   ArrayRef<Expr *> CaptureInits,
1353
                                   CapturedDecl *CD,
1354
596k
                                   RecordDecl *RD) {
1355
  // The layout is
1356
  //
1357
  // -----------------------------------------------------------
1358
  // | CapturedStmt, Init, ..., Init, S, Capture, ..., Capture |
1359
  // ----------------^-------------------^----------------------
1360
  //                 getStoredStmts()    getStoredCaptures()
1361
  //
1362
  // where S is the statement being captured.
1363
  //
1364
596k
  assert(CaptureInits.size() == Captures.size() && "wrong number of arguments");
1365
1366
0
  unsigned Size = sizeof(CapturedStmt) + sizeof(Stmt *) * (Captures.size() + 1);
1367
596k
  if (!Captures.empty()) {
1368
    // Realign for the following Capture array.
1369
250k
    Size = llvm::alignTo(Size, alignof(Capture));
1370
250k
    Size += sizeof(Capture) * Captures.size();
1371
250k
  }
1372
1373
596k
  void *Mem = Context.Allocate(Size);
1374
596k
  return new (Mem) CapturedStmt(S, Kind, Captures, CaptureInits, CD, RD);
1375
596k
}
1376
1377
CapturedStmt *CapturedStmt::CreateDeserialized(const ASTContext &Context,
1378
32.3k
                                               unsigned NumCaptures) {
1379
32.3k
  unsigned Size = sizeof(CapturedStmt) + sizeof(Stmt *) * (NumCaptures + 1);
1380
32.3k
  if (NumCaptures > 0) {
1381
    // Realign for the following Capture array.
1382
17.9k
    Size = llvm::alignTo(Size, alignof(Capture));
1383
17.9k
    Size += sizeof(Capture) * NumCaptures;
1384
17.9k
  }
1385
1386
32.3k
  void *Mem = Context.Allocate(Size);
1387
32.3k
  return new (Mem) CapturedStmt(EmptyShell(), NumCaptures);
1388
32.3k
}
1389
1390
75.6k
Stmt::child_range CapturedStmt::children() {
1391
  // Children are captured field initializers.
1392
75.6k
  return child_range(getStoredStmts(), getStoredStmts() + NumCaptures);
1393
75.6k
}
1394
1395
0
Stmt::const_child_range CapturedStmt::children() const {
1396
0
  return const_child_range(getStoredStmts(), getStoredStmts() + NumCaptures);
1397
0
}
1398
1399
642k
CapturedDecl *CapturedStmt::getCapturedDecl() {
1400
642k
  return CapDeclAndKind.getPointer();
1401
642k
}
1402
1403
63.7k
const CapturedDecl *CapturedStmt::getCapturedDecl() const {
1404
63.7k
  return CapDeclAndKind.getPointer();
1405
63.7k
}
1406
1407
/// Set the outlined function declaration.
1408
32.3k
void CapturedStmt::setCapturedDecl(CapturedDecl *D) {
1409
32.3k
  assert(D && "null CapturedDecl");
1410
0
  CapDeclAndKind.setPointer(D);
1411
32.3k
}
1412
1413
/// Retrieve the captured region kind.
1414
33.1k
CapturedRegionKind CapturedStmt::getCapturedRegionKind() const {
1415
33.1k
  return CapDeclAndKind.getInt();
1416
33.1k
}
1417
1418
/// Set the captured region kind.
1419
32.3k
void CapturedStmt::setCapturedRegionKind(CapturedRegionKind Kind) {
1420
32.3k
  CapDeclAndKind.setInt(Kind);
1421
32.3k
}
1422
1423
739k
bool CapturedStmt::capturesVariable(const VarDecl *Var) const {
1424
1.02M
  for (const auto &I : captures()) {
1425
1.02M
    if (!I.capturesVariable() && 
!I.capturesVariableByCopy()330k
)
1426
29.0k
      continue;
1427
994k
    if (I.getCapturedVar()->getCanonicalDecl() == Var->getCanonicalDecl())
1428
427k
      return true;
1429
994k
  }
1430
1431
311k
  return false;
1432
739k
}