Go to the documentation of this file.
23 #include "llvm/Bitstream/BitstreamWriter.h"
24 using namespace clang;
41 : Writer(Writer), Record(Writer, Record),
48 "unhandled sub-statement writing AST file");
49 return Record.
EmitStmt(Code, AbbrevToUse);
56 #define STMT(Type, Base) \
57 void Visit##Type(Type *);
58 #include "clang/AST/StmtNodes.inc"
74 void ASTStmtWriter::VisitNullStmt(
NullStmt *S) {
77 Record.
push_back(S->NullStmtBits.HasLeadingEmptyMacro);
84 Record.
push_back(S->hasStoredFPFeatures());
85 for (
auto *CS : S->body())
87 if (S->hasStoredFPFeatures())
88 Record.
push_back(S->getStoredFPFeatures().getAsOpaqueInt());
94 void ASTStmtWriter::VisitSwitchCase(
SwitchCase *S) {
101 void ASTStmtWriter::VisitCaseStmt(
CaseStmt *S) {
103 Record.
push_back(S->caseStmtIsGNURange());
105 Record.
AddStmt(S->getSubStmt());
106 if (S->caseStmtIsGNURange()) {
113 void ASTStmtWriter::VisitDefaultStmt(
DefaultStmt *S) {
115 Record.
AddStmt(S->getSubStmt());
119 void ASTStmtWriter::VisitLabelStmt(
LabelStmt *S) {
123 Record.
AddStmt(S->getSubStmt());
132 Record.
AddStmt(S->getSubStmt());
137 void ASTStmtWriter::VisitIfStmt(
IfStmt *S) {
140 bool HasElse = S->getElse() !=
nullptr;
141 bool HasVar = S->getConditionVariableDeclStmt() !=
nullptr;
142 bool HasInit = S->getInit() !=
nullptr;
166 void ASTStmtWriter::VisitSwitchStmt(
SwitchStmt *S) {
169 bool HasInit = S->getInit() !=
nullptr;
170 bool HasVar = S->getConditionVariableDeclStmt() !=
nullptr;
173 Record.
push_back(S->isAllEnumCasesCovered());
186 for (
SwitchCase *SC = S->getSwitchCaseList(); SC;
187 SC = SC->getNextSwitchCase())
192 void ASTStmtWriter::VisitWhileStmt(
WhileStmt *S) {
195 bool HasVar = S->getConditionVariableDeclStmt() !=
nullptr;
209 void ASTStmtWriter::VisitDoStmt(
DoStmt *S) {
219 void ASTStmtWriter::VisitForStmt(
ForStmt *S) {
232 void ASTStmtWriter::VisitGotoStmt(
GotoStmt *S) {
244 Record.
AddStmt(S->getTarget());
248 void ASTStmtWriter::VisitContinueStmt(
ContinueStmt *S) {
254 void ASTStmtWriter::VisitBreakStmt(
BreakStmt *S) {
260 void ASTStmtWriter::VisitReturnStmt(
ReturnStmt *S) {
263 bool HasNRVOCandidate = S->getNRVOCandidate() !=
nullptr;
266 Record.
AddStmt(S->getRetValue());
267 if (HasNRVOCandidate)
274 void ASTStmtWriter::VisitDeclStmt(
DeclStmt *S) {
284 void ASTStmtWriter::VisitAsmStmt(
AsmStmt *S) {
294 void ASTStmtWriter::VisitGCCAsmStmt(
GCCAsmStmt *S) {
298 Record.
AddStmt(S->getAsmString());
301 for (
unsigned I = 0, N = S->getNumOutputs(); I != N; ++I) {
303 Record.
AddStmt(S->getOutputConstraintLiteral(I));
304 Record.
AddStmt(S->getOutputExpr(I));
308 for (
unsigned I = 0, N = S->getNumInputs(); I != N; ++I) {
310 Record.
AddStmt(S->getInputConstraintLiteral(I));
311 Record.
AddStmt(S->getInputExpr(I));
315 for (
unsigned I = 0, N = S->getNumClobbers(); I != N; ++I)
316 Record.
AddStmt(S->getClobberStringLiteral(I));
319 for (
auto *E : S->labels()) Record.
AddStmt(E);
324 void ASTStmtWriter::VisitMSAsmStmt(
MSAsmStmt *S) {
332 for (
unsigned I = 0, N = S->getNumAsmToks(); I != N; ++I) {
338 for (
unsigned I = 0, N = S->getNumClobbers(); I != N; ++I) {
343 for (
unsigned I = 0, N = S->getNumOutputs(); I != N; ++I) {
344 Record.
AddStmt(S->getOutputExpr(I));
345 Record.
AddString(S->getOutputConstraint(I));
349 for (
unsigned I = 0, N = S->getNumInputs(); I != N; ++I) {
350 Record.
AddStmt(S->getInputExpr(I));
351 Record.
AddString(S->getInputConstraint(I));
365 void ASTStmtWriter::VisitCoreturnStmt(
CoreturnStmt *S) {
368 Record.
AddStmt(S->getOperand());
369 Record.
AddStmt(S->getPromiseCall());
382 void ASTStmtWriter::VisitCoawaitExpr(
CoawaitExpr *E) {
383 VisitCoroutineSuspendExpr(E);
388 void ASTStmtWriter::VisitCoyieldExpr(
CoyieldExpr *E) {
389 VisitCoroutineSuspendExpr(E);
407 for (
const auto &DetailRecord : Satisfaction) {
408 Record.
AddStmt(
const_cast<Expr *
>(DetailRecord.first));
409 auto *E = DetailRecord.second.dyn_cast<
Expr *>();
432 void ASTStmtWriter::VisitConceptSpecializationExpr(
451 void ASTStmtWriter::VisitRequiresExpr(
RequiresExpr *E) {
461 if (
auto *TypeReq = dyn_cast<concepts::TypeRequirement>(R)) {
468 }
else if (
auto *ExprReq = dyn_cast<concepts::ExprRequirement>(R)) {
471 if (ExprReq->isExprSubstitutionFailure()) {
478 const auto &RetReq = ExprReq->getReturnTypeRequirement();
479 if (RetReq.isSubstitutionFailure()) {
482 }
else if (RetReq.isTypeConstraint()) {
485 RetReq.getTypeConstraintTemplateParameterList());
486 if (ExprReq->Status >=
489 ExprReq->getReturnTypeRequirementSubstitutedConstraintExpr());
491 assert(RetReq.isEmpty());
496 auto *NestedReq = cast<concepts::NestedRequirement>(R);
498 Record.
push_back(NestedReq->isSubstitutionFailure());
499 if (NestedReq->isSubstitutionFailure()){
501 NestedReq->getSubstitutionDiagnostic());
504 if (!NestedReq->isDependent())
515 void ASTStmtWriter::VisitCapturedStmt(
CapturedStmt *S) {
522 Record.
push_back(S->getCapturedRegionKind());
524 Record.
AddDeclRef(S->getCapturedRecordDecl());
527 for (
auto *I : S->capture_inits())
531 Record.
AddStmt(S->getCapturedStmt());
534 for (
const auto &I : S->captures()) {
535 if (I.capturesThis() || I.capturesVariableArrayType())
546 void ASTStmtWriter::VisitExpr(
Expr *E) {
554 void ASTStmtWriter::VisitConstantExpr(
ConstantExpr *E) {
574 llvm_unreachable(
"unexpected ResultKind!");
604 void ASTStmtWriter::VisitDeclRefExpr(
DeclRefExpr *E) {
649 if (E->
getValue().getBitWidth() == 32) {
712 void ASTStmtWriter::VisitParenExpr(
ParenExpr *E) {
723 for (
auto *SubStmt : E->
exprs())
745 void ASTStmtWriter::VisitOffsetOfExpr(
OffsetOfExpr *E) {
862 void ASTStmtWriter::VisitCallExpr(
CallExpr *E) {
869 Arg != ArgEnd; ++Arg)
877 void ASTStmtWriter::VisitRecoveryExpr(
RecoveryExpr *E) {
887 void ASTStmtWriter::VisitMemberExpr(
MemberExpr *E) {
892 E->hasQualifierOrFoundDecl() &&
895 bool HasTemplateInfo = E->hasTemplateKWAndArgsInfo();
931 void ASTStmtWriter::VisitObjCIsaExpr(
ObjCIsaExpr *E) {
949 VisitExplicitCastExpr(E);
956 void ASTStmtWriter::VisitCastExpr(
CastExpr *E) {
987 VisitBinaryOperator(E);
1032 VisitExplicitCastExpr(E);
1055 void ASTStmtWriter::VisitInitListExpr(
InitListExpr *E) {
1062 bool isArrayFiller = E->ArrayFillerOrUnionFieldInit.is<
Expr*>();
1070 if (isArrayFiller) {
1074 for (
unsigned I = 0, N = E->
getNumInits(); I != N; ++I)
1077 for (
unsigned I = 0, N = E->
getNumInits(); I != N; ++I)
1091 if (D.isFieldDesignator()) {
1101 }
else if (D.isArrayDesignator()) {
1103 Record.
push_back(D.getFirstExprIndex());
1107 assert(D.isArrayRangeDesignator() &&
"Unknown designator");
1109 Record.
push_back(D.getFirstExprIndex());
1125 void ASTStmtWriter::VisitNoInitExpr(
NoInitExpr *E) {
1132 Record.
AddStmt(E->SubExprs[0]);
1133 Record.
AddStmt(E->SubExprs[1]);
1147 void ASTStmtWriter::VisitVAArgExpr(
VAArgExpr *E) {
1174 void ASTStmtWriter::VisitStmtExpr(
StmtExpr *E) {
1183 void ASTStmtWriter::VisitChooseExpr(
ChooseExpr *E) {
1194 void ASTStmtWriter::VisitGNUNullExpr(
GNUNullExpr *E) {
1219 void ASTStmtWriter::VisitBlockExpr(
BlockExpr *E) {
1234 Stmt **Stmts = E->getTrailingObjects<
Stmt *>();
1238 for (
unsigned I = 0, N = E->
getNumAssocs() + 1; I < N; ++I)
1242 for (
unsigned I = 0, N = E->
getNumAssocs(); I < N; ++I)
1266 void ASTStmtWriter::VisitAtomicExpr(
AtomicExpr *E) {
1313 if (E->HasPackExpansions) {
1315 unsigned NumExpansions = 0;
1365 Record.
push_back(E->SetterAndMethodRefFlags.getInt());
1403 Record.
push_back(E->getNumStoredSelLocs());
1436 Arg != ArgEnd; ++Arg)
1440 for (
unsigned i = 0, e = E->getNumStoredSelLocs(); i != e; ++i)
1448 Record.
AddStmt(S->getElement());
1449 Record.
AddStmt(S->getCollection());
1458 Record.
AddStmt(S->getCatchBody());
1467 Record.
AddStmt(S->getFinallyBody());
1474 Record.
AddStmt(S->getSubStmt());
1481 Record.
push_back(S->getNumCatchStmts());
1482 Record.
push_back(S->getFinallyStmt() !=
nullptr);
1483 Record.
AddStmt(S->getTryBody());
1486 if (S->getFinallyStmt())
1487 Record.
AddStmt(S->getFinallyStmt());
1494 Record.
AddStmt(S->getSynchExpr());
1495 Record.
AddStmt(S->getSynchBody());
1502 Record.
AddStmt(S->getThrowExpr());
1525 void ASTStmtWriter::VisitCXXCatchStmt(
CXXCatchStmt *S) {
1529 Record.
AddStmt(S->getHandlerBlock());
1533 void ASTStmtWriter::VisitCXXTryStmt(
CXXTryStmt *S) {
1537 Record.
AddStmt(S->getTryBlock());
1538 for (
unsigned i = 0, e = S->getNumHandlers(); i != e; ++i)
1539 Record.
AddStmt(S->getHandler(i));
1550 Record.
AddStmt(S->getRangeStmt());
1551 Record.
AddStmt(S->getBeginStmt());
1552 Record.
AddStmt(S->getEndStmt());
1555 Record.
AddStmt(S->getLoopVarStmt());
1566 Record.
AddStmt(S->getSubStmt());
1582 void ASTStmtWriter::VisitCXXRewrittenBinaryOperator(
1604 for (
unsigned I = 0, N = E->
getNumArgs(); I != N; ++I)
1620 VisitCXXConstructExpr(E);
1625 void ASTStmtWriter::VisitLambdaExpr(
LambdaExpr *E) {
1655 VisitExplicitCastExpr(E);
1661 VisitCXXNamedCastExpr(E);
1666 VisitCXXNamedCastExpr(E);
1671 VisitCXXNamedCastExpr(E);
1676 VisitCXXNamedCastExpr(E);
1681 VisitCXXNamedCastExpr(E);
1686 VisitExplicitCastExpr(E);
1693 VisitExplicitCastExpr(E);
1730 void ASTStmtWriter::VisitCXXThisExpr(
CXXThisExpr *E) {
1737 void ASTStmtWriter::VisitCXXThrowExpr(
CXXThrowExpr *E) {
1775 void ASTStmtWriter::VisitCXXNewExpr(
CXXNewExpr *E) {
1841 if (
auto *BD = Obj.dyn_cast<
BlockDecl *>()) {
1855 void ASTStmtWriter::VisitCXXDependentScopeMemberExpr(
1862 Record.
push_back(E->hasTemplateKWAndArgsInfo());
1864 Record.
push_back(E->hasFirstQualifierFoundInScope());
1866 if (E->hasTemplateKWAndArgsInfo()) {
1882 if (E->hasFirstQualifierFoundInScope())
1923 void ASTStmtWriter::VisitOverloadExpr(
OverloadExpr *E) {
1937 OvI != OvE; ++OvI) {
1947 VisitOverloadExpr(E);
1957 VisitOverloadExpr(E);
1970 for (
unsigned I = 0, N = E->
getNumArgs(); I != N; ++I)
2027 void ASTStmtWriter::VisitSubstNonTypeTemplateParmExpr(
2037 void ASTStmtWriter::VisitSubstNonTypeTemplateParmPackExpr(
2067 void ASTStmtWriter::VisitCXXFoldExpr(
CXXFoldExpr *E) {
2073 Record.
AddStmt(E->SubExprs[0]);
2074 Record.
AddStmt(E->SubExprs[1]);
2075 Record.
AddStmt(E->SubExprs[2]);
2088 void ASTStmtWriter::VisitTypoExpr(
TypoExpr *E) {
2091 llvm_unreachable(
"Cannot write TypoExpr nodes");
2107 void ASTStmtWriter::VisitAsTypeExpr(
AsTypeExpr *E) {
2152 Record.
AddStmt(S->getFilterExpr());
2153 Record.
AddStmt(S->getBlock());
2160 Record.
AddStmt(S->getBlock());
2164 void ASTStmtWriter::VisitSEHTryStmt(
SEHTryStmt *S) {
2168 Record.
AddStmt(S->getTryBlock());
2169 Record.
AddStmt(S->getHandler());
2173 void ASTStmtWriter::VisitSEHLeaveStmt(
SEHLeaveStmt *S) {
2185 for (
Stmt *SubStmt : S->SubStmts)
2199 VisitOMPExecutableDirective(D);
2203 VisitOMPLoopBasedDirective(D);
2209 VisitOMPExecutableDirective(D);
2215 VisitOMPExecutableDirective(D);
2221 VisitOMPLoopDirective(D);
2225 void ASTStmtWriter::VisitOMPLoopTransformationDirective(
2227 VisitOMPLoopBasedDirective(D);
2232 VisitOMPLoopTransformationDirective(D);
2237 VisitOMPLoopTransformationDirective(D);
2242 VisitOMPLoopDirective(D);
2248 VisitOMPLoopDirective(D);
2254 VisitOMPExecutableDirective(D);
2261 VisitOMPExecutableDirective(D);
2268 VisitOMPExecutableDirective(D);
2274 VisitOMPExecutableDirective(D);
2280 VisitOMPExecutableDirective(D);
2286 VisitOMPLoopDirective(D);
2291 void ASTStmtWriter::VisitOMPParallelForSimdDirective(
2293 VisitOMPLoopDirective(D);
2297 void ASTStmtWriter::VisitOMPParallelMasterDirective(
2300 VisitOMPExecutableDirective(D);
2304 void ASTStmtWriter::VisitOMPParallelMaskedDirective(
2307 VisitOMPExecutableDirective(D);
2311 void ASTStmtWriter::VisitOMPParallelSectionsDirective(
2314 VisitOMPExecutableDirective(D);
2321 VisitOMPExecutableDirective(D);
2328 VisitOMPExecutableDirective(D);
2337 VisitOMPExecutableDirective(D);
2343 VisitOMPExecutableDirective(D);
2347 void ASTStmtWriter::VisitOMPTargetEnterDataDirective(
2350 VisitOMPExecutableDirective(D);
2354 void ASTStmtWriter::VisitOMPTargetExitDataDirective(
2357 VisitOMPExecutableDirective(D);
2361 void ASTStmtWriter::VisitOMPTargetParallelDirective(
2364 VisitOMPExecutableDirective(D);
2369 void ASTStmtWriter::VisitOMPTargetParallelForDirective(
2371 VisitOMPLoopDirective(D);
2378 VisitOMPExecutableDirective(D);
2384 VisitOMPExecutableDirective(D);
2391 VisitOMPExecutableDirective(D);
2397 VisitOMPExecutableDirective(D);
2403 VisitOMPExecutableDirective(D);
2409 VisitOMPExecutableDirective(D);
2415 VisitOMPExecutableDirective(D);
2421 VisitOMPExecutableDirective(D);
2427 VisitOMPExecutableDirective(D);
2431 void ASTStmtWriter::VisitOMPCancellationPointDirective(
2434 VisitOMPExecutableDirective(D);
2441 VisitOMPExecutableDirective(D);
2447 VisitOMPLoopDirective(D);
2453 VisitOMPLoopDirective(D);
2457 void ASTStmtWriter::VisitOMPMasterTaskLoopDirective(
2459 VisitOMPLoopDirective(D);
2464 void ASTStmtWriter::VisitOMPMaskedTaskLoopDirective(
2466 VisitOMPLoopDirective(D);
2471 void ASTStmtWriter::VisitOMPMasterTaskLoopSimdDirective(
2473 VisitOMPLoopDirective(D);
2477 void ASTStmtWriter::VisitOMPMaskedTaskLoopSimdDirective(
2479 VisitOMPLoopDirective(D);
2483 void ASTStmtWriter::VisitOMPParallelMasterTaskLoopDirective(
2485 VisitOMPLoopDirective(D);
2490 void ASTStmtWriter::VisitOMPParallelMaskedTaskLoopDirective(
2492 VisitOMPLoopDirective(D);
2497 void ASTStmtWriter::VisitOMPParallelMasterTaskLoopSimdDirective(
2499 VisitOMPLoopDirective(D);
2503 void ASTStmtWriter::VisitOMPParallelMaskedTaskLoopSimdDirective(
2505 VisitOMPLoopDirective(D);
2510 VisitOMPLoopDirective(D);
2516 VisitOMPExecutableDirective(D);
2520 void ASTStmtWriter::VisitOMPDistributeParallelForDirective(
2522 VisitOMPLoopDirective(D);
2527 void ASTStmtWriter::VisitOMPDistributeParallelForSimdDirective(
2529 VisitOMPLoopDirective(D);
2533 void ASTStmtWriter::VisitOMPDistributeSimdDirective(
2535 VisitOMPLoopDirective(D);
2539 void ASTStmtWriter::VisitOMPTargetParallelForSimdDirective(
2541 VisitOMPLoopDirective(D);
2546 VisitOMPLoopDirective(D);
2550 void ASTStmtWriter::VisitOMPTeamsDistributeDirective(
2552 VisitOMPLoopDirective(D);
2556 void ASTStmtWriter::VisitOMPTeamsDistributeSimdDirective(
2558 VisitOMPLoopDirective(D);
2562 void ASTStmtWriter::VisitOMPTeamsDistributeParallelForSimdDirective(
2564 VisitOMPLoopDirective(D);
2568 void ASTStmtWriter::VisitOMPTeamsDistributeParallelForDirective(
2570 VisitOMPLoopDirective(D);
2577 VisitOMPExecutableDirective(D);
2581 void ASTStmtWriter::VisitOMPTargetTeamsDistributeDirective(
2583 VisitOMPLoopDirective(D);
2587 void ASTStmtWriter::VisitOMPTargetTeamsDistributeParallelForDirective(
2589 VisitOMPLoopDirective(D);
2594 void ASTStmtWriter::VisitOMPTargetTeamsDistributeParallelForSimdDirective(
2596 VisitOMPLoopDirective(D);
2601 void ASTStmtWriter::VisitOMPTargetTeamsDistributeSimdDirective(
2603 VisitOMPLoopDirective(D);
2609 VisitOMPExecutableDirective(D);
2615 VisitOMPExecutableDirective(D);
2622 VisitOMPExecutableDirective(D);
2627 VisitOMPLoopDirective(D);
2631 void ASTStmtWriter::VisitOMPTeamsGenericLoopDirective(
2633 VisitOMPLoopDirective(D);
2637 void ASTStmtWriter::VisitOMPTargetTeamsGenericLoopDirective(
2639 VisitOMPLoopDirective(D);
2643 void ASTStmtWriter::VisitOMPParallelGenericLoopDirective(
2645 VisitOMPLoopDirective(D);
2649 void ASTStmtWriter::VisitOMPTargetParallelGenericLoopDirective(
2651 VisitOMPLoopDirective(D);
2660 assert(SwitchCaseIDs.find(S) == SwitchCaseIDs.end() &&
2661 "SwitchCase recorded twice");
2662 unsigned NextID = SwitchCaseIDs.size();
2663 SwitchCaseIDs[S] = NextID;
2668 assert(SwitchCaseIDs.find(S) != SwitchCaseIDs.end() &&
2669 "SwitchCase hasn't been seen yet");
2670 return SwitchCaseIDs[S];
2674 SwitchCaseIDs.clear();
2679 void ASTWriter::WriteSubStmt(
Stmt *S) {
2689 llvm::DenseMap<Stmt *, uint64_t>::iterator I = SubStmtEntries.find(S);
2690 if (I != SubStmtEntries.end()) {
2691 Record.push_back(I->second);
2697 assert(!ParentStmts.count(S) &&
"There is a Stmt cycle!");
2699 struct ParentStmtInserterRAII {
2704 : S(S), ParentStmts(ParentStmts) {
2705 ParentStmts.insert(S);
2707 ~ParentStmtInserterRAII() {
2708 ParentStmts.erase(S);
2712 ParentStmtInserterRAII ParentStmtInserter(S, ParentStmts);
2718 SubStmtEntries[S] =
Offset;
2723 void ASTRecordWriter::FlushStmts() {
2726 assert(Writer->SubStmtEntries.empty() &&
"unexpected entries in sub-stmt map");
2727 assert(Writer->ParentStmts.empty() &&
"unexpected entries in parent stmt map");
2729 for (
unsigned I = 0, N = StmtsToEmit.size(); I != N; ++I) {
2730 Writer->WriteSubStmt(StmtsToEmit[I]);
2732 assert(N == StmtsToEmit.size() &&
"record modified while being written!");
2739 Writer->SubStmtEntries.clear();
2740 Writer->ParentStmts.clear();
2743 StmtsToEmit.clear();
2746 void ASTRecordWriter::FlushSubStmts() {
2750 for (
unsigned I = 0, N = StmtsToEmit.size(); I != N; ++I) {
2751 Writer->WriteSubStmt(StmtsToEmit[N - I - 1]);
2752 assert(N == StmtsToEmit.size() &&
"record modified while being written!");
2755 StmtsToEmit.clear();
Expr * Update
Update expression for the originally specified iteration variable, calculated as VD = Begin + Counter...
StmtVisitor - This class implements a simple visitor for Stmt subclasses.
Represents the index of the current element of an array being initialized by an ArrayInitLoopExpr.
FPOptionsOverride getStoredFPFeatures() const
Get FPFeatures from trailing storage.
ObjCMethodDecl * setAtIndexMethodDecl() const
unsigned getCharacterLiteralAbbrev() const
IndirectGotoStmt - This represents an indirect goto.
bool hadMultipleCandidates() const
Returns true if this member expression refers to a method that was resolved from an overloaded set ha...
SourceLocation getRParenLoc() const
unsigned numOfIterators() const
Returns number of iterator definitions.
const Expr * getBase() const
LabelStmt - Represents a label, which has a substatement.
Expr * getPattern()
Retrieve the pattern of the pack expansion.
@ EXPR_CHARACTER_LITERAL
A CharacterLiteral record.
An expression trait intrinsic.
@ STMT_CXX_TRY
A CXXTryStmt record.
@ SuperInstance
The receiver is the instance of the superclass object.
This represents '#pragma omp for' directive.
bool passAlignment() const
Indicates whether the required alignment should be implicitly passed to the allocation function.
@ STMT_MS_DEPENDENT_EXISTS
OpenMP 5.0 [2.1.6 Iterators] Iterators are identifiers that expand to multiple values in the clause o...
QualType getComputationLHSType() const
MatrixSubscriptExpr - Matrix subscript expression for the MatrixType extension.
Represents a reference to a non-type template parameter that has been substituted with a template arg...
TypeSourceInfo * getArg(unsigned I) const
Retrieve the Ith argument.
ExprValueKind getValueKind() const
getValueKind - The value kind that this expression produces.
ExprDependence getDependence() const
InitListExpr * getSyntacticForm() const
bool hasCancel() const
Return true if current directive has inner cancel directive.
@ STMT_OMP_TARGET_PARALLEL_FOR_DIRECTIVE
bool isMicrosoftABI() const
Returns whether this is really a Win64 ABI va_arg expression.
NamedDecl * getFoundDecl()
Get the NamedDecl through which this reference occurred.
TypeSourceInfo * getWrittenTypeInfo() const
AtomicExpr - Variadic atomic builtins: __atomic_exchange, __atomic_fetch_*, __atomic_load,...
This represents '#pragma omp master taskloop simd' directive.
CaseStmt - Represent a case statement.
This represents '#pragma omp taskyield' directive.
SourceLocation getColonColonLoc() const
Retrieve the location of the '::' in a qualified pseudo-destructor expression.
The result of a constraint satisfaction check, containing the necessary information to diagnose an un...
@ EXPR_OBJC_PROPERTY_REF_EXPR
An ObjCPropertyRefExpr record.
ImaginaryLiteral - We support imaginary integer and floating point literals, like "1....
@ EXPR_PSEUDO_OBJECT
A PseudoObjectExpr record.
ObjCMethodDecl * getImplicitPropertySetter() const
@ STMT_DECL
A DeclStmt record.
QualType getBaseType() const
SourceLocation getRParenLoc() const
bool requiresADL() const
True if this declaration should be extended by argument-dependent lookup.
bool isObjectReceiver() const
An Embarcadero array type trait, as used in the implementation of __array_rank and __array_extent.
ObjCProtocolDecl * getProtocol() const
ObjCBoxedExpr - used for generalized expression boxing.
unsigned getDeclRefExprAbbrev() const
A boolean literal, per ([C++ lex.bool] Boolean literals).
bool doesUsualArrayDeleteWantSize() const
Answers whether the usual array deallocation function for the allocated type expects the size of the ...
ASTTemplateKWAndArgsInfo * getTrailingASTTemplateKWAndArgsInfo()
Return the optional template keyword and arguments info.
bool shouldCopy() const
shouldCopy - True if we should do the 'copy' part of the copy-restore.
@ EXPR_GENERIC_SELECTION
A GenericSelectionExpr record.
AsTypeExpr - Clang builtin function __builtin_astype [OpenCL 6.2.4.2] This AST node provides support ...
OffsetOfExpr - [C99 7.17] - This represents an expression of the form offsetof(record-type,...
@ STMT_CAPTURED
A CapturedStmt record.
SourceLocation getEllipsisLoc() const
Retrieve the location of the ellipsis that describes this pack expansion.
@ STMT_OMP_GENERIC_LOOP_DIRECTIVE
@ STMT_OMP_TARGET_DATA_DIRECTIVE
@ STMT_CASE
A CaseStmt record.
Represents a C++ pseudo-destructor (C++ [expr.pseudo]).
SourceLocation getLocation() const
SourceLocation getRBracketLoc() const
SourceLocation getRParenLoc() const
Expr * getSubExpr(unsigned Idx) const
@ EXPR_INTEGER_LITERAL
An IntegerLiteral record.
An element in an Objective-C dictionary literal.
const Expr * getSubExpr() const
unsigned getNumTemplateArgs() const
Retrieve the number of template arguments provided as part of this template-id.
@ EXPR_SHUFFLE_VECTOR
A ShuffleVectorExpr record.
SourceLocation getAmpAmpLoc() const
This represents the '#pragma omp tile' loop transformation directive.
semantics_iterator semantics_begin()
SwitchStmt - This represents a 'switch' stmt.
TypeSourceInfo * getTypeSourceInfo() const
@ STMT_OBJC_AT_THROW
An ObjCAtThrowStmt record.
unsigned getNumElements() const
getNumElements - Return number of elements of objective-c dictionary literal.
This represents '#pragma omp masked' directive.
void AddASTTemplateArgumentListInfo(const ASTTemplateArgumentListInfo *ASTTemplArgList)
Emits an AST template argument list info.
SourceLocation getRParenLoc() const
@ EXPR_CXX_UNRESOLVED_LOOKUP
A trivial tuple used to represent a source range.
Expr * getCommon() const
getCommon - Return the common expression, written to the left of the condition.
SourceLocation getLocation() const
Retrieve the location of the literal.
CXXNewExprBitfields CXXNewExprBits
WhileStmt - This represents a 'while' stmt.
Expr * getIndexExpr(unsigned Idx)
OpenMPDirectiveKind getCancelRegion() const
Get cancellation region for the current cancellation point.
const DeclContext * getParentContext() const
If the SourceLocExpr has been resolved return the subexpression representing the resolved value.
NullStmt - This is the null statement ";": C99 6.8.3p3.
@ STMT_NULL
A NullStmt record.
SourceRange getSourceRange() const LLVM_READONLY
@ STMT_OMP_CANONICAL_LOOP
unsigned getNumElements() const
getNumElements - Return number of elements of objective-c array literal.
@ EXPR_CXX_UNRESOLVED_MEMBER
@ STMT_MSASM
A MS-style AsmStmt record.
SourceLocation RAngleLoc
The source location of the right angle bracket ('>').
@ STMT_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_DIRECTIVE
A C++ reinterpret_cast expression (C++ [expr.reinterpret.cast]).
unsigned getNumClauses() const
Get number of clauses.
unsigned getNumArgs() const
Determine the number of arguments to this type trait.
unsigned getNumArgs() const
Return the number of arguments to the constructor call.
@ EXPR_CONVERT_VECTOR
A ConvertVectorExpr record.
Expr * getTrueExpr() const
getTrueExpr - Return the subexpression which will be evaluated if the condition evaluates to true; th...
SourceLocation getLocation() const
Retrieve the location of this expression.
SourceLocation getBridgeKeywordLoc() const
The location of the bridge keyword.
unsigned getSwitchCaseID(SwitchCase *S)
Retrieve the ID for the given switch-case statement.
SourceRange getParenOrBraceRange() const
SourceLocation getBeginLoc() const LLVM_READONLY
Selector getSelector() const
static DiagnosticBuilder Diag(DiagnosticsEngine *Diags, const LangOptions &Features, FullSourceLoc TokLoc, const char *TokBegin, const char *TokRangeBegin, const char *TokRangeEnd, unsigned DiagID)
Produce a diagnostic highlighting some portion of a literal.
This represents '#pragma omp parallel master taskloop' directive.
llvm::APFloat getValue() const
This represents '#pragma omp target parallel loop' directive.
SourceLocation getOpLoc() const
@ EXPR_CXX_DEPENDENT_SCOPE_DECL_REF
SourceLocation getRBraceLoc() const
bool isThrownVariableInScope() const
Determines whether the variable thrown by this expression (if any!) is within the innermost try block...
@ EXPR_CSTYLE_CAST
A CStyleCastExpr record.
Helper expressions and declaration for OMPIteratorExpr class for each iteration space.
Optional< unsigned > NumExpansions
The number of elements this pack expansion will expand to, if this is a pack expansion and is known.
@ EXPR_CONDITIONAL_OPERATOR
A ConditionOperator record.
ArrayRef< concepts::Requirement * > getRequirements() const
Represents a C99 designated initializer expression.
This represents '#pragma omp target teams distribute' combined directive.
Represents a reference to a non-type template parameter pack that has been substituted with a non-tem...
This represents '#pragma omp target teams distribute simd' combined directive.
VarDecl * getParameterPack() const
Get the parameter pack which this expression refers to.
Representation of an OpenMP canonical loop.
@ STMT_OMP_MASTER_TASKLOOP_SIMD_DIRECTIVE
NestedNameSpecifierLoc getQualifierLoc() const
Fetches the nested-name qualifier with source-location information, if one was given.
ObjCMethodDecl * getAtIndexMethodDecl() const
Encodes a location in the source.
Expr * getBaseExpr() const
IteratorRange getIteratorRange(unsigned I)
Gets the iterator range for the given iterator.
A member reference to an MSPropertyDecl.
bool hasStoredFPFeatures() const
Expr * getSubExpr() const
Retrieve the temporary-generating subexpression whose value will be materialized into a glvalue.
Expr * getSrcExpr() const
getSrcExpr - Return the Expr to be converted.
void AddIdentifierRef(const IdentifierInfo *II)
Emit a reference to an identifier.
SourceLocation TemplateKWLoc
The source location of the template keyword; this is used as part of the representation of qualified ...
bool isXLHSInRHSPart() const
Return true if helper update expression has form 'OpaqueValueExpr(x) binop OpaqueValueExpr(expr)' and...
SourceLocation getKeywordLoc() const
@ STMT_OMP_TARGET_TEAMS_DISTRIBUTE_SIMD_DIRECTIVE
SourceLocation getBegin() const
unsigned getValue() const
Kind getKind() const
Determine what kind of offsetof node this is.
SourceLocation getEqualOrColonLoc() const
Retrieve the location of the '=' that precedes the initializer value itself, if present.
@ EXPR_OBJC_BOOL_LITERAL
An ObjCBoolLiteralExpr record.
This represents '#pragma omp master' directive.
@ EXPR_STRING_LITERAL
A StringLiteral record.
SourceLocation getRParenLoc() const
unsigned getNumPlacementArgs() const
unsigned getNumObjects() const
Represents a place-holder for an object not to be initialized by anything.
FunctionDecl * getOperatorNew() const
Expr * getSemanticForm()
Get an equivalent semantic form for this expression.
void push_back(uint64_t N)
Minimal vector-like interface.
const Expr * getSubExpr() const
SourceLocation getOperatorLoc() const
@ Array
An index into an array.
SourceRange getTypeIdParens() const
This represents '#pragma omp taskwait' directive.
SourceLocation getRParenLoc() const
SourceRange getSourceRange() const LLVM_READONLY
SourceLocation tokens are not useful in isolation - they are low level value objects created/interpre...
ConceptDecl * getNamedConcept() const
Represents a C++ member access expression for which lookup produced a set of overloaded functions.
bool requiresZeroInitialization() const
Whether this construction first requires zero-initialization before the initializer is called.
@ STMT_FOR
A ForStmt record.
@ STMT_OMP_TEAMS_GENERIC_LOOP_DIRECTIVE
ExprObjectKind getObjectKind() const
getObjectKind - The object kind that this expression produces.
An Objective-C "bridged" cast expression, which casts between Objective-C pointers and C pointers,...
TypeTraitExprBitfields TypeTraitExprBits
@ EXPR_OBJC_ARRAY_LITERAL
@ STMT_OBJC_AT_SYNCHRONIZED
An ObjCAtSynchronizedStmt record.
TypeSourceInfo * getTypeSourceInfo() const
This represents '#pragma omp section' directive.
@ EXPR_CXX_PROPERTY_REF_EXPR
@ EXPR_IMPLICIT_VALUE_INIT
An ImplicitValueInitExpr record.
uint64_t getValue() const
@ EXPR_CXX_FUNCTIONAL_CAST
A CXXFunctionalCastExpr record.
unsigned getNumSemanticExprs() const
A type trait used in the implementation of various C++11 and Library TR1 trait templates.
@ EXPR_SUBST_NON_TYPE_TEMPLATE_PARM_PACK
NestedNameSpecifierLoc getQualifierLoc() const
Retrieve the nested-name-specifier that qualifies the name, with source location information.
A C++ typeid expression (C++ [expr.typeid]), which gets the type_info that corresponds to the supplie...
The iterator over UnresolvedSets.
Represents a member of a struct/union/class.
@ EXPR_OBJC_MESSAGE_EXPR
An ObjCMessageExpr record.
C++2a [expr.prim.req]: A requires-expression provides a concise way to express requirements on templa...
@ STMT_COMPOUND
A CompoundStmt record.
bool hasTemplateKWAndArgsInfo() const
SourceRange getSourceRange() const LLVM_READONLY
Retrieve the source range that covers this offsetof node.
CXXConstructorDecl * getConstructor() const
Get the constructor that this expression will call.
Represents a parameter to a function.
NestedNameSpecifierLoc getQualifierLoc() const
ConstantExprBitfields ConstantExprBits
NonOdrUseReason isNonOdrUse() const
Is this expression a non-odr-use reference, and if so, why?
bool hasCancel() const
Return true if current directive has inner cancel directive.
This represents '#pragma omp teams distribute simd' combined directive.
Expr * getCond() const
getCond - Return the condition expression; this is defined in terms of the opaque value.
Expr * getBase()
Retrieve the base object of this member expressions, e.g., the x in x.m.
@ STMT_CONTINUE
A ContinueStmt record.
bool hasCancel() const
Return true if current directive has inner cancel directive.
SourceRange getSourceRange() const LLVM_READONLY
Represents a new-expression for memory allocation and constructor calls, e.g: "new CXXNewExpr(foo)".
SourceLocation getStrTokenLoc(unsigned TokNum) const
Get one of the string literal token.
IfStmt - This represents an if/then/else.
Represents Objective-C's @try ... @catch ... @finally statement.
Frontend produces RecoveryExprs on semantic errors that prevent creating other well-formed expression...
@ EXPR_STMT
A StmtExpr record.
SourceLocation getLParen() const
Get the location of the left parentheses '('.
SourceLocation getEndLoc() const
Returns ending location of directive.
SourceLocation getLabelLoc() const
GotoStmt - This represents a direct goto.
CompoundStmt * getSubStmt()
Expr * getStride()
Get stride of array section.
Describes an C or C++ initializer list.
Expr * getInstanceReceiver()
Returns the object expression (receiver) for an instance message, or null for a message that is not a...
CXXBaseSpecifier * getBase() const
For a base class node, returns the base specifier.
@ EXPR_CXX_PSEUDO_DESTRUCTOR
IdentifierInfo * getFieldName() const
For a field or identifier offsetof node, returns the name of the field.
ExpressionTrait getTrait() const
void writeOMPChildren(OMPChildren *Data)
Writes data related to the OpenMP directives.
SourceLocation getBuiltinLoc() const
getBuiltinLoc - Return the location of the __builtin_astype token.
@ STMT_OMP_DISTRIBUTE_DIRECTIVE
@ STMT_OMP_PARALLEL_FOR_SIMD_DIRECTIVE
@ STMT_OMP_ORDERED_DIRECTIVE
@ EXPR_CXX_SCALAR_VALUE_INIT
UnaryOperator - This represents the unary-expression's (except sizeof and alignof),...
unsigned getLoopsNumber() const
Get number of collapsed loops.
@ EXPR_ARRAY_INIT_INDEX
An ArrayInitIndexExpr record.
@ STMT_OMP_MASKED_DIRECTIVE
unsigned getNumExpressions() const
@ STMT_OMP_META_DIRECTIVE
SourceLocation getLocation() const
SourceLocation getRParenLoc() const
bool isSuperReceiver() const
@ STMT_OMP_TARGET_TEAMS_DISTRIBUTE_DIRECTIVE
Represents a 'co_return' statement in the C++ Coroutines TS.
SourceLocation getLocation() const LLVM_READONLY
A C++ static_cast expression (C++ [expr.static.cast]).
Represents Objective-C's collection statement.
void AddAttributes(ArrayRef< const Attr * > Attrs)
Emit a list of attributes.
Represents a loop initializing the elements of an array.
semantics_iterator semantics_end()
@ STMT_OMP_SIMD_DIRECTIVE
MSPropertyDecl * getPropertyDecl() const
void AddTemplateParameterList(const TemplateParameterList *TemplateParams)
Emit a template parameter list.
void AddTypeSourceInfo(TypeSourceInfo *TInfo)
Emits a reference to a declarator info.
ASTWriter::RecordDataImpl & getRecordData() const
Extract the underlying record storage.
SourceRange getSourceRange() const
FPOptionsOverride getStoredFPFeatures() const
Get FPFeatures from trailing storage.
SourceLocation getRParenLoc() const
Retrieve the location of the closing parenthesis.
SourceLocation LAngleLoc
The source location of the left angle bracket ('<').
SourceRange getDirectInitRange() const
CXXTemporary * getTemporary()
void AddAPInt(const llvm::APInt &Value)
Emit an integral value.
@ EXPR_CXX_DYNAMIC_CAST
A CXXDynamicCastExpr record.
@ SuperClass
The receiver is a superclass.
IdentifierInfo * getDestroyedTypeIdentifier() const
In a dependent pseudo-destructor expression for which we do not have full type information on the des...
bool isImplicitProperty() const
SourceLocation getRParenLoc() const
@ STMT_OMP_TARGET_SIMD_DIRECTIVE
Expr * getExprOperand() const
SourceLocation getLParenLocation() const
unsigned getNumArgs() const
Retrieve the number of arguments.
@ EXPR_CXX_STD_INITIALIZER_LIST
A CXXStdInitializerListExpr record.
@ EXPR_CXX_BOOL_LITERAL
A CXXBoolLiteralExpr record.
decls_iterator decls_end() const
unsigned getScale() const
unsigned getByteLength() const
QualType getBaseType() const
bool hasQualifier() const
Determines whether this member expression actually had a C++ nested-name-specifier prior to the name ...
This represents '#pragma omp target teams distribute parallel for' combined directive.
ObjCMethodDecl * getArrayWithObjectsMethod() const
SourceLocation getLParenLoc() const
OpaqueValueExpr - An expression referring to an opaque object of a fixed type and value class.
TypeSourceInfo * getScopeTypeInfo() const
Retrieve the scope type in a qualified pseudo-destructor expression.
SourceLocation getLParenLoc() const
@ STMT_OMP_MASKED_TASKLOOP_DIRECTIVE
Represents a folding of a pack over an operator.
const DeclContext * getUsedContext() const
@ STMT_OMP_TARGET_EXIT_DATA_DIRECTIVE
ObjCPropertyDecl * getExplicitProperty() const
void AddSourceLocation(SourceLocation Loc, LocSeq *Seq=nullptr)
Emit a source location.
ObjCSubscriptRefExpr - used for array and dictionary subscripting.
ObjCBoolLiteralExpr - Objective-C Boolean Literal.
IdentKind getIdentKind() const
@ EXPR_CALL
A CallExpr record.
This represents '#pragma omp taskgroup' directive.
@ EXPR_OBJC_DICTIONARY_LITERAL
ObjCIndirectCopyRestoreExpr - Represents the passing of a function argument by indirect copy-restore ...
VarDecl * CounterVD
Internal normalized counter.
@ STMT_OBJC_AUTORELEASE_POOL
An ObjCAutoreleasePoolStmt record.
ConditionalOperator - The ?: ternary operator.
TypeSourceInfo * getTypeOperandSourceInfo() const
Retrieve source information for the type operand.
A C++ throw-expression (C++ [except.throw]).
ObjCArrayLiteral - used for objective-c array containers; as in: @["Hello", NSApp,...
bool doesUsualArrayDeleteWantSize() const
Answers whether the usual array deallocation function for the allocated type expects the size of the ...
@ STMT_OMP_TASKLOOP_DIRECTIVE
bool isDelegateInitCall() const
isDelegateInitCall - Answers whether this message send has been tagged as a "delegate init call",...
SourceLocation getIsaMemberLoc() const
getMemberLoc - Return the location of the "member", in X->F, it is the location of 'F'.
SourceLocation getNameLoc() const
SourceLocation getOperatorLoc() const
Retrieve the location of the '->' or '.' operator.
@ EXPR_DESIGNATED_INIT
A DesignatedInitExpr record.
@ EXPR_OBJC_PROTOCOL_EXPR
An ObjCProtocolExpr record.
ArrayTypeTrait getTrait() const
ObjCPropertyRefExpr - A dot-syntax expression to access an ObjC property.
@ EXPR_ADDR_LABEL
An AddrLabelExpr record.
OpaqueValueExpr * getOpaqueValue() const
getOpaqueValue - Return the opaque value placeholder.
Represents a C++ functional cast expression that builds a temporary object.
void AddTypeRef(QualType T)
Emit a reference to a type.
Represents a reference to a function parameter pack or init-capture pack that has been substituted bu...
@ EXPR_OBJC_BOXED_EXPRESSION
StringRef SubstitutedEntity
This represents '#pragma omp target exit data' directive.
SourceLocation getLocation() const
OMPChildren * Data
Data, associated with the directive.
void AddStmt(Stmt *S)
Add the given statement or expression to the queue of statements to emit.
SourceLocation getOperatorLoc() const
Retrieve the location of the '->' or '.' operator.
TypeSourceInfo * getEncodedTypeSourceInfo() const
This represents '#pragma omp for simd' directive.
SmallVector< uint64_t, 64 > RecordData
Represents an attribute applied to a statement.
This represents '#pragma omp parallel loop' directive.
bool hasStoredFPFeatures() const
Is FPFeatures in Trailing Storage?
SourceLocation getRightLoc() const
@ STMT_OMP_UNROLL_DIRECTIVE
SourceRange getSourceRange() const LLVM_READONLY
SourceLocation getLParenLoc() const
Represents Objective-C's @catch statement.
const ASTTemplateArgumentListInfo * getTemplateArgsAsWritten() const
UnaryExprOrTypeTraitExpr - expression with either a type or (unevaluated) expression operand.
@ EXPR_CXX_CONSTRUCT
A CXXConstructExpr record.
const OffsetOfNode & getComponent(unsigned Idx) const
CompoundStmt - This represents a group of statements like { stmt stmt }.
const DeclarationNameInfo & getNameInfo() const
Gets the full name info.
ConvertVectorExpr - Clang builtin function __builtin_convertvector This AST node provides support for...
ObjCSelectorExpr used for @selector in Objective-C.
@ EXPR_CXX_DEPENDENT_SCOPE_MEMBER
MS property subscript expression.
bool isConditionDependent() const
A C++ addrspace_cast expression (currently only enabled for OpenCL).
@ STMT_OMP_PARALLEL_MASTER_TASKLOOP_SIMD_DIRECTIVE
MSGuidDecl * getGuidDecl() const
This represents '#pragma omp parallel master' directive.
SourceLocation getThrowLoc() const
A reference to a name which we were able to look up during parsing but could not resolve to a specifi...
decls_iterator decls_begin() const
A rewritten comparison expression that was originally written using operator syntax.
unsigned getNumConcatenated() const
getNumConcatenated - Get the number of string literal tokens that were concatenated in translation ph...
StmtCode
Record codes for each kind of statement or expression.
@ EXPR_CXX_MEMBER_CALL
A CXXMemberCallExpr record.
@ STMT_OMP_TASKGROUP_DIRECTIVE
SourceLocation getLocation() const
AccessSpecifier getAccess() const
Represents a 'co_await' expression while the type of the promise is dependent.
Represents an expression that computes the length of a parameter pack.
void AddTemplateKWAndArgsInfo(const ASTTemplateKWAndArgsInfo &ArgInfo, const TemplateArgumentLoc *Args)
@ STMT_OMP_PARALLEL_SECTIONS_DIRECTIVE
Represents binding an expression to a temporary.
Represents a block literal declaration, which is like an unnamed FunctionDecl.
FPOptionsOverride getFPFeatures() const
bool isImplicitAccess() const
True if this is an implicit access, i.e., one in which the member being accessed was not written in t...
bool hasCancel() const
Return true if current directive has inner cancel directive.
unsigned getNumDecls() const
Gets the number of declarations in the unresolved set.
@ EXPR_ARRAY_SUBSCRIPT
An ArraySubscriptExpr record.
const Expr * getSubExpr() const
A builtin binary operation expression such as "x + y" or "x <= y".
unsigned getNumExpansions() const
Get the number of parameters in this parameter pack.
IdentifierInfo & getAccessor() const
TypeSourceInfo * getTypeInfoAsWritten() const
getTypeInfoAsWritten - Returns the type source info for the type that this expression is casting to.
bool isReferenceParameter() const
NonTypeTemplateParmDecl * getParameterPack() const
Retrieve the non-type template parameter pack being substituted.
This represents '#pragma omp teams' directive.
TypeSourceInfo * getTypeSourceInfo() const
getTypeSourceInfo - Return the destination type.
A C++ lambda expression, which produces a function object (of unspecified type) that can be invoked l...
This is a common base class for loop directives ('omp simd', 'omp for', 'omp for simd' etc....
Represents Objective-C's @throw statement.
SourceLocation getBeginLoc() const
Expr * getReplacement() const
SourceLocation getEnd() const
Expr * getKeyExpr() const
bool isArrow() const
Determine whether this member expression used the '->' operator; otherwise, it used the '.
void AddNestedNameSpecifierLoc(NestedNameSpecifierLoc NNS)
Emit a nested name specifier with source-location information.
Expr * getBaseExpr() const
ObjCStringLiteral, used for Objective-C string literals i.e.
const BlockDecl * getBlockDecl() const
SourceLocation getOperatorLoc() const
A POD class for pairing a NamedDecl* with an access specifier.
StringRef getBytes() const
Allow access to clients that need the byte representation, such as ASTWriterStmt::VisitStringLiteral(...
Expr * Key
The key for the dictionary element.
@ STMT_ATTRIBUTED
An AttributedStmt record.
Represents the specialization of a concept - evaluates to a prvalue of type bool.
SourceRange getSourceRange() const LLVM_READONLY
This represents '#pragma omp scan' directive.
Represents a prvalue temporary that is written into memory so that a reference can bind to it.
@ EXPR_DESIGNATED_INIT_UPDATE
A DesignatedInitUpdateExpr record.
unsigned getExprImplicitCastAbbrev() const
Iterator for iterating over Stmt * arrays that contain only T *.
ObjCDictionaryLiteral - AST node to represent objective-c dictionary literals; as in:"name" : NSUserN...
@ EXPR_CXX_STATIC_CAST
A CXXStaticCastExpr record.
bool constructsVBase() const
Determine whether this constructor is actually constructing a base class (rather than a complete obje...
bool isPostfixUpdate() const
Return true if 'v' expression must be updated to original value of 'x', false if 'v' must be updated ...
SourceLocation getRParenLoc() const
getRParenLoc - Return the location of final right parenthesis.
@ EXPR_OBJC_AVAILABILITY_CHECK
An ObjCAvailabilityCheckExpr record.
This represents '#pragma omp parallel masked taskloop simd' directive.
SourceLocation getLocation() const
@ STMT_OMP_TILE_DIRECTIVE
@ EXPR_CXX_BIND_TEMPORARY
SourceLocation getRParenLoc() const
Retrieve the location of the right parentheses (')') that follows the argument list.
void AddDeclarationNameLoc(const DeclarationNameLoc &DNLoc, DeclarationName Name)
ArrayRef< CleanupObject > getObjects() const
Expr * CounterUpdate
Updater for the internal counter: ++CounterVD;.
Represents a C++2a __builtin_bit_cast(T, v) expression.
static void addSubstitutionDiagnostic(ASTRecordWriter &Record, const concepts::Requirement::SubstitutionDiagnostic *D)
@ STMT_OMP_FOR_SIMD_DIRECTIVE
@ EXPR_SOURCE_LOC
A SourceLocExpr record.
@ STMT_DO
A DoStmt record.
This represents '#pragma omp parallel masked taskloop' directive.
SourceLocation getOpLoc() const
Represents a template argument.
SourceLocation getTemplateKWLoc() const
@ STMT_OMP_PARALLEL_MASKED_TASKLOOP_SIMD_DIRECTIVE
RequiresExprBodyDecl * getBody() const
bool hasCancel() const
Return true if current directive has inner cancel directive.
@ EXPR_IMPLICIT_CAST
An ImplicitCastExpr record.
A static requirement that can be used in a requires-expression to check properties of types and expre...
This represents '#pragma omp distribute parallel for simd' composite directive.
path_iterator path_begin()
@ STMT_OMP_PARALLEL_DIRECTIVE
SourceLocation getLParenLoc() const
ForStmt - This represents a 'for (init;cond;inc)' stmt.
A runtime availability query.
@ STMT_OBJC_AT_TRY
An ObjCAtTryStmt record.
This represents '#pragma omp depobj' directive.
bool hasStoredFPFeatures() const
TypeSourceInfo * getTypeSourceInfo() const
SourceLocation getLocation() const
@ STMT_OBJC_FOR_COLLECTION
An ObjCForCollectionStmt record.
Expr * getExprOperand() const
bool hasCancel() const
Return true if current directive has inner cancel directive.
@ STMT_CXX_CATCH
A CXXCatchStmt record.
FPOptionsOverride getFPFeatures() const
PseudoObjectExpr - An expression which accesses a pseudo-object l-value.
Represents Objective-C's @synchronized statement.
ReceiverKind getReceiverKind() const
Determine the kind of receiver that this message is being sent to.
Decl * getIteratorDecl(unsigned I)
Gets the iterator declaration for the given iterator.
FieldDecl * getField() const
For a field offsetof node, returns the field.
unsigned getNumSubExprs() const
Retrieve the total number of subexpressions in this designated initializer expression,...
unsigned getNumTemplateArgs() const
Retrieve the number of template arguments provided as part of this template-id.
BinaryConditionalOperator - The GNU extension to the conditional operator which allows the middle ope...
raw_arg_iterator raw_arg_end()
NonOdrUseReason isNonOdrUse() const
Is this expression a non-odr-use reference, and if so, why? This is only meaningful if the named memb...
unsigned getNumExprs() const
Return the number of expressions in this paren list.
@ EXPR_BUILTIN_BIT_CAST
A BuiltinBitCastExpr record.
Location wrapper for a TemplateArgument.
RequiresExprBitfields RequiresExprBits
@ Class
The receiver is a class.
SourceLocation getTildeLoc() const
Retrieve the location of the '~'.
The base class for all loop-based directives, including loop transformation directives.
@ EXPR_CONCEPT_SPECIALIZATION
TypeSourceInfo * getArgumentTypeInfo() const
Represents an implicitly-generated value initialization of an object of a given type.
void ClearSwitchCaseIDs()
NestedNameSpecifierLoc getQualifierLoc() const
Retrieve the nested-name-specifier that qualifies the member name, with source location information.
bool isPartOfExplicitCast() const
@ STMT_OMP_TARGET_PARALLEL_FOR_SIMD_DIRECTIVE
This represents '#pragma omp parallel' directive.
A C++ dynamic_cast expression (C++ [expr.dynamic.cast]).
SourceLocation getEndLoc() const LLVM_READONLY
Expr * getSourceExpr() const
The source expression of an opaque value expression is the expression which originally generated the ...
VersionTuple getVersion() const
SourceLocation getTokenLocation() const
getTokenLocation - The location of the __null token.
This represents '#pragma omp parallel for simd' directive.
Expr * getLowerBound()
Get lower bound of array section.
StringLiteral * getFunctionName()
QualType getComputationResultType() const
This represents '#pragma omp task' directive.
unsigned getNumComponents() const
IdentKind getIdentKind() const
SourceLocation getBuiltinLoc() const
NamedDecl * getFoundDecl() const
unsigned RecordSwitchCaseID(SwitchCase *S)
Record an ID for the given switch-case statement.
SourceLocation getIteratorKwLoc() const
FunctionDecl * getOperatorDelete() const
SourceLocation getMemberLoc() const
getMemberLoc - Return the location of the "member", in X->F, it is the location of 'F'.
StringLiteral - This represents a string literal expression, e.g.
This represents '#pragma omp target parallel' directive.
CXXConstructorDecl * getConstructor() const
Get the constructor that this expression will (ultimately) call.
@ STMT_OMP_CANCEL_DIRECTIVE
Represents an expression – generally a full-expression – that introduces cleanups to be run at the en...
@ STMT_OMP_TARGET_PARALLEL_DIRECTIVE
bool hasStoredFPFeatures() const
SourceRange getSourceRange() const
ObjCMethodDecl * getDictWithObjectsMethod() const
This captures a statement into a function.
Represents Objective-C's @finally statement.
This represents '#pragma omp parallel for' directive.
@ STMT_OMP_SCAN_DIRECTIVE
SourceLocation getRBracket() const
@ STMT_OMP_PARALLEL_GENERIC_LOOP_DIRECTIVE
@ EXPR_UNARY_OPERATOR
A UnaryOperator record.
CXXRecordDecl * getNamingClass()
Gets the 'naming class' (in the sense of C++0x [class.access.base]p5) of the lookup.
SourceLocation getLocation() const
SourceLocation getReceiverLocation() const
bool canOverflow() const
Returns true if the unary operator can cause an overflow.
unsigned getNumSubExprs() const
getNumSubExprs - Return the size of the SubExprs array.
@ STMT_OMP_DISPATCH_DIRECTIVE
CXXTryStmt - A C++ try block, including all handlers.
const Expr * getSubExpr() const
@ STMT_BREAK
A BreakStmt record.
@ STMT_OMP_DISTRIBUTE_SIMD_DIRECTIVE
ASTStmtWriter(ASTWriter &Writer, ASTWriter::RecordData &Record)
@ STMT_OMP_TEAMS_DIRECTIVE
Writes an AST file containing the contents of a translation unit.
ArrayRef< ParmVarDecl * > getLocalParameters() const
ObjCEncodeExpr, used for @encode in Objective-C.
@ STMT_NULL_PTR
A NULL expression.
Represents a call to an inherited base class constructor from an inheriting constructor.
A default argument (C++ [dcl.fct.default]).
@ STMT_RETURN
A ReturnStmt record.
Represents a C++11 pack expansion that produces a sequence of expressions.
unsigned path_size() const
This represents '#pragma omp critical' directive.
unsigned getTemplateDepth() const
bool hasQualifier() const
Determine whether this declaration reference was preceded by a C++ nested-name-specifier,...
This represents '#pragma omp target teams loop' directive.
This represents '#pragma omp target parallel for simd' directive.
Expr * getLHS()
An array access can be written A[4] or 4[A] (both are equivalent).
bool hadMultipleCandidates() const
Whether the referred constructor was resolved from an overloaded set having size greater than 1.
SourceLocation getMemberLoc() const
@ EXPR_OBJC_ISA
An ObjCIsa Expr record.
This represents '#pragma omp master taskloop' directive.
TypeSourceInfo * getAllocatedTypeSourceInfo() const
@ EXPR_SYCL_UNIQUE_STABLE_NAME
DependentScopeDeclRefExprBitfields DependentScopeDeclRefExprBits
ConstantExpr - An expression that occurs in a constant context and optionally the result of evaluatin...
@ EXPR_DECL_REF
A DeclRefExpr record.
@ EXPR_MEMBER
A MemberExpr record.
An expression that sends a message to the given Objective-C object or class.
This represents '#pragma omp teams distribute' directive.
static void addConstraintSatisfaction(ASTRecordWriter &Record, const ASTConstraintSatisfaction &Satisfaction)
SourceLocation EllipsisLoc
The location of the ellipsis, if this is a pack expansion.
SourceLocation getEndLoc() const LLVM_READONLY
Helper class for OffsetOfExpr.
@ EXPR_CXX_REWRITTEN_BINARY_OPERATOR
A CXXRewrittenBinaryOperator record.
CastKind getCastKind() const
SourceLocation getAtLoc() const
ValueDecl * getMemberDecl() const
Retrieve the member declaration to which this expression refers.
void writeUInt32(uint32_t Value)
@ STMT_OMP_TARGET_TEAMS_GENERIC_LOOP_DIRECTIVE
ChooseExpr - GNU builtin-in function __builtin_choose_expr.
@ EXPR_CXX_REINTERPRET_CAST
A CXXReinterpretCastExpr record.
bool hasCancel() const
Return true if current directive has inner cancel directive.
Expr * getQueriedExpression() const
llvm::APInt getValue() const
Expr * getLength()
Get length of array section.
An explicit cast in C or a C-style cast in C++, which uses the syntax ([s1][s2]......
Expr *const * semantics_iterator
@ STMT_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_DIRECTIVE
bool usesGNUSyntax() const
Determines whether this designated initializer used the deprecated GNU syntax for designated initiali...
DeclarationNameInfo getDirectiveName() const
Return name of the directive.
@ STMT_INDIRECT_GOTO
An IndirectGotoStmt record.
SourceLocation getLParenLoc() const
Retrieve the location of the left parentheses ('(') that precedes the argument list.
@ STMT_DEFAULT
A DefaultStmt record.
const Expr * getSubExpr() const
@ STMT_OMP_TARGET_DIRECTIVE
unsigned getPackLength() const
Retrieve the length of the parameter pack.
@ STMT_OMP_PARALLEL_MASKED_DIRECTIVE
A call to a literal operator (C++11 [over.literal]) written as a user-defined literal (C++11 [lit....
SourceLocation getRParenLoc() const
unsigned getArrayExprIndex() const
For an array element node, returns the index into the array of expressions.
This represents '#pragma omp masked taskloop' directive.
@ EXPR_CXX_EXPRESSION_TRAIT
@ STMT_OMP_DEPOBJ_DIRECTIVE
void writeBool(bool Value)
@ EXPR_PAREN_LIST
A ParenListExpr record.
This represents '#pragma omp cancel' directive.
CompoundLiteralExpr - [C99 6.5.2.5].
ObjCDictionaryElement getKeyValueElement(unsigned Index) const
bool hadMultipleCandidates() const
Returns true if this expression refers to a function that was resolved from an overloaded set having ...
llvm::MutableArrayRef< Designator > designators()
@ EXPR_SIZEOF_ALIGN_OF
A SizefAlignOfExpr record.
SourceLocation getRParenLoc() const
NestedNameSpecifierLoc getQualifierLoc() const
Retrieves the nested-name-specifier that qualifies the type name, with source-location information.
This represents '#pragma omp sections' directive.
void AddAPValue(const APValue &Value)
Emit an APvalue.
LifetimeExtendedTemporaryDecl * getLifetimeExtendedTemporaryDecl()
NamedDecl * getFirstQualifierFoundInScope() const
Retrieve the first part of the nested-name-specifier that was found in the scope of the member access...
SourceLocation getRParenLoc() const
getRParenLoc - Return the location of final right parenthesis.
bool isArgumentType() const
@ EXPR_FUNCTION_PARM_PACK
SourceLocation getRParenLoc() const
This represents '#pragma omp target teams distribute parallel for simd' combined directive.
This represents '#pragma omp masked taskloop simd' directive.
CStyleCastExpr - An explicit cast in C (C99 6.5.4) or a C-style cast in C++ (C++ [expr....
Expr * getBase() const
Retrieve the base object of this member expressions, e.g., the x in x.m.
void AddCXXTemporary(const CXXTemporary *Temp)
Emit a CXXTemporary.
This represents a GCC inline-assembly statement extension.
@ EXPR_CXX_OPERATOR_CALL
A CXXOperatorCallExpr record.
SourceLocation getOperatorLoc() const
getOperatorLoc - Return the location of the operator.
StringKind getKind() const
@ STMT_OMP_TARGET_ENTER_DATA_DIRECTIVE
This represents '#pragma omp flush' directive.
SourceLocation getSuperLoc() const
Retrieve the location of the 'super' keyword for a class or instance message to 'super',...
AsmStmt is the base class for GCCAsmStmt and MSAsmStmt.
@ EXPR_BINARY_OPERATOR
A BinaryOperator record.
This represents '#pragma omp target enter data' directive.
ArrayRef< TemplateArgument > getPartialArguments() const
Get.
const Expr * getBase() const
SourceLocation getRBracketLoc() const
@ STMT_OMP_FLUSH_DIRECTIVE
Expr * getSyntacticForm()
Return the syntactic form of this expression, i.e.
OverloadedOperatorKind getOperator() const
Returns the kind of overloaded operator that this expression refers to.
@ EXPR_CXX_NULL_PTR_LITERAL
void AddSelectorRef(Selector S)
Emit a Selector (which is a smart pointer reference).
SourceLocation getLocation() const
SourceLocation getBuiltinLoc() const
getBuiltinLoc - Return the location of the __builtin_convertvector token.
Iterator range representation begin:end[:step].
This represents '#pragma omp interop' directive.
@ DESIG_ARRAY
Array designator.
unsigned getIntegerLiteralAbbrev() const
Expr * Upper
Normalized upper bound.
@ STMT_IF
An IfStmt record.
capture_init_iterator capture_init_end()
Retrieve the iterator pointing one past the last initialization argument for this lambda expression.
SourceLocation getSecondColonLoc(unsigned I) const
Gets the location of the second ':' (if any) in the range for the given iteratori definition.
InitListExpr * getUpdater() const
This represents '#pragma omp distribute' directive.
@ DESIG_FIELD_NAME
Field designator where only the field name is known.
This represents '#pragma omp teams loop' directive.
SourceLocation getEndLoc() const
Expr * getExpr(unsigned Index)
getExpr - Return the Expr at the specified index.
ArrayRef< SourceRange > getBracketsRanges() const
Fetches source ranges for the brackets os the array shaping expression.
bool hasCancel() const
Return true if current directive has inner cancel directive.
SourceLocation getLocation() const
const DeclContext * getUsedContext() const
SourceLocation getRParen() const
Get the location of the right parentheses ')'.
SourceLocation getBeginLoc() const
@ STMT_OMP_TASKYIELD_DIRECTIVE
Expr * getBase()
An array section can be written only as Base[LowerBound:Length].
@ STMT_OMP_TARGET_PARALLEL_GENERIC_LOOP_DIRECTIVE
This represents '#pragma omp single' directive.
SourceLocation getLParenLoc() const
@ STMT_OBJC_CATCH
An ObjCAtCatchStmt record.
Expr * getElement(unsigned Index)
getElement - Return the Element at the specified index.
SourceLocation getOperatorLoc() const
Retrieve the location of the '.' or '->' operator.
SourceLocation getColonLoc(unsigned I) const
Gets the location of the first ':' in the range for the given iterator definition.
ParenExpr - This represents a parethesized expression, e.g.
Represents a 'co_yield' expression.
@ EXPR_CXX_ADDRSPACE_CAST
A CXXAddrspaceCastExpr record.
bool isFailOnly() const
Return true if 'v' is updated only when the condition is evaluated false (compare capture only).
@ STMT_CXX_FOR_RANGE
A CXXForRangeStmt record.
NonTypeTemplateParmDecl * getParameter() const
@ STMT_OMP_MASKED_TASKLOOP_SIMD_DIRECTIVE
ObjCProtocolExpr used for protocol expression in Objective-C.
unsigned getNumArgs() const
getNumArgs - Return the number of actual arguments to this call.
SourceLocation getExprLoc() const LLVM_READONLY
getExprLoc - Return the preferred location for the arrow when diagnosing a problem with a generic exp...
Expr * getBase()
Fetches base expression of array shaping expression.
@ EXPR_EXPR_WITH_CLEANUPS
@ EXPR_OBJC_INDIRECT_COPY_RESTORE
An ObjCIndirectCopyRestoreExpr record.
Represents a delete expression for memory deallocation and destructor calls, e.g.
BlockExpr - Adaptor class for mixing a BlockDecl with expressions.
StmtExpr - This is the GNU Statement Expression extension: ({int X=4; X;}).
This represents '#pragma omp taskloop' directive.
SourceLocation getRParenLoc() const
VarDecl *const * iterator
Iterators over the parameters which the parameter pack expanded into.
Decl - This represents one declaration (or definition), e.g.
@ EXPR_INIT_LIST
An InitListExpr record.
bool isTypeOperand() const
@ STMT_OMP_INTEROP_DIRECTIVE
@ Base
An implicit indirection through a C++ base class, when the field found is in a base class.
void AddDeclarationNameInfo(const DeclarationNameInfo &NameInfo)
@ EXPR_CXX_CONST_CAST
A CXXConstCastExpr record.
SourceRange getAngleBrackets() const LLVM_READONLY
AddrLabelExpr - The GNU address of label extension, representing &&label.
Represents an explicit C++ type conversion that uses "functional" notation (C++ [expr....
Represents a single C99 designator.
SourceLocation getOperatorLoc() const
getOperatorLoc - Return the location of the operator.
@ EXPR_NO_INIT
An NoInitExpr record.
ADLCallKind getADLCallKind() const
SourceLocation getBuiltinLoc() const
ArraySubscriptExpr - [C99 6.5.2.1] Array Subscripting.
A Microsoft C++ __uuidof expression, which gets the _GUID that corresponds to the supplied type or ex...
A qualified reference to a name whose declaration cannot yet be resolved.
DoStmt - This represents a 'do/while' stmt.
Expr * getSrcExpr() const
getSrcExpr - Return the Expr to be converted.
uint64_t EmitStmt(unsigned Code, unsigned Abbrev=0)
Emit the record to the stream, preceded by its substatements.
@ EXPR_VA_ARG
A VAArgExpr record.
const Expr * getSubExpr() const
The null pointer literal (C++11 [lex.nullptr])
Represents the body of a coroutine.
NameKind
The kind of the name stored in this DeclarationName.
@ STMT_OMP_TASKWAIT_DIRECTIVE
Expr * getArrayFiller()
If this initializer list initializes an array with more elements than there are initializers in the l...
SourceLocation getOperatorLoc() const
void AddAPFloat(const llvm::APFloat &Value)
Emit a floating-point value.
@ STMT_OMP_DISTRIBUTE_PARALLEL_FOR_SIMD_DIRECTIVE
SourceLocation getEndLoc() const
Represents a 'co_await' expression.
void AddSourceRange(SourceRange Range, LocSeq *Seq=nullptr)
Emit a source range.
BreakStmt - This represents a break.
@ EXPR_OBJC_ENCODE
An ObjCEncodeExpr record.
ObjCMethodDecl * getBoxingMethod() const
A reference to an overloaded function set, either an UnresolvedLookupExpr or an UnresolvedMemberExpr.
@ EXPR_OBJC_IVAR_REF_EXPR
An ObjCIvarRefExpr record.
@ STMT_STOP
A marker record that indicates that we are at the end of an expression.
This represents '#pragma omp cancellation point' directive.
This represents '#pragma omp dispatch' directive.
Represents a C++ member access expression where the actual member referenced could not be resolved be...
NestedNameSpecifierLoc getQualifierLoc() const
If the member name was qualified, retrieves the nested-name-specifier that precedes the member name,...
An object for streaming information to a record.
bool hasCancel() const
Return true if current directive has inner cancel directive.
@ STMT_OMP_SINGLE_DIRECTIVE
ArrayRef< Stmt const * > getParamMoves() const
CompoundAssignOperator - For compound assignments (e.g.
bool isImplicitAccess() const
True if this is an implicit access, i.e.
TypeSourceInfo * getTypeOperandSourceInfo() const
Retrieve source information for the type operand.
@ EXPR_PAREN
A ParenExpr record.
bool inheritedFromVBase() const
Determine whether the inherited constructor is inherited from a virtual base of the object we constru...
llvm::APFloatBase::Semantics getRawSemantics() const
Get a raw enumeration value representing the floating-point semantics of this literal (32-bit IEEE,...
Represents a C++11 noexcept expression (C++ [expr.unary.noexcept]).
bool isValueDependent() const
Determines whether the value of this expression depends on.
Describes an explicit type conversion that uses functional notion but could not be resolved because o...
SourceLocation getRBracketLoc() const
bool hasCancel() const
Return true if current directive has inner cancel directive.
@ STMT_GCCASM
A GCC-style AsmStmt record.
This is a basic class for representing single OpenMP executable directive.
@ STMT_OMP_TARGET_UPDATE_DIRECTIVE
unsigned getCharByteWidth() const
@ STMT_OMP_PARALLEL_MASTER_DIRECTIVE
CXXForRangeStmt - This represents C++0x [stmt.ranged]'s ranged for statement, represented as 'for (ra...
bool hasCancel() const
Return true if current directive has inner cancel directive.
SourceLocation getLeftLoc() const
TypeSourceInfo * getDestroyedTypeInfo() const
Retrieve the source location information for the type being destroyed.
DeclStmt - Adaptor class for mixing declarations with statements and expressions.
ContinueStmt - This represents a continue.
SourceLocation getDestroyedTypeLoc() const
Retrieve the starting location of the type being destroyed.
Expr * getFalseExpr() const
getFalseExpr - Return the subexpression which will be evaluated if the condnition evaluates to false;...
SourceLocation getParameterPackLocation() const
Retrieve the location of the parameter pack name.
SourceLocation getAtLoc() const
@ Identifier
A field in a dependent type, known only by its name.
@ STMT_OMP_MASTER_TASKLOOP_DIRECTIVE
A C++ const_cast expression (C++ [expr.const.cast]).
Represents the this expression in C++.
void AddDeclRef(const Decl *D)
Emit a reference to a declaration.
ExtVectorElementExpr - This represents access to specific elements of a vector, and may occur on the ...
This represents '#pragma omp teams distribute parallel for' composite directive.
TypoExpr - Internal placeholder for expressions where typo correction still needs to be performed and...
[C99 6.4.2.2] - A predefined identifier such as func.
@ EXPR_PREDEFINED
A PredefinedExpr record.
@ EXPR_CXX_UNRESOLVED_CONSTRUCT
Representation of a Microsoft __if_exists or __if_not_exists statement with a dependent name.
@ STMT_OMP_PARALLEL_MASTER_TASKLOOP_DIRECTIVE
AccessSpecifier getAccess() const
StringLiteral * getString()
SourceLocation getLocation() const
bool hasUnresolvedUsing() const
Determine whether the lookup results contain an unresolved using declaration.
bool isPartiallySubstituted() const
Determine whether this represents a partially-substituted sizeof...
Represents a call to a CUDA kernel function.
@ EXPR_CXX_INHERITED_CTOR_INIT
A CXXInheritedCtorInitExpr record.
ArrayRef< Expr * > getDimensions() const
Fetches the dimensions for array shaping expression.
Selector getSelector() const
@ Instance
The receiver is an object instance.
UnaryExprOrTypeTrait getKind() const
@ EXPR_MATERIALIZE_TEMPORARY
const Expr * getInitializer() const
@ EXPR_RECOVERY
A RecoveryExpr record.
NameKind getNameKind() const
Determine what kind of name this is.
This represents '#pragma omp simd' directive.
bool isConditionTrue() const
isConditionTrue - Return whether the condition is true (i.e.
SourceLocation getRBracketLoc() const
SourceRange getSourceRange() const
SourceLocation getBeginLoc() const
Returns starting location of directive kind.
Expr * getSubExpr() const
OpenMP 5.0 [2.1.5, Array Sections].
ArrayRef< TemplateArgument > getTemplateArguments() const
SourceLocation getUsedLocation() const
Retrieve the location where this default argument was actually used.
const CallExpr * getConfig() const
SourceLocation getLParenLoc() const
@ STMT_OMP_SECTIONS_DIRECTIVE
ObjCMethodDecl * getImplicitPropertyGetter() const
FieldDecl * getInitializedFieldInUnion()
If this initializes a union, specifies which field in the union to initialize.
void AddTemplateArgument(const TemplateArgument &Arg)
Emit a template argument.
SourceLocation getLocation() const
TypeSourceInfo * getTypeSourceInfo() const
Retrieve the type source information for the type being constructed.
This represents '#pragma omp target teams' directive.
@ EXPR_COMPOUND_ASSIGN_OPERATOR
A CompoundAssignOperator record.
@ EXPR_EXT_VECTOR_ELEMENT
An ExtVectorElementExpr record.
float __ovld __cnfn distance(float, float)
Returns the distance between p0 and p1.
const ASTConstraintSatisfaction & getSatisfaction() const
Get elaborated satisfaction info about the template arguments' satisfaction of the named concept.
unsigned getResultExprIndex() const
Return the index of the result-bearing expression into the semantics expressions, or PseudoObjectExpr...
Stmt - This represents one statement.
SourceLocation getBeginLoc() const
This represents '#pragma omp distribute parallel for' composite directive.
SourceLocation getGenericLoc() const
bool hasCancel() const
Return true if current directive has inner cancel directive.
This represents '#pragma omp parallel masked' directive.
Represents Objective-C's @autoreleasepool Statement.
TypeSourceInfo * getTypeSourceInfo() const
SourceLocation getBuiltinLoc() const
storage_type getAsOpaqueInt() const
bool isParenTypeId() const
CXXCatchStmt - This represents a C++ catch block.
void AddCXXBaseSpecifier(const CXXBaseSpecifier &Base)
Emit a C++ base specifier.
@ STMT_OMP_BARRIER_DIRECTIVE
bool hasCancel() const
Return true if current directive has inner cancel directive.
Represents a C11 generic selection.
An expression "T()" which creates a value-initialized rvalue of type T, which is a non-class type.
@ EXPR_ATOMIC
An AtomicExpr record.
ObjCIsaExpr - Represent X->isa and X.isa when X is an ObjC 'id' type.
@ STMT_OMP_ATOMIC_DIRECTIVE
@ EXPR_OBJC_STRING_LITERAL
An ObjCStringLiteral record.
@ EXPR_SUBST_NON_TYPE_TEMPLATE_PARM
@ EXPR_FIXEDPOINT_LITERAL
SourceLocation getRParenLoc() const
SourceLocation getRParenLoc() const
SourceLocation getLBraceLoc() const
bool hasCancel() const
Return true if current directive has inner cancel directive.
@ EXPR_GNU_NULL
A GNUNullExpr record.
OpenMPDirectiveKind getCancelRegion() const
Get cancellation region for the current cancellation point.
Represents a base class of a C++ class.
const ParmVarDecl * getParam() const
A container of type source information.
bool isTypeOperand() const
unsigned getNumTemplateArgs() const
Retrieve the number of template arguments provided as part of this template-id.
DeclarationName getDeclName() const
Get the actual, stored name of the declaration, which may be a special name.
This represents the '#pragma omp unroll' loop transformation directive.
SourceLocation getBuiltinLoc() const
FunctionDecl * getOperatorDelete() const
@ STMT_OMP_TASK_DIRECTIVE
const ObjCMethodDecl * getMethodDecl() const
@ STMT_LABEL
A LabelStmt record.
SourceLocation getColonLoc() const
SourceLocation getOperatorLoc() const
Retrieve the location of the cast operator keyword, e.g., static_cast.
SourceLocation getAtLoc() const
bool hasInitializer() const
Whether this new-expression has any initializer at all.
Abstract class common to all of the C++ "named"/"keyword" casts.
@ STMT_OMP_SECTION_DIRECTIVE
TypeSourceInfo * getClassReceiverTypeInfo() const
Returns a type-source information of a class message send, or nullptr if the message is not a class m...
This represents '#pragma omp target' directive.
SourceLocation getAtLoc() const
This represents '#pragma omp loop' directive.
This represents '#pragma omp target update' directive.
ArrayRef< Expr * > exprs()
SourceLocation getRParenLoc() const
SourceLocation getAssignLoc(unsigned I) const
Gets the location of '=' for the given iterator definition.
bool isReversed() const
Determine whether this expression was rewritten in reverse form.
TypeSourceInfo * getTypeSourceInfo()
@ STMT_OMP_PARALLEL_MASKED_TASKLOOP_DIRECTIVE
unsigned getLength() const
bool isArrow() const
Determine whether this pseudo-destructor expression was written using an '->' (otherwise,...
ImplicitCastExpr - Allows us to explicitly represent implicit type conversions, which have no direct ...
Represents a call to the builtin function __builtin_va_arg.
This represents '#pragma omp ordered' directive.
Represents a function call to one of __builtin_LINE(), __builtin_COLUMN(), __builtin_FUNCTION(),...
unsigned NumTemplateArgs
The number of template arguments in TemplateArgs.
@ STMT_OMP_MASTER_DIRECTIVE
MemberExpr - [C99 6.5.2.3] Structure and Union Members.
const NestedNameSpecifierLoc & getNestedNameSpecifierLoc() const
@ STMT_OMP_TARGET_TEAMS_DIRECTIVE
TypeSourceInfo * getQueriedTypeSourceInfo() const
@ EXPR_OFFSETOF
An OffsetOfExpr record.
OMPIteratorHelperData & getHelper(unsigned I)
Fetches helper data for the specified iteration space.
const Expr * getInit(unsigned Init) const
@ STMT_OMP_PARALLEL_FOR_DIRECTIVE
bool isArrow() const
Determine whether this member expression used the '->' operator; otherwise, it used the '.
NestedNameSpecifierLoc getQualifierLoc() const
If the name was qualified, retrieves the nested-name-specifier that precedes the name,...
@ EXPR_CHOOSE
A ChooseExpr record.
@ STMT_OMP_CANCELLATION_POINT_DIRECTIVE
@ EXPR_CONSTANT
A constant expression context.
This represents '#pragma omp distribute simd' composite directive.
const DeclarationNameInfo & getConceptNameInfo() const
bool isGlobalDelete() const
static unsigned getNumSubExprs(AtomicOp Op)
Determine the number of arguments the specified atomic builtin should have.
SourceLocation getQuestionLoc() const
@ STMT_SWITCH
A SwitchStmt record.
@ EXPR_FLOATING_LITERAL
A FloatingLiteral record.
const Expr * getBase() const
SourceLocation getLocation() const
SourceLocation getTargetCallLoc() const
Return location of target-call.
TemplateArgumentLoc * getTrailingTemplateArgumentLoc()
Return the optional template arguments.
Expr * getArg(unsigned Arg)
Return the specified argument.
@ STMT_OMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_DIRECTIVE
@ EXPR_CXX_PROPERTY_SUBSCRIPT_EXPR
This represents '#pragma omp parallel master taskloop simd' directive.
GNUNullExpr - Implements the GNU __null extension, which is a name for a null pointer constant that h...
Implicit construction of a std::initializer_list<T> object from an array temporary within list-initia...
@ STMT_OMP_DISTRIBUTE_PARALLEL_FOR_DIRECTIVE
bool refersToEnclosingVariableOrCapture() const
Does this DeclRefExpr refer to an enclosing local or a captured variable?
unsigned getNumArgs() const
Return the number of actual arguments in this message, not counting the receiver.
ObjCBridgeCastKind getBridgeKind() const
Determine which kind of bridge is being performed via this cast.
TemplateArgument getArgumentPack() const
Retrieve the template argument pack containing the substituted template arguments.
QualType getSuperType() const
Retrieve the type referred to by 'super'.
bool cleanupsHaveSideEffects() const
@ STMT_OMP_TEAMS_DISTRIBUTE_SIMD_DIRECTIVE
ObjCInterfaceDecl * getClassReceiver() const
bool isOverloaded() const
True if this lookup is overloaded.
This represents one expression.
@ STMT_GOTO
A GotoStmt record.
@ EXPR_OBJC_SELECTOR_EXPR
An ObjCSelectorExpr record.
NamedDecl * getDecl() const
bool isListInitialization() const
Whether this constructor call was written as list-initialization.
@ DESIG_ARRAY_RANGE
GNU array range designator.
SourceLocation getRParenLoc() const
@ STMT_OBJC_FINALLY
An ObjCAtFinallyStmt record.
@ STMT_WHILE
A WhileStmt record.
SourceLocation getParameterPackLocation() const
Get the location of the parameter pack.
bool isArrayFormAsWritten() const
This represents '#pragma omp target data' directive.
A use of a default initializer in a constructor or in aggregate initialization.
Expr * Value
The value of the dictionary element.
SourceRange getSourceRange() const LLVM_READONLY
SourceLocation getRParenLocation() const
QualType getSuperReceiverType() const
@ EXPR_BINARY_CONDITIONAL_OPERATOR
This represents '#pragma omp target simd' directive.
bool hasCancel() const
Return true if current directive has inner cancel directive.
bool hadArrayRangeDesignator() const
Represents an explicit template argument list in C++, e.g., the "<int>" in "sort<int>".
DeclAccessPair getFoundDecl() const
Retrieves the declaration found by lookup.
CastExpr - Base class for type casts, including both implicit casts (ImplicitCastExpr) and explicit c...
SourceLocation getLocation() const
Retrieve the location of the literal.
Expr * getDimensionExpression() const
@ DESIG_FIELD_DECL
Field designator where the field has been resolved to a declaration.
LambdaExprBitfields LambdaExprBits
This represents a Microsoft inline-assembly statement extension.
FieldDecl * getField()
Get the field whose initializer will be used.
A reference to a declared variable, function, enum, etc.
void AddToken(const Token &Tok, RecordDataImpl &Record)
Emit a token.
LabelDecl * getLabel() const
@ STMT_OMP_CRITICAL_DIRECTIVE
This represents '#pragma omp taskloop simd' directive.
This represents '#pragma omp target parallel for' directive.
SourceLocation getColonLocSecond() const
SourceLocation getLParenLoc() const
Expr * getOperand() const
CallExpr - Represents a function call (C99 6.5.2.2, C++ [expr.call]).
This represents '#pragma omp parallel sections' directive.
unsigned getNumInits() const
A call to an overloaded operator written using operator syntax.
@ STMT_OMP_TEAMS_DISTRIBUTE_DIRECTIVE
ShuffleVectorExpr - clang-specific builtin-in function __builtin_shufflevector.
bool hasCancel() const
Return true if current directive has inner cancel directive.
@ EXPR_COMPOUND_LITERAL
A CompoundLiteralExpr record.
Represents a call to a C++ constructor.
ObjCIvarRefExpr - A reference to an ObjC instance variable.
ConstructionKind getConstructionKind() const
Determine whether this constructor is actually constructing a base class (rather than a complete obje...
unsigned getNumAssocs() const
The number of association expressions.
raw_arg_iterator raw_arg_begin()
void AddVersionTuple(const VersionTuple &Version)
Emit a version tuple.
This represents '#pragma omp atomic' directive.
@ STMT_OMP_TASKLOOP_SIMD_DIRECTIVE
Represents a call to a member function that may be written either with member call syntax (e....
@ EXPR_CXX_TEMPORARY_OBJECT
A CXXTemporaryObjectExpr record.
OpaqueValueExpr * getOpaqueValue() const
getOpaqueValue - Return the opaque value placeholder.
@ STMT_OMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_DIRECTIVE
bool hasCancel() const
Return true if current directive has inner cancel directive.
@ EXPR_USER_DEFINED_LITERAL
A UserDefinedLiteral record.
ExplicitCastExpr - An explicit cast written in the source code.
bool isElidable() const
Whether this construction is elidable.
SourceLocation getKeywordLoc() const
@ SS_ConstraintsNotSatisfied
CharacterKind getKind() const
ReturnStmt - This represents a return, optionally of an expression: return; return 4;.
bool isStdInitListInitialization() const
Whether this constructor call was written as list-initialization, but was interpreted as forming a st...
bool hasTemplateKWAndArgsInfo() const
@ EXPR_ARRAY_INIT_LOOP
An ArrayInitLoopExpr record.
capture_init_iterator capture_init_begin()
Retrieve the first initialization argument for this lambda expression (which initializes the first ca...
SourceLocation getDefaultLoc() const
Represents a __leave statement.
@ EXPR_IMAGINARY_LITERAL
An ImaginaryLiteral record.
Represents an expression that might suspend coroutine execution; either a co_await or co_yield expres...
This represents '#pragma omp teams distribute parallel for simd' composite directive.
void AddTemplateArgumentLoc(const TemplateArgumentLoc &Arg)
Emits a template argument location.
This represents '#pragma omp barrier' directive.
@ STMT_REF_PTR
A reference to a previously [de]serialized Stmt record.
SourceLocation getColonLocFirst() const
SourceLocation getRParenLoc() const
Return the location of the right parentheses.
void AddString(StringRef Str)
Emit a string.
SourceLocation getRParenLoc() const
SourceLocation getAccessorLoc() const
SourceLocation getLParenLoc() const
@ EXPR_OBJC_SUBSCRIPT_REF_EXPR
An ObjCSubscriptRefExpr record.