Coverage Report

Created: 2019-07-24 05:18

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