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