Coverage Report

Created: 2020-02-18 08:44

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