22 #include "llvm/Bitcode/BitstreamWriter.h" 23 using namespace clang;
40 : Writer(Writer), Record(Writer, Record),
47 "unhandled sub-statement writing AST file");
48 return Record.
EmitStmt(Code, AbbrevToUse);
55 #define STMT(Type, Base) \ 56 void Visit##Type(Type *); 57 #include "clang/AST/StmtNodes.inc" 73 void ASTStmtWriter::VisitNullStmt(
NullStmt *S) {
76 Record.
push_back(S->HasLeadingEmptyMacro);
83 for (
auto *CS : S->
body())
90 void ASTStmtWriter::VisitSwitchCase(
SwitchCase *S) {
97 void ASTStmtWriter::VisitCaseStmt(
CaseStmt *S) {
106 void ASTStmtWriter::VisitDefaultStmt(
DefaultStmt *S) {
112 void ASTStmtWriter::VisitLabelStmt(
LabelStmt *S) {
129 void ASTStmtWriter::VisitIfStmt(
IfStmt *S) {
142 void ASTStmtWriter::VisitSwitchStmt(
SwitchStmt *S) {
156 void ASTStmtWriter::VisitWhileStmt(
WhileStmt *S) {
165 void ASTStmtWriter::VisitDoStmt(
DoStmt *S) {
175 void ASTStmtWriter::VisitForStmt(
ForStmt *S) {
188 void ASTStmtWriter::VisitGotoStmt(
GotoStmt *S) {
204 void ASTStmtWriter::VisitContinueStmt(
ContinueStmt *S) {
210 void ASTStmtWriter::VisitBreakStmt(
BreakStmt *S) {
216 void ASTStmtWriter::VisitReturnStmt(
ReturnStmt *S) {
224 void ASTStmtWriter::VisitDeclStmt(
DeclStmt *S) {
234 void ASTStmtWriter::VisitAsmStmt(
AsmStmt *S) {
244 void ASTStmtWriter::VisitGCCAsmStmt(
GCCAsmStmt *S) {
257 for (
unsigned I = 0, N = S->
getNumInputs(); I != N; ++I) {
270 void ASTStmtWriter::VisitMSAsmStmt(
MSAsmStmt *S) {
295 for (
unsigned I = 0, N = S->
getNumInputs(); I != N; ++I) {
311 void ASTStmtWriter::VisitCoreturnStmt(
CoreturnStmt *S) {
328 void ASTStmtWriter::VisitCoawaitExpr(
CoawaitExpr *E) {
329 VisitCoroutineSuspendExpr(E);
334 void ASTStmtWriter::VisitCoyieldExpr(
CoyieldExpr *E) {
335 VisitCoroutineSuspendExpr(E);
347 void ASTStmtWriter::VisitCapturedStmt(
CapturedStmt *S) {
366 for (
const auto &I : S->
captures()) {
367 if (I.capturesThis() || I.capturesVariableArrayType())
378 void ASTStmtWriter::VisitExpr(
Expr *E) {
397 void ASTStmtWriter::VisitDeclRefExpr(
DeclRefExpr *E) {
440 if (E->
getValue().getBitWidth() == 32) {
489 void ASTStmtWriter::VisitParenExpr(
ParenExpr *E) {
500 for (
unsigned i=0; i != E->NumExprs; ++i)
515 void ASTStmtWriter::VisitOffsetOfExpr(
OffsetOfExpr *E) {
582 void ASTStmtWriter::VisitCallExpr(
CallExpr *E) {
588 Arg != ArgEnd; ++Arg)
593 void ASTStmtWriter::VisitMemberExpr(
MemberExpr *E) {
600 Record.
push_back(E->HasTemplateKWAndArgsInfo);
601 if (E->HasTemplateKWAndArgsInfo) {
607 for (
unsigned i=0; i != NumTemplateArgs; ++i)
630 void ASTStmtWriter::VisitObjCIsaExpr(
ObjCIsaExpr *E) {
648 VisitExplicitCastExpr(E);
655 void ASTStmtWriter::VisitCastExpr(
CastExpr *E) {
677 VisitBinaryOperator(E);
721 VisitExplicitCastExpr(E);
744 void ASTStmtWriter::VisitInitListExpr(
InitListExpr *E) {
751 bool isArrayFiller = E->ArrayFillerOrUnionFieldInit.is<
Expr*>();
763 for (
unsigned I = 0, N = E->
getNumInits(); I != N; ++I)
766 for (
unsigned I = 0, N = E->
getNumInits(); I != N; ++I)
780 if (D.isFieldDesignator()) {
790 }
else if (D.isArrayDesignator()) {
796 assert(D.isArrayRangeDesignator() &&
"Unknown designator");
814 void ASTStmtWriter::VisitNoInitExpr(
NoInitExpr *E) {
821 Record.
AddStmt(E->SubExprs[0]);
822 Record.
AddStmt(E->SubExprs[1]);
836 void ASTStmtWriter::VisitVAArgExpr(
VAArgExpr *E) {
854 void ASTStmtWriter::VisitStmtExpr(
StmtExpr *E) {
862 void ASTStmtWriter::VisitChooseExpr(
ChooseExpr *E) {
873 void ASTStmtWriter::VisitGNUNullExpr(
GNUNullExpr *E) {
898 void ASTStmtWriter::VisitBlockExpr(
BlockExpr *E) {
909 for (
unsigned I = 0, N = E->
getNumAssocs(); I != N; ++I) {
939 void ASTStmtWriter::VisitAtomicExpr(
AtomicExpr *E) {
986 if (E->HasPackExpansions) {
988 unsigned NumExpansions = 0;
1038 Record.
push_back(E->SetterAndMethodRefFlags.getInt());
1076 Record.
push_back(E->getNumStoredSelLocs());
1109 Arg != ArgEnd; ++Arg)
1113 for (
unsigned i = 0, e = E->getNumStoredSelLocs(); i != e; ++i)
1192 void ASTStmtWriter::VisitCXXCatchStmt(
CXXCatchStmt *S) {
1200 void ASTStmtWriter::VisitCXXTryStmt(
CXXTryStmt *S) {
1252 for (
unsigned I = 0, N = E->
getNumArgs(); I != N; ++I)
1276 VisitCXXConstructExpr(E);
1281 void ASTStmtWriter::VisitLambdaExpr(
LambdaExpr *E) {
1288 Record.
push_back(E->ExplicitResultType);
1308 VisitExplicitCastExpr(E);
1314 VisitCXXNamedCastExpr(E);
1319 VisitCXXNamedCastExpr(E);
1324 VisitCXXNamedCastExpr(E);
1329 VisitCXXNamedCastExpr(E);
1334 VisitExplicitCastExpr(E);
1371 void ASTStmtWriter::VisitCXXThisExpr(
CXXThisExpr *E) {
1378 void ASTStmtWriter::VisitCXXThrowExpr(
CXXThrowExpr *E) {
1414 void ASTStmtWriter::VisitCXXNewExpr(
CXXNewExpr *E) {
1421 Record.
push_back(E->StoredInitializationStyle);
1487 Record.
push_back(E->HasTemplateKWAndArgsInfo);
1488 if (E->HasTemplateKWAndArgsInfo) {
1516 Record.
push_back(E->HasTemplateKWAndArgsInfo);
1517 if (E->HasTemplateKWAndArgsInfo) {
1543 void ASTStmtWriter::VisitOverloadExpr(
OverloadExpr *E) {
1569 VisitOverloadExpr(E);
1579 VisitOverloadExpr(E);
1592 for (
unsigned I = 0, N = E->
getNumArgs(); I != N; ++I)
1649 void ASTStmtWriter::VisitSubstNonTypeTemplateParmExpr(
1658 void ASTStmtWriter::VisitSubstNonTypeTemplateParmPackExpr(
1686 void ASTStmtWriter::VisitCXXFoldExpr(
CXXFoldExpr *E) {
1691 Record.
AddStmt(E->SubExprs[0]);
1692 Record.
AddStmt(E->SubExprs[1]);
1704 void ASTStmtWriter::VisitTypoExpr(
TypoExpr *E) {
1707 llvm_unreachable(
"Cannot write TypoExpr nodes");
1723 void ASTStmtWriter::VisitAsTypeExpr(
AsTypeExpr *E) {
1780 void ASTStmtWriter::VisitSEHTryStmt(
SEHTryStmt *S) {
1789 void ASTStmtWriter::VisitSEHLeaveStmt(
SEHLeaveStmt *S) {
1804 #define OPENMP_CLAUSE(Name, Class) \ 1805 void Visit##Class(Class *S); 1806 #include "clang/Basic/OpenMPKinds.def" 1817 Record.AddSourceLocation(C->
getLocEnd());
1826 VisitOMPClauseWithPreInit(C);
1830 void OMPClauseWriter::VisitOMPIfClause(
OMPIfClause *
C) {
1831 VisitOMPClauseWithPreInit(C);
1845 VisitOMPClauseWithPreInit(C);
1878 VisitOMPClauseWithPreInit(C);
1901 void OMPClauseWriter::VisitOMPReadClause(
OMPReadClause *) {}
1913 void OMPClauseWriter::VisitOMPSIMDClause(
OMPSIMDClause *) {}
1930 VisitOMPClauseWithPreInit(C);
1938 for (
auto *VE : C->
inits()) {
1945 VisitOMPClauseWithPostUpdate(C);
1968 VisitOMPClauseWithPostUpdate(C);
1987 VisitOMPClauseWithPostUpdate(C);
2006 VisitOMPClauseWithPostUpdate(C);
2027 VisitOMPClauseWithPostUpdate(C);
2029 Record.AddSourceLocation(C->getColonLoc());
2030 Record.push_back(C->getModifier());
2031 Record.AddSourceLocation(C->getModifierLoc());
2035 for (
auto *VE : C->privates()) {
2038 for (
auto *VE : C->inits()) {
2041 for (
auto *VE : C->updates()) {
2044 for (
auto *VE : C->finals()) {
2047 Record.AddStmt(C->getStep());
2048 Record.AddStmt(C->getCalcStep());
2052 Record.push_back(C->varlist_size());
2053 Record.AddSourceLocation(C->getLParenLoc());
2055 for (
auto *VE : C->varlists())
2061 Record.push_back(C->varlist_size());
2062 Record.AddSourceLocation(C->getLParenLoc());
2063 for (
auto *VE : C->varlists())
2074 Record.push_back(C->varlist_size());
2075 Record.AddSourceLocation(C->getLParenLoc());
2076 for (
auto *VE : C->varlists())
2087 Record.push_back(C->varlist_size());
2088 Record.AddSourceLocation(C->getLParenLoc());
2089 for (
auto *VE : C->varlists())
2094 Record.push_back(C->varlist_size());
2095 Record.AddSourceLocation(C->getLParenLoc());
2099 for (
auto *VE : C->varlists())
2105 VisitOMPClauseWithPreInit(C);
2110 void OMPClauseWriter::VisitOMPMapClause(
OMPMapClause *C) {
2111 Record.push_back(C->varlist_size());
2115 Record.AddSourceLocation(C->getLParenLoc());
2118 Record.AddSourceLocation(C->
getMapLoc());
2120 for (
auto *E : C->varlists())
2123 Record.AddDeclRef(D);
2125 Record.push_back(N);
2127 Record.push_back(N);
2129 Record.AddStmt(M.getAssociatedExpression());
2130 Record.AddDeclRef(M.getAssociatedDeclaration());
2135 VisitOMPClauseWithPreInit(C);
2141 VisitOMPClauseWithPreInit(C);
2161 void OMPClauseWriter::VisitOMPHintClause(
OMPHintClause *C) {
2167 VisitOMPClauseWithPreInit(C);
2183 void OMPClauseWriter::VisitOMPToClause(
OMPToClause *C) {
2184 Record.push_back(C->varlist_size());
2188 Record.AddSourceLocation(C->getLParenLoc());
2189 for (
auto *E : C->varlists())
2192 Record.AddDeclRef(D);
2194 Record.push_back(N);
2196 Record.push_back(N);
2198 Record.AddStmt(M.getAssociatedExpression());
2199 Record.AddDeclRef(M.getAssociatedDeclaration());
2203 void OMPClauseWriter::VisitOMPFromClause(
OMPFromClause *C) {
2204 Record.push_back(C->varlist_size());
2208 Record.AddSourceLocation(C->getLParenLoc());
2209 for (
auto *E : C->varlists())
2212 Record.AddDeclRef(D);
2214 Record.push_back(N);
2216 Record.push_back(N);
2218 Record.AddStmt(M.getAssociatedExpression());
2219 Record.AddDeclRef(M.getAssociatedDeclaration());
2224 Record.push_back(C->varlist_size());
2228 Record.AddSourceLocation(C->getLParenLoc());
2229 for (
auto *E : C->varlists())
2233 for (
auto *VE : C->
inits())
2236 Record.AddDeclRef(D);
2238 Record.push_back(N);
2240 Record.push_back(N);
2242 Record.AddStmt(M.getAssociatedExpression());
2243 Record.AddDeclRef(M.getAssociatedDeclaration());
2248 Record.push_back(C->varlist_size());
2252 Record.AddSourceLocation(C->getLParenLoc());
2253 for (
auto *E : C->varlists())
2256 Record.AddDeclRef(D);
2258 Record.push_back(N);
2260 Record.push_back(N);
2262 Record.AddStmt(M.getAssociatedExpression());
2263 Record.AddDeclRef(M.getAssociatedDeclaration());
2272 Record.AddSourceLocation(E->
getLocEnd());
2285 VisitOMPExecutableDirective(D);
2292 Record.AddStmt(D->
getInc());
2325 for (
auto I : D->
inits()) {
2331 for (
auto I : D->
finals()) {
2339 VisitOMPExecutableDirective(D);
2340 Record.push_back(D->
hasCancel() ? 1 : 0);
2345 VisitOMPLoopDirective(D);
2350 VisitOMPLoopDirective(D);
2351 Record.push_back(D->
hasCancel() ? 1 : 0);
2356 VisitOMPLoopDirective(D);
2363 VisitOMPExecutableDirective(D);
2364 Record.push_back(D->
hasCancel() ? 1 : 0);
2370 VisitOMPExecutableDirective(D);
2371 Record.push_back(D->
hasCancel() ? 1 : 0);
2378 VisitOMPExecutableDirective(D);
2384 VisitOMPExecutableDirective(D);
2391 VisitOMPExecutableDirective(D);
2397 VisitOMPLoopDirective(D);
2398 Record.push_back(D->
hasCancel() ? 1 : 0);
2402 void ASTStmtWriter::VisitOMPParallelForSimdDirective(
2404 VisitOMPLoopDirective(D);
2408 void ASTStmtWriter::VisitOMPParallelSectionsDirective(
2412 VisitOMPExecutableDirective(D);
2413 Record.push_back(D->
hasCancel() ? 1 : 0);
2420 VisitOMPExecutableDirective(D);
2421 Record.push_back(D->
hasCancel() ? 1 : 0);
2428 VisitOMPExecutableDirective(D);
2429 Record.AddStmt(D->
getX());
2430 Record.AddStmt(D->
getV());
2441 VisitOMPExecutableDirective(D);
2448 VisitOMPExecutableDirective(D);
2452 void ASTStmtWriter::VisitOMPTargetEnterDataDirective(
2456 VisitOMPExecutableDirective(D);
2460 void ASTStmtWriter::VisitOMPTargetExitDataDirective(
2464 VisitOMPExecutableDirective(D);
2468 void ASTStmtWriter::VisitOMPTargetParallelDirective(
2472 VisitOMPExecutableDirective(D);
2476 void ASTStmtWriter::VisitOMPTargetParallelForDirective(
2478 VisitOMPLoopDirective(D);
2479 Record.push_back(D->
hasCancel() ? 1 : 0);
2485 VisitOMPExecutableDirective(D);
2491 VisitOMPExecutableDirective(D);
2497 VisitOMPExecutableDirective(D);
2504 VisitOMPExecutableDirective(D);
2512 VisitOMPExecutableDirective(D);
2519 VisitOMPExecutableDirective(D);
2526 VisitOMPExecutableDirective(D);
2530 void ASTStmtWriter::VisitOMPCancellationPointDirective(
2533 VisitOMPExecutableDirective(D);
2541 VisitOMPExecutableDirective(D);
2547 VisitOMPLoopDirective(D);
2552 VisitOMPLoopDirective(D);
2557 VisitOMPLoopDirective(D);
2564 VisitOMPExecutableDirective(D);
2568 void ASTStmtWriter::VisitOMPDistributeParallelForDirective(
2570 VisitOMPLoopDirective(D);
2571 Record.push_back(D->
hasCancel() ? 1 : 0);
2575 void ASTStmtWriter::VisitOMPDistributeParallelForSimdDirective(
2577 VisitOMPLoopDirective(D);
2581 void ASTStmtWriter::VisitOMPDistributeSimdDirective(
2583 VisitOMPLoopDirective(D);
2587 void ASTStmtWriter::VisitOMPTargetParallelForSimdDirective(
2589 VisitOMPLoopDirective(D);
2594 VisitOMPLoopDirective(D);
2598 void ASTStmtWriter::VisitOMPTeamsDistributeDirective(
2600 VisitOMPLoopDirective(D);
2604 void ASTStmtWriter::VisitOMPTeamsDistributeSimdDirective(
2606 VisitOMPLoopDirective(D);
2610 void ASTStmtWriter::VisitOMPTeamsDistributeParallelForSimdDirective(
2612 VisitOMPLoopDirective(D);
2616 void ASTStmtWriter::VisitOMPTeamsDistributeParallelForDirective(
2618 VisitOMPLoopDirective(D);
2619 Record.push_back(D->
hasCancel() ? 1 : 0);
2626 VisitOMPExecutableDirective(D);
2630 void ASTStmtWriter::VisitOMPTargetTeamsDistributeDirective(
2632 VisitOMPLoopDirective(D);
2636 void ASTStmtWriter::VisitOMPTargetTeamsDistributeParallelForDirective(
2638 VisitOMPLoopDirective(D);
2639 Record.push_back(D->
hasCancel() ? 1 : 0);
2643 void ASTStmtWriter::VisitOMPTargetTeamsDistributeParallelForSimdDirective(
2645 VisitOMPLoopDirective(D);
2650 void ASTStmtWriter::VisitOMPTargetTeamsDistributeSimdDirective(
2652 VisitOMPLoopDirective(D);
2661 assert(SwitchCaseIDs.find(S) == SwitchCaseIDs.end() &&
2662 "SwitchCase recorded twice");
2663 unsigned NextID = SwitchCaseIDs.size();
2664 SwitchCaseIDs[S] = NextID;
2669 assert(SwitchCaseIDs.find(S) != SwitchCaseIDs.end() &&
2670 "SwitchCase hasn't been seen yet");
2671 return SwitchCaseIDs[S];
2675 SwitchCaseIDs.clear();
2680 void ASTWriter::WriteSubStmt(
Stmt *S) {
2690 llvm::DenseMap<Stmt *, uint64_t>::iterator I = SubStmtEntries.find(S);
2691 if (I != SubStmtEntries.end()) {
2692 Record.push_back(I->second);
2698 assert(!ParentStmts.count(S) &&
"There is a Stmt cycle!");
2700 struct ParentStmtInserterRAII {
2705 : S(S), ParentStmts(ParentStmts) {
2706 ParentStmts.insert(S);
2708 ~ParentStmtInserterRAII() {
2709 ParentStmts.erase(S);
2713 ParentStmtInserterRAII ParentStmtInserter(S, ParentStmts);
2719 SubStmtEntries[S] =
Offset;
2724 void ASTRecordWriter::FlushStmts() {
2727 assert(Writer->SubStmtEntries.empty() &&
"unexpected entries in sub-stmt map");
2728 assert(Writer->ParentStmts.empty() &&
"unexpected entries in parent stmt map");
2730 for (
unsigned I = 0, N = StmtsToEmit.size(); I != N; ++I) {
2731 Writer->WriteSubStmt(StmtsToEmit[I]);
2733 assert(N == StmtsToEmit.size() &&
"record modified while being written!");
2740 Writer->SubStmtEntries.clear();
2741 Writer->ParentStmts.clear();
2744 StmtsToEmit.clear();
2747 void ASTRecordWriter::FlushSubStmts() {
2751 for (
unsigned I = 0, N = StmtsToEmit.size(); I != N; ++I) {
2752 Writer->WriteSubStmt(StmtsToEmit[N - I - 1]);
2753 assert(N == StmtsToEmit.size() &&
"record modified while being written!");
2756 StmtsToEmit.clear();
A CXXConstCastExpr record.
SourceLocation getRParenLoc() const
ObjCPropertyRefExpr - A dot-syntax expression to access an ObjC property.
unsigned getNumSemanticExprs() const
A call to an overloaded operator written using operator syntax.
ObjCIndirectCopyRestoreExpr - Represents the passing of a function argument by indirect copy-restore ...
bool hasCancel() const
Return true if current directive has inner cancel directive.
The receiver is the instance of the superclass object.
Represents a single C99 designator.
unsigned getNumTemplateArgs() const
Retrieve the number of template arguments provided as part of this template-id.
SourceLocation getStartLoc() const
SourceLocation getRBracLoc() const
Defines the clang::ASTContext interface.
A CompoundLiteralExpr record.
This represents '#pragma omp distribute simd' composite directive.
const BlockDecl * getBlockDecl() const
Expr * getNextUpperBound() const
IdentifierInfo * getInputIdentifier(unsigned i) const
This represents '#pragma omp master' directive.
TypeSourceInfo * getTypeOperandSourceInfo() const
Retrieve source information for the type operand.
SourceLocation getRParenLoc() const
The null pointer literal (C++11 [lex.nullptr])
unsigned getNumDecls() const
Gets the number of declarations in the unresolved set.
This represents '#pragma omp task' directive.
This represents a GCC inline-assembly statement extension.
Represents a 'co_await' expression while the type of the promise is dependent.
SourceLocation getForLoc() const
NamedDecl * getFoundDecl()
Get the NamedDecl through which this reference occurred.
helper_expr_const_range reduction_ops() const
This represents 'thread_limit' clause in the '#pragma omp ...' directive.
A UserDefinedLiteral record.
The receiver is an object instance.
const Stmt * getElse() const
SourceRange getSourceRange() const LLVM_READONLY
Expr * getUpperBoundVariable() const
unsigned getNumInputs() const
SourceLocation getOpLoc() const
Expr * getSyntacticForm()
Return the syntactic form of this expression, i.e.
SourceLocation getRParenLoc() const
ObjCDictionaryElement getKeyValueElement(unsigned Index) const
CompoundStmt * getBlock() const
An IndirectGotoStmt record.
helper_expr_const_range lhs_exprs() const
const_all_decls_range all_decls() const
SourceLocation getForLoc() const
This represents clause 'copyin' in the '#pragma omp ...' directives.
SourceLocation getUsedLocation() const
Retrieve the location where this default argument was actually used.
uint64_t getValue() const
StringKind getKind() const
ValueDecl * getMemberDecl() const
Retrieve the member declaration to which this expression refers.
NameKind
NameKind - The kind of name this object contains.
ObjCMethodDecl * getAtIndexMethodDecl() const
Selector getSelector() const
void AddToken(const Token &Tok, RecordDataImpl &Record)
Emit a token.
SourceLocation getEllipsisLoc() const
SourceLocation getLParen() const
Get the location of the left parentheses '('.
const Expr * getSubExpr() const
SourceLocation getCommaLoc()
Get location of ','.
Expr * getExpr(unsigned Index)
getExpr - Return the Expr at the specified index.
A CXXStaticCastExpr record.
unsigned getNumSubExprs() const
getNumSubExprs - Return the size of the SubExprs array.
unsigned getResultIndex() const
The zero-based index of the result expression's generic association in the generic selection's associ...
bool isSuperReceiver() const
A type trait used in the implementation of various C++11 and Library TR1 trait templates.
SourceLocation TemplateKWLoc
The source location of the template keyword; this is used as part of the representation of qualified ...
An AttributedStmt record.
CompoundStmt * getSubStmt()
A CXXReinterpretCastExpr record.
const Expr * getInit(unsigned Init) const
helper_expr_const_range rhs_exprs() const
An ObjCBoolLiteralExpr record.
private_copies_range private_copies()
SourceLocation getRParenLoc() const
bool isThrownVariableInScope() const
Determines whether the variable thrown by this expression (if any!) is within the innermost try block...
Expr *const * semantics_iterator
ObjCProtocolDecl * getProtocol() const
Represents a 'co_return' statement in the C++ Coroutines TS.
Stmt - This represents one statement.
Expr * getLowerBoundVariable() const
This represents clause 'in_reduction' in the '#pragma omp task' directives.
unsigned getNumArgs() const
getNumArgs - Return the number of actual arguments to this call.
Expr * getDimensionExpression() const
const ObjCAtFinallyStmt * getFinallyStmt() const
Retrieve the @finally statement, if any.
CXXCatchStmt * getHandler(unsigned i)
bool isArrayFormAsWritten() const
IfStmt - This represents an if/then/else.
SourceLocation getOperatorLoc() const
getOperatorLoc - Return the location of the operator.
SourceLocation getRParenLoc() const
SourceLocation getLocation() const
Class that handles pre-initialization statement for some clauses, like 'shedule', 'firstprivate' etc...
ObjCMethodDecl * setAtIndexMethodDecl() const
void AddNestedNameSpecifierLoc(NestedNameSpecifierLoc NNS)
Emit a nested name specifier with source-location information.
unsigned getNumOutputs() const
This represents '#pragma omp for simd' directive.
SourceLocation getLParenLoc() const
Returns the location of '('.
const StringLiteral * getAsmString() const
TypeSourceInfo * getTypeSourceInfo() const
helper_expr_const_range rhs_exprs() const
An ImplicitValueInitExpr record.
Decl - This represents one declaration (or definition), e.g.
This represents 'grainsize' clause in the '#pragma omp ...' directive.
This represents '#pragma omp teams distribute parallel for' composite directive.
An ImplicitCastExpr record.
Stmt * getHandlerBlock() const
llvm::APFloat getValue() const
ObjCMethodDecl * getImplicitPropertySetter() const
Represents the index of the current element of an array being initialized by an ArrayInitLoopExpr.
FunctionDecl * getOperatorNew() const
A reference to a name which we were able to look up during parsing but could not resolve to a specifi...
This represents 'if' clause in the '#pragma omp ...' directive.
OpenMPDirectiveKind getCaptureRegion()
Get capture region for the stmt in the clause.
DeclarationNameInfo getNameInfo() const
Retrieve the name of the entity we're testing for, along with location information.
const Expr * getSubExpr() const
Defines the C++ template declaration subclasses.
unsigned getNumSubExprs() const
Retrieve the total number of subexpressions in this designated initializer expression, including the actual initialized value and any expressions that occur within array and array-range designators.
SourceLocation getIdentLoc() const
Represents an attribute applied to a statement.
ParenExpr - This represents a parethesized expression, e.g.
NamedDecl * getDecl() const
A CXXOperatorCallExpr record.
helper_expr_const_range assignment_ops() const
bool hasQualifier() const
Determines whether this member expression actually had a C++ nested-name-specifier prior to the name ...
NestedNameSpecifierLoc getQualifierLoc() const
Retrieve the nested-name-specifier that qualifies this name, if any.
Expr * getLowerBound()
Get lower bound of array section.
This represents 'priority' clause in the '#pragma omp ...' directive.
This represents '#pragma omp target teams distribute' combined directive.
helper_expr_const_range lhs_exprs() const
A CXXTemporaryObjectExpr record.
Represents Objective-C's @throw statement.
bool requiresZeroInitialization() const
Whether this construction first requires zero-initialization before the initializer is called...
SourceLocation getLocation() const
const RecordDecl * getCapturedRecordDecl() const
Retrieve the record declaration for captured variables.
SourceLocation getRParenLoc() const
SourceLocation getKeywordLoc() const
Represents a call to a C++ constructor.
ObjCSubscriptRefExpr - used for array and dictionary subscripting.
TypeSourceInfo * getTypeInfoAsWritten() const
getTypeInfoAsWritten - Returns the type source info for the type that this expression is casting to...
FPOptions getFPFeatures() const
An Embarcadero array type trait, as used in the implementation of __array_rank and __array_extent...
SourceLocation getLParenLoc() const
Expr * getCondition() const
Returns condition.
This represents 'update' clause in the '#pragma omp atomic' directive.
Stmt * getTemporary() const
Expr * getCondition() const
Returns condition.
This represents '#pragma omp parallel for' directive.
MS property subscript expression.
SourceLocation getGotoLoc() const
SourceLocation getRParenLoc() const
This represents '#pragma omp target teams distribute parallel for' combined directive.
Expr * getCombinedEnsureUpperBound() const
Represents a prvalue temporary that is written into memory so that a reference can bind to it...
float __ovld __cnfn distance(float p0, float p1)
Returns the distance between p0 and p1.
SourceLocation getAccessorLoc() const
Expr * getAlignment()
Returns alignment.
Expr * getNumForLoops() const
Return the number of associated for-loops.
SourceLocation getRParenLoc() const
getRParenLoc - Return the location of final right parenthesis.
SourceLocation getSecondScheduleModifierLoc() const
Get the second modifier location.
unsigned getDeclRefExprAbbrev() const
const Expr * getSubExpr() const
VarDecl * getConditionVariable() const
Retrieve the variable declared in this "while" statement, if any.
SourceLocation getAtLoc() const
SourceLocation getCoawaitLoc() const
Expr * getIndexExpr(unsigned Idx)
bool hasCancel() const
Return true if current directive has inner cancel directive.
This represents '#pragma omp target exit data' directive.
SourceLocation getDependencyLoc() const
Get dependency type location.
This represents 'read' clause in the '#pragma omp atomic' directive.
SourceRange getSourceRange() const LLVM_READONLY
helper_expr_const_range assignment_ops() const
This represents clause 'private' in the '#pragma omp ...' directives.
const VarDecl * getNRVOCandidate() const
Retrieve the variable that might be used for the named return value optimization. ...
SourceLocation getLParenLoc() const
QualType getBaseType() const
bool hasTemplateKWAndArgsInfo() const
bool hasCancel() const
Return true if current directive has inner cancel directive.
ObjCIsaExpr - Represent X->isa and X.isa when X is an ObjC 'id' type.
This represents 'num_threads' clause in the '#pragma omp ...' directive.
CompoundLiteralExpr - [C99 6.5.2.5].
SourceRange getSourceRange() const LLVM_READONLY
SourceLocation getOperatorLoc() const
Retrieve the location of the '.' or '->' operator.
SourceLocation getAtLoc() const
unsigned getNumArgs() const
Determine the number of arguments to this type trait.
This represents 'defaultmap' clause in the '#pragma omp ...' directive.
ObjCInterfaceDecl * getClassReceiver() const
Expr * getCombinedUpperBoundVariable() const
SourceLocation getColonLoc() const
SourceLocation getLeftLoc() const
A ConditionOperator record.
SourceLocation getColonLoc() const
Return the location of ':'.
Expr * getCalcLastIteration() const
Implicit construction of a std::initializer_list<T> object from an array temporary within list-initia...
SourceLocation getIfLoc() const
unsigned getNumPlacementArgs() const
TypeSourceInfo * getArgumentTypeInfo() const
This represents implicit clause 'flush' for the '#pragma omp flush' directive.
bool requiresADL() const
True if this declaration should be extended by argument-dependent lookup.
SourceRange getSourceRange() const LLVM_READONLY
Retrieve the source range that covers this offsetof node.
capture_iterator capture_begin()
Retrieve an iterator pointing to the first capture.
A CXXConstructExpr record.
unsigned getNumExpressions() const
SourceLocation getLocation() const
Retrieve the location of the literal.
const DeclarationNameInfo & getNameInfo() const
Gets the name info for specified reduction identifier.
raw_arg_iterator raw_arg_begin()
CXXConstructorDecl * getConstructor() const
Get the constructor that this expression will call.
A C++ throw-expression (C++ [except.throw]).
unsigned getTotalComponentsNum() const
Return the total number of components in all lists derived from the clause.
Expr * getExprOperand() const
Represents an expression – generally a full-expression – that introduces cleanups to be run at the ...
TypeSourceInfo * getArg(unsigned I) const
Retrieve the Ith argument.
SourceRange getSourceRange() const LLVM_READONLY
SourceLocation getRParenLoc() const
VarDecl * getConditionVariable() const
Retrieve the variable declared in this "switch" statement, if any.
SourceLocation getLParenLoc() const
Returns the location of '('.
void AddString(StringRef Str)
Emit a string.
bool isXLHSInRHSPart() const
Return true if helper update expression has form 'OpaqueValueExpr(x) binop OpaqueValueExpr(expr)' and...
void AddSourceRange(SourceRange Range)
Emit a source range.
Expr * getGrainsize() const
Return safe iteration space distance.
This represents 'nogroup' clause in the '#pragma omp ...' directive.
A ShuffleVectorExpr record.
SourceLocation getBuiltinLoc() const
This represents 'safelen' clause in the '#pragma omp ...' directive.
ObjCPropertyDecl * getExplicitProperty() const
SourceLocation getLParenLoc() const
Returns the location of '('.
A C++ static_cast expression (C++ [expr.static.cast]).
void AddTypeSourceInfo(TypeSourceInfo *TInfo)
Emits a reference to a declarator info.
Expr * getExprOperand() const
const Stmt * getSubStmt() const
SourceLocation getRParenLoc() const
Retrieve the location of the closing parenthesis.
LabelStmt - Represents a label, which has a substatement.
Represents a C99 designated initializer expression.
unsigned varlist_size() const
SourceLocation getAtLoc() const
DeclarationName getDeclName() const
getDeclName - Get the actual, stored name of the declaration, which may be a special name...
TypeSourceInfo * getEncodedTypeSourceInfo() const
TypeSourceInfo * getScopeTypeInfo() const
Retrieve the scope type in a qualified pseudo-destructor expression.
SourceLocation getKeywordLoc() const
SourceLocation getLParenLoc() const
Returns the location of '('.
An ObjCAtThrowStmt record.
SourceLocation getTildeLoc() const
Retrieve the location of the '~'.
FieldDecl * getField() const
For a field offsetof node, returns the field.
SourceLocation getRParenLoc() const
void AddTypeRef(QualType T)
Emit a reference to a type.
An element in an Objective-C dictionary literal.
A DesignatedInitExpr record.
This represents '#pragma omp parallel' directive.
ShuffleVectorExpr - clang-specific builtin-in function __builtin_shufflevector.
bool cleanupsHaveSideEffects() const
QualType getComputationResultType() const
SourceLocation getColonLoc() const
Gets location of ':' symbol in clause.
SourceLocation getRParen() const
Get the location of the right parentheses ')'.
This represents 'simd' clause in the '#pragma omp ...' directive.
An ObjCProtocolExpr record.
An ObjCSelectorExpr record.
SourceLocation getAmpAmpLoc() const
Expr * getEnsureUpperBound() const
SourceLocation getEndLoc() const
FieldDecl - An instance of this class is created by Sema::ActOnField to represent a member of a struc...
This represents clause 'lastprivate' in the '#pragma omp ...' directives.
Expr * getBase()
Retrieve the base object of this member expressions, e.g., the x in x.m.
Represents a place-holder for an object not to be initialized by anything.
NonTypeTemplateParmDecl * getParameter() const
SourceLocation getLParenLoc() const
Returns the location of '('.
StringLiteral * getString()
unsigned getArrayExprIndex() const
For an array element node, returns the index into the array of expressions.
const Expr * getRetValue() const
SourceLocation getLabelLoc() const
Expr * getChunkSize()
Get chunk size.
SourceLocation getRBraceLoc() const
SourceLocation getOperatorLoc() const
GNUNullExpr - Implements the GNU __null extension, which is a name for a null pointer constant that h...
ArrayRef< Expr * > updates()
This represents clause 'map' in the '#pragma omp ...' directives.
SourceLocation getRParenLoc() const
SourceLocation getDefaultKindKwLoc() const
Returns location of clause kind.
The iterator over UnresolvedSets.
This represents clause 'to' in the '#pragma omp ...' directives.
This represents '#pragma omp target simd' directive.
Expr * getSourceExpr() const
The source expression of an opaque value expression is the expression which originally generated the ...
Represents a C++ member access expression for which lookup produced a set of overloaded functions...
ExtVectorElementExpr - This represents access to specific elements of a vector, and may occur on the ...
const DeclGroupRef getDeclGroup() const
OpenMPDirectiveKind getDirectiveKind() const
Expr * getSafelen() const
Return safe iteration space distance.
bool isAllEnumCasesCovered() const
Returns true if the SwitchStmt is a switch of an enum value and all cases have been explicitly covere...
This represents '#pragma omp barrier' directive.
SourceLocation getQuestionLoc() const
ObjCArrayLiteral - used for objective-c array containers; as in: @["Hello", NSApp, [NSNumber numberWithInt:42]];.
Expr * getCounterValue()
Get the loop counter value.
This is a common base class for loop directives ('omp simd', 'omp for', 'omp for simd' etc...
Expr * getNumTeams()
Return NumTeams number.
Represents a reference to a non-type template parameter pack that has been substituted with a non-tem...
This represents '#pragma omp critical' directive.
OpenMPDirectiveKind getCancelRegion() const
Get cancellation region for the current cancellation point.
bool hadArrayRangeDesignator() const
SourceLocation getCatchLoc() const
Selector getSelector() const
void AddIdentifierRef(const IdentifierInfo *II)
Emit a reference to an identifier.
Represents Objective-C's @catch statement.
SourceLocation getOpLoc() const
This represents clause 'copyprivate' in the '#pragma omp ...' directives.
IndirectGotoStmt - This represents an indirect goto.
Describes an C or C++ initializer list.
A C++ typeid expression (C++ [expr.typeid]), which gets the type_info that corresponds to the supplie...
This represents '#pragma omp distribute parallel for' composite directive.
ArrayRef< Stmt const * > getParamMoves() const
This represents '#pragma omp teams distribute parallel for simd' composite directive.
Expr * getKeyExpr() const
SourceLocation getLocEnd() const
Returns ending location of directive.
ASTWriter::RecordDataImpl & getRecordData() const
Extract the underlying record storage.
unsigned getNumExpansions() const
Get the number of parameters in this parameter pack.
ForStmt - This represents a 'for (init;cond;inc)' stmt.
ArrayRef< Expr * > finals()
void append(InputIterator begin, InputIterator end)
Expr * getIsLastIterVariable() const
NestedNameSpecifierLoc getQualifierLoc() const
Gets the nested name specifier.
FunctionDecl * getOperatorDelete() const
Expr * getBaseExpr() const
TemplateArgument getArgumentPack() const
Retrieve the template argument pack containing the substituted template arguments.
bool isElidable() const
Whether this construction is elidable.
Expr * getOperand() const
unsigned getIntegerLiteralAbbrev() const
const Expr * getThrowExpr() const
SourceLocation getDefaultmapKindLoc()
Get kind location.
SourceLocation getParameterPackLocation() const
Retrieve the location of the parameter pack name.
bool doesUsualArrayDeleteWantSize() const
Answers whether the usual array deallocation function for the allocated type expects the size of the ...
LabelDecl * getDecl() const
Expr * getX()
Get 'x' part of the associated expression/statement.
APFloatSemantics getRawSemantics() const
Get a raw enumeration value representing the floating-point semantics of this literal (32-bit IEEE...
SourceLocation getLBracLoc() const
SourceLocation getLocStart() const
Returns the starting location of the clause.
A reference to a previously [de]serialized Stmt record.
capture_init_iterator capture_init_begin()
Retrieve the first initialization argument for this lambda expression (which initializes the first ca...
SourceLocation getRParenLoc() const
ExprValueKind getValueKind() const
getValueKind - The value kind that this expression produces.
path_iterator path_begin()
SourceLocation getIsaMemberLoc() const
getMemberLoc - Return the location of the "member", in X->F, it is the location of 'F'...
const Stmt * getPreInitStmt() const
Get pre-initialization statement for the clause.
semantics_iterator semantics_end()
Expr * getIterationVariable() const
A builtin binary operation expression such as "x + y" or "x <= y".
bool hasCancel() const
Return true if current directive has inner cancel directive.
SourceLocation getColonLoc() const
Gets location of ':' symbol in clause.
bool constructsVBase() const
Determine whether this constructor is actually constructing a base class (rather than a complete obje...
const Expr * getAssocExpr(unsigned i) const
Expr * getOutputExpr(unsigned i)
bool hadMultipleCandidates() const
Returns true if this member expression refers to a method that was resolved from an overloaded set ha...
unsigned getCharacterLiteralAbbrev() const
SourceLocation getThrowLoc() const
unsigned getResultExprIndex() const
Return the index of the result-bearing expression into the semantics expressions, or PseudoObjectExpr...
const StringLiteral * getInputConstraintLiteral(unsigned i) const
CXXForRangeStmt - This represents C++0x [stmt.ranged]'s ranged for statement, represented as 'for (ra...
Class that handles post-update expression for some clauses, like 'lastprivate', 'reduction' etc...
This represents '#pragma omp cancellation point' directive.
This represents 'default' clause in the '#pragma omp ...' directive.
ObjCStringLiteral, used for Objective-C string literals i.e.
SourceLocation getEqualOrColonLoc() const
Retrieve the location of the '=' that precedes the initializer value itself, if present.
const CallExpr * getConfig() const
FPOptions getFPFeatures() const
TypoExpr - Internal placeholder for expressions where typo correction still needs to be performed and...
This represents 'final' clause in the '#pragma omp ...' directive.
This represents 'mergeable' clause in the '#pragma omp ...' directive.
SourceLocation getContinueLoc() const
This represents '#pragma omp teams' directive.
unsigned getInt() const
Used to serialize this.
OpenMPDependClauseKind getDependencyKind() const
Get dependency type.
const Expr * getControllingExpr() const
CastExpr - Base class for type casts, including both implicit casts (ImplicitCastExpr) and explicit c...
This represents clause 'reduction' in the '#pragma omp ...' directives.
FieldDecl * getField()
Get the field whose initializer will be used.
Helper class for OffsetOfExpr.
A marker record that indicates that we are at the end of an expression.
This represents '#pragma omp teams distribute simd' combined directive.
Represents binding an expression to a temporary.
StringLiteral * getClobberStringLiteral(unsigned i)
OpaqueValueExpr * getOpaqueValue() const
getOpaqueValue - Return the opaque value placeholder.
Expr * Key
The key for the dictionary element.
SourceLocation getBuiltinLoc() const
CXXTemporary * getTemporary()
bool isOpenMPWorksharingDirective(OpenMPDirectiveKind DKind)
Checks if the specified directive is a worksharing directive.
ObjCMethodDecl * getArrayWithObjectsMethod() const
A C++ lambda expression, which produces a function object (of unspecified type) that can be invoked l...
SourceLocation getDefaultmapModifierLoc() const
Get the modifier location.
NestedNameSpecifierLoc getQualifierLoc() const
If the name was qualified, retrieves the nested-name-specifier that precedes the name, with source-location information.
bool isTypeDependent() const
isTypeDependent - Determines whether this expression is type-dependent (C++ [temp.dep.expr]), which means that its type could change from one template instantiation to the next.
helper_expr_const_range source_exprs() const
SourceLocation getTryLoc() const
Represents a C++ member access expression where the actual member referenced could not be resolved be...
This represents clause 'is_device_ptr' in the '#pragma omp ...' directives.
VarDecl * getConditionVariable() const
Retrieve the variable declared in this "for" statement, if any.
SourceLocation getOperatorLoc() const
getOperatorLoc - Return the location of the operator.
unsigned getUniqueDeclarationsNum() const
Return the number of unique base declarations in this clause.
SourceLocation getNameLoc() const
TypeSourceInfo * getTypeSourceInfo() const
NameKind getNameKind() const
getNameKind - Determine what kind of name this is.
SourceLocation getLocation() const
helper_expr_const_range source_exprs() const
A default argument (C++ [dcl.fct.default]).
bool isTypeOperand() const
SourceLocation getTokenLocation() const
getTokenLocation - The location of the __null token.
Iterator for iterating over Stmt * arrays that contain only Expr *.
helper_expr_const_range privates() const
NamedDecl * getFirstQualifierFoundInScope() const
Retrieve the first part of the nested-name-specifier that was found in the scope of the member access...
private_copies_range private_copies()
This represents clause 'from' in the '#pragma omp ...' directives.
Represents the this expression in C++.
ObjCMethodDecl * getDictWithObjectsMethod() const
SourceLocation getLParenLoc() const
Returns the location of '('.
SourceLocation getRParenLoc() const
Retrieve the location of the right parentheses (')') that follows the argument list.
TypeSourceInfo * getAllocatedTypeSourceInfo() const
Represents an explicit template argument list in C++, e.g., the "<int>" in "sort<int>".
NestedNameSpecifierLoc getQualifierLoc() const
If the member name was qualified, retrieves the nested-name-specifier that precedes the member name...
TypeSourceInfo * getQueriedTypeSourceInfo() const
SourceLocation getLocStart() const
Returns starting location of directive kind.
unsigned RecordSwitchCaseID(SwitchCase *S)
Record an ID for the given switch-case statement.
const ObjCAtCatchStmt * getCatchStmt(unsigned I) const
Retrieve a @catch statement.
SourceLocation getOperatorLoc() const LLVM_READONLY
helper_expr_const_range reduction_ops() const
This represents '#pragma omp target parallel for simd' directive.
ArrayRef< Expr * > private_counters()
OpenMP 4.0 [2.4, Array Sections].
VersionTuple getVersion()
ConditionalOperator - The ?: ternary operator.
const ValueDecl * getExtendingDecl() const
Get the declaration which triggered the lifetime-extension of this temporary, if any.
TypeSourceInfo * getTypeSourceInfo() const
bool isStdInitListInitialization() const
Whether this constructor call was written as list-initialization, but was interpreted as forming a st...
Represents a C++ pseudo-destructor (C++ [expr.pseudo]).
ASTTemplateKWAndArgsInfo * getTrailingASTTemplateKWAndArgsInfo()
Return the optional template keyword and arguments info.
CompoundStmt - This represents a group of statements like { stmt stmt }.
OpenMPDefaultClauseKind getDefaultKind() const
Returns kind of the clause.
unsigned NumTemplateArgs
The number of template arguments in TemplateArgs.
SourceLocation getRBracket() const
bool isMicrosoftABI() const
Returns whether this is really a Win64 ABI va_arg expression.
bool hasCancel() const
Return true if current directive has inner cancel directive.
This represents 'threads' clause in the '#pragma omp ...' directive.
void AddDeclarationNameLoc(const DeclarationNameLoc &DNLoc, DeclarationName Name)
CompoundStmt * getSubStmt() const
Retrieve the compound statement that will be included in the program only if the existence of the sym...
This represents '#pragma omp taskgroup' directive.
helper_expr_const_range destination_exprs() const
Expr * getSimdlen() const
Return safe iteration space distance.
void AddCXXTemporary(const CXXTemporary *Temp)
Emit a CXXTemporary.
CXXConstructorDecl * getConstructor() const
Get the constructor that this expression will (ultimately) call.
helper_expr_const_range source_exprs() const
QualType getComputationLHSType() const
This represents clause 'aligned' in the '#pragma omp ...' directives.
OpenMPClauseKind getClauseKind() const
Returns kind of OpenMP clause (private, shared, reduction, etc.).
SourceRange getSourceRange() const LLVM_READONLY
SourceLocation getRParenLoc() const
UnaryExprOrTypeTraitExpr - expression with either a type or (unevaluated) expression operand...
SourceLocation getTryLoc() const
Expr * getCombinedLowerBoundVariable() const
helper_expr_const_range private_copies() const
SourceLocation getLocation() const
SourceLocation getRBracketLoc() const
This represents clause 'task_reduction' in the '#pragma omp taskgroup' directives.
SourceLocation getLocation() const
unsigned getSwitchCaseID(SwitchCase *S)
Retrieve the ID for the given switch-case statement.
InitListExpr * getUpdater() const
SourceLocation getLParenLoc() const
Returns the location of '('.
Represents a call to the builtin function __builtin_va_arg.
bool HasTemplateKWAndArgsInfo
Whether the name includes info for explicit template keyword and arguments.
helper_expr_const_range destination_exprs() const
OpenMPProcBindClauseKind getProcBindKind() const
Returns kind of the clause.
SourceLocation getLabelLoc() const
SourceLocation getThrowLoc() const LLVM_READONLY
static unsigned getNumSubExprs(AtomicOp Op)
Determine the number of arguments the specified atomic builtin should have.
unsigned getValue() const
This represents '#pragma omp distribute' directive.
This represents implicit clause 'depend' for the '#pragma omp task' directive.
Expr * getSrcExpr() const
getSrcExpr - Return the Expr to be converted.
SourceLocation getDestroyedTypeLoc() const
Retrieve the starting location of the type being destroyed.
ObjCMethodDecl * getBoxingMethod() const
const_all_num_lists_range all_num_lists() const
SourceLocation getFinallyLoc() const
An expression "T()" which creates a value-initialized rvalue of type T, which is a non-class type...
const Stmt * getAssociatedStmt() const
Returns statement associated with the directive.
SourceLocation getOperatorLoc() const
Retrieve the location of the '->' or '.' operator.
bool hasCancel() const
Return true if current directive has inner cancel directive.
llvm::MutableArrayRef< Designator > designators()
This represents 'proc_bind' clause in the '#pragma omp ...' directive.
This represents 'capture' clause in the '#pragma omp atomic' directive.
DeclAccessPair getFoundDecl() const
Retrieves the declaration found by lookup.
bool hasCancel() const
Return true if current directive has inner cancel directive.
Expr - This represents one expression.
SourceLocation getElseLoc() const
IdentifierInfo * getFieldName() const
For a field or identifier offsetof node, returns the name of the field.
CXXBaseSpecifier * getBase() const
For a base class node, returns the base specifier.
SourceLocation getMapLoc() const LLVM_READONLY
Fetches location of clause mapping kind.
bool isArrow() const
Determine whether this member expression used the '->' operator; otherwise, it used the '...
StringRef getClobber(unsigned i) const
This represents 'simdlen' clause in the '#pragma omp ...' directive.
Expr * getNumTasks() const
Return safe iteration space distance.
SourceLocation getScheduleKindLoc()
Get kind location.
bool isImplicitAccess() const
True if this is an implicit access, i.e., one in which the member being accessed was not written in t...
SourceLocation getWhileLoc() const
unsigned getPackLength() const
Retrieve the length of the parameter pack.
Represents a C++ functional cast expression that builds a temporary object.
const Stmt * getThen() const
SourceLocation getLParenLoc() const
Returns the location of '('.
A C++ const_cast expression (C++ [expr.const.cast]).
const TypeSourceInfo * getAssocTypeSourceInfo(unsigned i) const
SourceLocation getLocation() const
BlockExpr - Adaptor class for mixing a BlockDecl with expressions.
Field designator where only the field name is known.
An ObjCSubscriptRefExpr record.
VarDecl * getExceptionDecl() const
IdentifierInfo * getDestroyedTypeIdentifier() const
In a dependent pseudo-destructor expression for which we do not have full type information on the des...
unsigned getNumInits() const
bool isImplicitAccess() const
True if this is an implicit access, i.e.
bool hasCancel() const
Return true if current directive has inner cancel directive.
This represents '#pragma omp target teams distribute parallel for simd' combined directive.
const Expr * getCallee() const
raw_arg_iterator raw_arg_end()
bool isArrow() const
Determine whether this pseudo-destructor expression was written using an '->' (otherwise, it used a '.
ObjCDictionaryLiteral - AST node to represent objective-c dictionary literals; as in:"name" : NSUserN...
const CompoundStmt * getSynchBody() const
bool hasQualifier() const
Determine whether this declaration reference was preceded by a C++ nested-name-specifier, e.g., N::foo.
Represents Objective-C's @synchronized statement.
ObjCSelectorExpr used for @selector in Objective-C.
A CXXStdInitializerListExpr record.
TypeSourceInfo * getTypeSourceInfo() const
Represents an expression that computes the length of a parameter pack.
SourceLocation getRBracketLoc() const
CXXTryStmt - A C++ try block, including all handlers.
AsTypeExpr - Clang builtin function __builtin_astype [OpenCL 6.2.4.2] This AST node provides support ...
OpenMPDistScheduleClauseKind getDistScheduleKind() const
Get kind of the clause.
An ArraySubscriptExpr record.
SourceLocation getAtTryLoc() const
Retrieve the location of the @ in the @try.
OMPClauseWriter(ASTRecordWriter &Record)
bool refersToEnclosingVariableOrCapture() const
Does this DeclRefExpr refer to an enclosing local or a captured variable?
IdentifierInfo & getAccessor() const
This represents '#pragma omp target teams distribute simd' combined directive.
helper_expr_const_range rhs_exprs() const
ArrayTypeTrait getTrait() const
decls_iterator decls_begin() const
This represents 'ordered' clause in the '#pragma omp ...' directive.
unsigned getNumClauses() const
Get number of clauses.
An ArrayInitLoopExpr record.
Expr * getDistInc() const
A PseudoObjectExpr record.
SourceRange getAngleBrackets() const LLVM_READONLY
Expr * getNextLowerBound() const
Kind getKind() const
Determine what kind of offsetof node this is.
SourceLocation getLAngleLoc() const
Retrieve the location of the left angle bracket starting the explicit template argument list followin...
SourceLocation getColonLoc() const
Get colon location.
Expr * getPrevEnsureUpperBound() const
SourceLocation getKeywordLoc() const
Retrieve the location of the __if_exists or __if_not_exists keyword.
capture_init_range capture_inits()
This represents '#pragma omp for' directive.
An ObjCIndirectCopyRestoreExpr record.
Expr * getElement(unsigned Index)
getElement - Return the Element at the specified index.
Optional< unsigned > NumExpansions
The number of elements this pack expansion will expand to, if this is a pack expansion and is known...
SourceLocation getSwitchLoc() const
LabelDecl * getLabel() const
const Stmt * getTryBody() const
Retrieve the @try body.
Represents a folding of a pack over an operator.
ReturnStmt - This represents a return, optionally of an expression: return; return 4;...
This represents '#pragma omp target teams' directive.
SourceLocation getRParenLoc() const
getRParenLoc - Return the location of final right parenthesis.
An expression that sends a message to the given Objective-C object or class.
void AddDeclRef(const Decl *D)
Emit a reference to a declaration.
This represents a Microsoft inline-assembly statement extension.
SourceLocation getDoLoc() const
SourceLocation getAtLoc() const
ObjCMethodDecl * getImplicitPropertyGetter() const
A DesignatedInitUpdateExpr record.
SourceLocation getRBracketLoc() const
void AddStmt(Stmt *S)
Add the given statement or expression to the queue of statements to emit.
SourceLocation getEnd() const
UnaryOperator - This represents the unary-expression's (except sizeof and alignof), the postinc/postdec operators from postfix-expression, and various extensions.
Expr * getInputExpr(unsigned i)
Expr * getOutputExpr(unsigned i)
bool isOpenMPTaskLoopDirective(OpenMPDirectiveKind DKind)
Checks if the specified directive is a taskloop directive.
void AddSelectorRef(Selector S)
Emit a Selector (which is a smart pointer reference).
SourceLocation getMemberLoc() const
getMemberLoc - Return the location of the "member", in X->F, it is the location of 'F'...
ReceiverKind getReceiverKind() const
Determine the kind of receiver that this message is being sent to.
bool usesGNUSyntax() const
Determines whether this designated initializer used the deprecated GNU syntax for designated initiali...
A member reference to an MSPropertyDecl.
Represents a reference to a non-type template parameter that has been substituted with a template arg...
const OffsetOfNode & getComponent(unsigned Idx) const
Expr * getDevice()
Return device number.
This represents '#pragma omp cancel' directive.
This represents 'collapse' clause in the '#pragma omp ...' directive.
Expr * getTrueExpr() const
getTrueExpr - Return the subexpression which will be evaluated if the condition evaluates to true; th...
This represents clause 'firstprivate' in the '#pragma omp ...' directives.
SourceLocation getCommaLoc()
Get location of ','.
An ObjCAvailabilityCheckExpr record.
SourceLocation getLocation() const
SourceLocation getRParenLoc() const
SourceLocation getForLoc() const
const Expr * getSubExpr() const
ObjCBridgeCastKind getBridgeKind() const
Determine which kind of bridge is being performed via this cast.
SourceRange getSourceRange() const LLVM_READONLY
ParmVarDecl *const * iterator
Iterators over the parameters which the parameter pack expanded into.
const Expr * getSubExpr() const
CStyleCastExpr - An explicit cast in C (C99 6.5.4) or a C-style cast in C++ (C++ [expr.cast]), which uses the syntax (Type)expr.
Expr * getLHS()
An array access can be written A[4] or 4[A] (both are equivalent).
bool hadMultipleCandidates() const
Returns true if this expression refers to a function that was resolved from an overloaded set having ...
An ObjCPropertyRefExpr record.
ImaginaryLiteral - We support imaginary integer and floating point literals, like "1...
This represents '#pragma omp flush' directive.
An ObjCForCollectionStmt record.
This represents '#pragma omp parallel for simd' directive.
ExprObjectKind getObjectKind() const
getObjectKind - The object kind that this expression produces.
DoStmt - This represents a 'do/while' stmt.
AsmStmt is the base class for GCCAsmStmt and MSAsmStmt.
This represents 'seq_cst' clause in the '#pragma omp atomic' directive.
SourceLocation getOperatorLoc() const
Retrieve the location of the '->' or '.' operator.
helper_expr_const_range assignment_ops() const
This represents 'untied' clause in the '#pragma omp ...' directive.
SourceLocation getLParenLoc() const
Retrieve the location of the left parentheses ('(') that precedes the argument list.
A MS-style AsmStmt record.
void push_back(uint64_t N)
Minimal vector-like interface.
Expr * getLastIteration() const
bool isPostfixUpdate() const
Return true if 'v' expression must be updated to original value of 'x', false if 'v' must be updated ...
This represents '#pragma omp target enter data' directive.
SourceLocation getLParenLoc()
Get location of '('.
Expr * getStrideVariable() const
SourceLocation getColonLoc() const
Returns the location of ':'.
This represents 'num_teams' clause in the '#pragma omp ...' directive.
A C++ dynamic_cast expression (C++ [expr.dynamic.cast]).
OpaqueValueExpr - An expression referring to an opaque object of a fixed type and value class...
ConvertVectorExpr - Clang builtin function __builtin_convertvector This AST node provides support for...
unsigned getNumArgs() const
Return the number of actual arguments in this message, not counting the receiver. ...
const Stmt * getPreInits() const
SourceLocation getLParenLoc() const
A reference to an overloaded function set, either an UnresolvedLookupExpr or an UnresolvedMemberExpr...
A field in a dependent type, known only by its name.
This captures a statement into a function.
Represents a call to an inherited base class constructor from an inheriting constructor.
ExpressionTrait getTrait() const
unsigned path_size() const
SourceLocation getLParenLoc()
Get location of '('.
PseudoObjectExpr - An expression which accesses a pseudo-object l-value.
bool isImplicitProperty() const
bool isInstantiationDependent() const
Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...
helper_expr_const_range taskgroup_descriptors() const
unsigned getTotalComponentListNum() const
Return the number of lists derived from the clause expressions.
bool inheritedFromVBase() const
Determine whether the inherited constructor is inherited from a virtual base of the object we constru...
SourceLocation getRAngleLoc() const
Retrieve the location of the right angle bracket ending the explicit template argument list following...
This represents '#pragma omp single' directive.
Encodes a location in the source.
This represents 'hint' clause in the '#pragma omp ...' directive.
StringRef getOutputConstraint(unsigned i) const
SourceLocation getOperatorLoc() const
const Stmt * getCatchBody() const
unsigned getNumHandlers() const
Expr * getSubExpr() const
NestedNameSpecifierLoc getQualifierLoc() const
Retrieves the nested-name-specifier that qualifies the type name, with source-location information...
This is a basic class for representing single OpenMP executable directive.
SourceLocation getBuiltinLoc() const
getBuiltinLoc - Return the location of the __builtin_astype token.
bool hasUnresolvedUsing() const
Determine whether the lookup results contain an unresolved using declaration.
CastKind getCastKind() const
Expr * getSubExpr(unsigned Idx) const
private_copies_range private_copies()
const SwitchCase * getSwitchCaseList() const
SourceLocation getOperatorLoc() const
Retrieve the location of the cast operator keyword, e.g., static_cast.
Represents a new-expression for memory allocation and constructor calls, e.g: "new CXXNewExpr(foo)"...
unsigned getNumElements() const
getNumElements - Return number of elements of objective-c dictionary literal.
OMPClause * getClause(unsigned i) const
Returns specified clause.
A call to a literal operator (C++11 [over.literal]) written as a user-defined literal (C++11 [lit...
ArrayRef< const Attr * > getAttrs() const
This represents 'schedule' clause in the '#pragma omp ...' directive.
SourceLocation getEllipsisLoc() const
Retrieve the location of the ellipsis that describes this pack expansion.
Expr * getExpr()
Get 'expr' part of the associated expression/statement.
Represents a call to a member function that may be written either with member call syntax (e...
SourceLocation getExceptLoc() const
SourceRange getSourceRange() const LLVM_READONLY
DeclStmt - Adaptor class for mixing declarations with statements and expressions. ...
SourceLocation getLParenLoc() const
Returns the location of '('.
This represents clause 'shared' in the '#pragma omp ...' directives.
SourceLocation getProcBindKindKwLoc() const
Returns location of clause kind.
DeclarationNameInfo getDirectiveName() const
Return name of the directive.
SourceLocation getLBraceLoc() const
A CXXFunctionalCastExpr record.
A FloatingLiteral record.
SourceLocation getStrTokenLoc(unsigned TokNum) const
Expr * getPriority()
Return Priority number.
StmtVisitor - This class implements a simple visitor for Stmt subclasses.
SourceLocation getColonLoc() const
SourceLocation RAngleLoc
The source location of the right angle bracket ('>').
SourceLocation getRParenLoc() const
void AddTemplateArgument(const TemplateArgument &Arg)
Emit a template argument.
An ObjCEncodeExpr record.
SourceLocation getRParenLoc() const
SourceLocation getSuperLoc() const
Retrieve the location of the 'super' keyword for a class or instance message to 'super', otherwise an invalid source location.
This represents '#pragma omp taskwait' directive.
SourceLocation getAtLoc() const
OpenMPMapClauseKind getMapType() const LLVM_READONLY
Fetches mapping kind for the clause.
SourceRange getSourceRange() const
An ImaginaryLiteral record.
This is a basic class for representing single OpenMP clause.
AtomicExpr - Variadic atomic builtins: __atomic_exchange, __atomic_fetch_*, __atomic_load, __atomic_store, and __atomic_compare_exchange_*, for the similarly-named C++11 instructions, and __c11 variants for <stdatomic.h>, and corresponding __opencl_atomic_* for OpenCL 2.0.
UnaryExprOrTypeTrait getKind() const
bool isOpenMPLoopBoundSharingDirective(OpenMPDirectiveKind Kind)
Checks if the specified directive kind is one of the composite or combined directives that need loop ...
ObjCProtocolExpr used for protocol expression in Objective-C.
bool isValueDependent() const
isValueDependent - Determines whether this expression is value-dependent (C++ [temp.dep.constexpr]).
SourceLocation getLParenLoc() const
SourceLocation getGotoLoc() const
SourceLocation getAtFinallyLoc() const
AccessSpecifier getAccess() const
StringLiteral * getFunctionName()
SourceLocation getNameModifierLoc() const
Return the location of directive name modifier.
const StringLiteral * getOutputConstraintLiteral(unsigned i) const
ImplicitCastExpr - Allows us to explicitly represent implicit type conversions, which have no direct ...
Stmt * getCapturedStmt()
Retrieve the statement being captured.
OpenMPMapClauseKind getMapTypeModifier() const LLVM_READONLY
Fetches the map type modifier for the clause.
void AddAttributes(ArrayRef< const Attr *> Attrs)
Emit a list of attributes.
SourceLocation getAtCatchLoc() const
CharacterKind getKind() const
This represents '#pragma omp target' directive.
Expr * getInputExpr(unsigned i)
void AddSourceLocation(SourceLocation Loc)
Emit a source location.
bool hasCancel() const
Return true if current directive has inner cancel directive.
Expr * getNumForLoops() const
Return the number of associated for-loops.
Expr * getV()
Get 'v' part of the associated expression/statement.
IdentType getIdentType() const
SourceLocation getEndLoc() const
An expression trait intrinsic.
const ObjCMethodDecl * getMethodDecl() const
This represents '#pragma omp ordered' directive.
const_all_lists_sizes_range all_lists_sizes() const
StmtExpr - This is the GNU Statement Expression extension: ({int X=4; X;}).
void AddAPFloat(const llvm::APFloat &Value)
Emit a floating-point value.
This represents '#pragma omp target update' directive.
ObjCBoxedExpr - used for generalized expression boxing.
bool isArgumentType() const
SourceLocation getKeywordLoc() const
Expr * getArrayFiller()
If this initializer list initializes an array with more elements than there are initializers in the l...
SourceLocation getStarLoc() const
SourceLocation getLParenLoc() const
Returns the location of '('.
bool passAlignment() const
Indicates whether the required alignment should be implicitly passed to the allocation function...
helper_expr_const_range lhs_exprs() const
FunctionDecl * getOperatorDelete() const
Representation of a Microsoft __if_exists or __if_not_exists statement with a dependent name...
unsigned getExprImplicitCastAbbrev() const
SourceLocation getExprLoc() const LLVM_READONLY
getExprLoc - Return the preferred location for the arrow when diagnosing a problem with a generic exp...
void AddDeclarationNameInfo(const DeclarationNameInfo &NameInfo)
A qualified reference to a name whose declaration cannot yet be resolved.
Expr * Value
The value of the dictionary element.
const Expr * getInitializer() const
void AddTemplateKWAndArgsInfo(const ASTTemplateKWAndArgsInfo &ArgInfo, const TemplateArgumentLoc *Args)
CompoundAssignOperator - For compound assignments (e.g.
SourceLocation getLocation() const LLVM_READONLY
A POD class for pairing a NamedDecl* with an access specifier.
SourceLocation getLocEnd() const
Returns the ending location of the clause.
Represents a C11 generic selection.
ArrayRef< TemplateArgument > getPartialArguments() const
Get.
void VisitOMPClauseWithPreInit(OMPClauseWithPreInit *C)
const Expr * getBase() const
Expr * getInstanceReceiver()
Returns the object expression (receiver) for an instance message, or null for a message that is not a...
AddrLabelExpr - The GNU address of label extension, representing &&label.
An Objective-C "bridged" cast expression, which casts between Objective-C pointers and C pointers...
Represents a reference to a function parameter pack that has been substituted but not yet expanded...
OpaqueValueExpr * getOpaqueValue() const
getOpaqueValue - Return the opaque value placeholder.
void VisitOMPClauseWithPostUpdate(OMPClauseWithPostUpdate *C)
unsigned getManglingNumber() const
SourceLocation getMemberLoc() const
TypeSourceInfo * getDestroyedTypeInfo() const
Retrieve the source location information for the type being destroyed.
VarDecl * getConditionVariable() const
Retrieve the variable declared in this "if" statement, if any.
Expr * getFalseExpr() const
getFalseExpr - Return the subexpression which will be evaluated if the condnition evaluates to false;...
NullStmt - This is the null statement ";": C99 6.8.3p3.
bool isTypeOperand() const
StringRef getInputConstraint(unsigned i) const
SourceLocation getLocation() const
unsigned getNumAssocs() const
void writeClause(OMPClause *C)
Dataflow Directional Tag Classes.
Expr * getPrevUpperBoundVariable() const
bool isResultDependent() const
Whether this generic selection is result-dependent.
SourceLocation getColonLoc() const
Get colon location.
This represents 'device' clause in the '#pragma omp ...' directive.
An IntegerLiteral record.
OpenMPDefaultmapClauseKind getDefaultmapKind() const
Get kind of the clause.
const TemplateArgumentLoc * getTemplateArgs() const
Retrieve the template arguments provided as part of this template-id.
[C99 6.4.2.2] - A predefined identifier such as func.
SourceLocation getLocation() const
A CXXBoolLiteralExpr record.
Represents a delete expression for memory deallocation and destructor calls, e.g. ...
IdentifierInfo * getOutputIdentifier(unsigned i) const
OverloadedOperatorKind getOperator() const
Returns the kind of overloaded operator that this expression refers to.
helper_expr_const_range privates() const
NonTypeTemplateParmDecl * getParameterPack() const
Retrieve the non-type template parameter pack being substituted.
MSPropertyDecl * getPropertyDecl() const
const Stmt * getFinallyBody() const
An ExtVectorElementExpr record.
This represents '#pragma omp section' directive.
This represents '#pragma omp teams distribute' directive.
QualType getSuperType() const
Retrieve the type referred to by 'super'.
const_all_components_range all_components() const
SourceLocation EllipsisLoc
The location of the ellipsis, if this is a pack expansion.
An ObjCIvarRefExpr record.
TypeSourceInfo * getTypeSourceInfo() const
Retrieve the type source information for the type being constructed.
A runtime availability query.
bool hasCancel() const
Return true if current directive has inner cancel directive.
A C++ reinterpret_cast expression (C++ [expr.reinterpret.cast]).
This represents '#pragma omp simd' directive.
Stmt * getHandler() const
Represents a 'co_yield' expression.
SourceLocation getLBraceLoc() const
SourceLocation getSemiLoc() const
An ObjCAutoreleasePoolStmt record.
Expr * getOperand() const
Retrieve the operand of the 'co_return' statement.
A CharacterLiteral record.
const Expr * getReductionRef() const
Returns reference to the task_reduction return variable.
SourceLocation getLParenLoc()
Get location of '('.
Represents a C++11 pack expansion that produces a sequence of expressions.
bool isListInitialization() const
Whether this constructor call was written as list-initialization.
An ObjCStringLiteral record.
A CXXDynamicCastExpr record.
This represents clause 'linear' in the '#pragma omp ...' directives.
A CXXForRangeStmt record.
const Expr * getSynchExpr() const
Expr * getUpdateExpr()
Get helper expression of the form 'OpaqueValueExpr(x) binop OpaqueValueExpr(expr)' or 'OpaqueValueExp...
SourceLocation getParameterPackLocation() const
Get the location of the parameter pack.
semantics_iterator semantics_begin()
bool isIfExists() const
Determine whether this is an __if_exists statement.
NestedNameSpecifierLoc getQualifierLoc() const
ExplicitCastExpr - An explicit cast written in the source code.
OpenMPDefaultmapClauseModifier getDefaultmapModifier() const
Get the modifier of the clause.
This represents '#pragma omp atomic' directive.
Expr * getCombinedInit() const
SourceLocation getLParenLoc() const
Returns the location of '('.
SourceLocation getLParenLoc() const
void AddVersionTuple(const VersionTuple &Version)
Emit a version tuple.
An ObjCAtFinallyStmt record.
SourceLocation getRParenLoc() const
TypeSourceInfo * getTypeOperandSourceInfo() const
Retrieve source information for the type operand.
const Stmt * getBody() const
llvm::APInt getValue() const
Represents a __leave statement.
CXXRecordDecl * getNamingClass() const
Gets the 'naming class' (in the sense of C++0x [class.access.base]p5) of the lookup.
unsigned getCollapsedNumber() const
Get number of collapsed loops.
Expr * getCombinedNextLowerBound() const
ArrayRef< Expr * > counters()
LabelDecl * getLabel() const
helper_expr_const_range privates() const
Represents a C++11 noexcept expression (C++ [expr.unary.noexcept]).
SwitchStmt - This represents a 'switch' stmt.
unsigned getByteLength() const
SourceLocation getColonColonLoc() const
Retrieve the location of the '::' in a qualified pseudo-destructor expression.
Expr * getCombinedNextUpperBound() const
NestedNameSpecifierLoc getQualifierLoc() const
Retrieve the nested-name-specifier that qualifies the name, with source location information.
SourceLocation getRParenLoc() const
Represents the body of a coroutine.
TemplateArgumentLoc * getTrailingTemplateArgumentLoc()
Return the optional template arguments.
Location wrapper for a TemplateArgument.
bool isOpenMPDistributeDirective(OpenMPDirectiveKind DKind)
Checks if the specified directive is a distribute directive.
SourceLocation getBuiltinLoc() const
ArraySubscriptExpr - [C99 6.5.2.1] Array Subscripting.
SourceLocation getLParenLoc() const
Returns the location of '('.
OpenMPDirectiveKind getNameModifier() const
Return directive name modifier associated with the clause.
unsigned getNumElements() const
getNumElements - Return number of elements of objective-c array literal.
SourceLocation getLeaveLoc() const
Represents Objective-C's collection statement.
An ObjCAtSynchronizedStmt record.
ArrayRef< Expr * > inits()
unsigned getNumObjects() const
ObjCEncodeExpr, used for @encode in Objective-C.
SourceLocation getLocation() const
Retrieve the location of this expression.
helper_expr_const_range destination_exprs() const
SourceLocation getLocation() const
An implicit indirection through a C++ base class, when the field found is in a base class...
Expr * getCond() const
getCond - Return the condition expression; this is defined in terms of the opaque value...
A SizefAlignOfExpr record.
Represents a call to a CUDA kernel function.
SourceLocation getRParenLoc() const
Represents a 'co_await' expression.
SourceLocation getLParenLoc() const
Returns the location of '('.
TypeTraitExprBitfields TypeTraitExprBits
Expr * getReplacement() const
bool isDelegateInitCall() const
isDelegateInitCall - Answers whether this message send has been tagged as a "delegate init call"...
A CXXMemberCallExpr record.
bool doesUsualArrayDeleteWantSize() const
Answers whether the usual array deallocation function for the allocated type expects the size of the ...
SourceLocation getColonLoc() const
Gets location of ':' symbol in clause.
SourceRange getDirectInitRange() const
NestedNameSpecifierLoc getQualifierLoc() const
Retrieve the nested-name-specifier that qualifies the member name, with source location information...
Expr * getNumIterations() const
Expr * getArg(unsigned Arg)
Return the specified argument.
StringRef getBytes() const
Allow access to clients that need the byte representation, such as ASTWriterStmt::VisitStringLiteral(...
Represents Objective-C's @finally statement.
SourceLocation getDefaultLoc() const
StringRef getAsmString() const
SourceLocation getDistScheduleKindLoc()
Get kind location.
bool hasAssociatedStmt() const
Returns true if directive has associated statement.
Expr * getPrevLowerBoundVariable() const
uint64_t EmitStmt(unsigned Code, unsigned Abbrev=0)
Emit the record to the stream, preceded by its substatements.
const Expr * getBase() const
bool isArrow() const
Determine whether this member expression used the '->' operator; otherwise, it used the '...
unsigned getNumTemplateArgs() const
Retrieve the number of template arguments provided as part of this template-id.
const DeclarationNameInfo & getNameInfo() const
Gets the name info for specified reduction identifier.
SourceLocation getColonLoc() const
Represents a base class of a C++ class.
This represents 'write' clause in the '#pragma omp atomic' directive.
unsigned getNumClobbers() const
SourceLocation getRParenLoc() const
ObjCIvarRefExpr - A reference to an ObjC instance variable.
bool isPartiallySubstituted() const
Determine whether this represents a partially-substituted sizeof...
Represents an expression that might suspend coroutine execution; either a co_await or co_yield expres...
DeclStmt * getRangeStmt()
A ConvertVectorExpr record.
unsigned arg_size() const
Retrieve the number of arguments.
SourceLocation getLParenLoc() const
Returns the location of '('.
Describes an explicit type conversion that uses functional notion but could not be resolved because o...
SourceLocation getAsmLoc() const
GotoStmt - This represents a direct goto.
A use of a default initializer in a constructor or in aggregate initialization.
Expr * getSrcExpr() const
getSrcExpr - Return the Expr to be converted.
const SwitchCase * getNextSwitchCase() const
SourceLocation getLParenLoc() const
Returns the location of '('.
CapturedDecl * getCapturedDecl()
Retrieve the outlined function declaration.
StringRef getUuidStr() const
QualType getSuperReceiverType() const
Defines the C++ Decl subclasses, other than those for templates (found in DeclTemplate.h) and friends (in DeclFriend.h).
const DeclarationNameInfo & getNameInfo() const
Gets the name info for specified reduction identifier.
ASTStmtWriter(ASTWriter &Writer, ASTWriter::RecordData &Record)
OpenMPScheduleClauseModifier getSecondScheduleModifier() const
Get the second modifier of the clause.
MemberExpr - [C99 6.5.2.3] Structure and Union Members.
GNU array range designator.
SourceLocation getWhileLoc() const
An ArrayInitIndexExpr record.
A GCC-style AsmStmt record.
This represents '#pragma omp target parallel' directive.
This represents 'nowait' clause in the '#pragma omp ...' directive.
ContinueStmt - This represents a continue.
OpenMPScheduleClauseModifier getFirstScheduleModifier() const
Get the first modifier of the clause.
Expr * getPromiseCall() const
Retrieve the promise call that results from this 'co_return' statement.
Represents a loop initializing the elements of an array.
This represents 'num_tasks' clause in the '#pragma omp ...' directive.
SourceLocation getColonLoc() const
ChooseExpr - GNU builtin-in function __builtin_choose_expr.
Expr * getFilterExpr() const
SourceLocation getAttrLoc() const
BinaryConditionalOperator - The GNU extension to the conditional operator which allows the middle ope...
CXXCatchStmt - This represents a C++ catch block.
Represents an explicit C++ type conversion that uses "functional" notation (C++ [expr.type.conv]).
OpenMPScheduleClauseKind getScheduleKind() const
Get kind of the clause.
An object for streaming information to a record.
An ObjCAtCatchStmt record.
Expr * getCombinedCond() const
WhileStmt - This represents a 'while' stmt.
SourceLocation getFirstScheduleModifierLoc() const
Get the first modifier location.
SourceRange getParenOrBraceRange() const
CleanupObject getObject(unsigned i) const
Field designator where the field has been resolved to a declaration.
helper_expr_const_range reduction_ops() const
unsigned getNumConcatenated() const
getNumConcatenated - Get the number of string literal tokens that were concatenated in translation ph...
SourceLocation getLParenLoc() const
bool containsUnexpandedParameterPack() const
Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...
SourceLocation getAtSynchronizedLoc() const
A CXXInheritedCtorInitExpr record.
Expr * getThreadLimit()
Return ThreadLimit number.
CompoundStmt * getTryBlock()
Writes an AST file containing the contents of a translation unit.
SourceLocation getBreakLoc() const
bool shouldCopy() const
shouldCopy - True if we should do the 'copy' part of the copy-restore.
Represents Objective-C's @try ... @catch ... @finally statement.
capture_iterator capture_end() const
Retrieve an iterator pointing past the end of the sequence of captures.
void AddCXXBaseSpecifier(const CXXBaseSpecifier &Base)
Emit a C++ base specifier.
SourceRange getSourceRange() const LLVM_READONLY
SourceLocation tokens are not useful in isolation - they are low level value objects created/interpre...
bool isGlobalDelete() const
This represents '#pragma omp taskloop simd' directive.
void AddAPInt(const llvm::APInt &Value)
Emit an integral value.
SourceLocation getBuiltinLoc() const
getBuiltinLoc - Return the location of the __builtin_convertvector token.
unsigned getNumCatchStmts() const
Retrieve the number of @catch statements in this try-catch-finally block.
Expr * getBase() const
Retrieve the base object of this member expressions, e.g., the x in x.m.
StringLiteral - This represents a string literal expression, e.g.
CallExpr - Represents a function call (C99 6.5.2.2, C++ [expr.call]).
SourceRange getTypeIdParens() const
Expr * getPattern()
Retrieve the pattern of the pack expansion.
Expr * getPreCond() const
This represents 'dist_schedule' clause in the '#pragma omp ...' directive.
void Visit(PTR(Stmt) S, ParamTys... P)
An ObjCMessageExpr record.
void ClearSwitchCaseIDs()
Abstract class common to all of the C++ "named"/"keyword" casts.
This represents '#pragma omp sections' directive.
Expr * getHint() const
Returns number of threads.
NestedNameSpecifierLoc getQualifierLoc() const
Gets the nested name specifier.
ObjCBoolLiteralExpr - Objective-C Boolean Literal.
bool isObjectReceiver() const
A CompoundAssignOperator record.
unsigned getNumComponents() const
This represents '#pragma omp target data' directive.
const ParmVarDecl * getParam() const
OpenMPDirectiveKind getCancelRegion() const
Get cancellation region for the current cancellation point.
capture_init_iterator capture_init_end()
Retrieve the iterator pointing one past the last initialization argument for this lambda expression...
A reference to a declared variable, function, enum, etc.
NestedNameSpecifierLoc getQualifierLoc() const
Fetches the nested-name qualifier with source-location information, if one was given.
NestedNameSpecifierLoc getQualifierLoc() const
Gets the nested name specifier.
BreakStmt - This represents a break.
SourceLocation getReceiverLocation() const
Expr * getChunkSize()
Get chunk size.
const VarDecl * getCatchParamDecl() const
SourceLocation getLocation() const
FieldDecl * getInitializedFieldInUnion()
If this initializes a union, specifies which field in the union to initialize.
bool isConditionDependent() const
Expr * getNumThreads() const
Returns number of threads.
SourceLocation getBridgeKeywordLoc() const
The location of the bridge keyword.
bool hadMultipleCandidates() const
Whether the referred constructor was resolved from an overloaded set having size greater than 1...
void AddTemplateArgumentLoc(const TemplateArgumentLoc &Arg)
Emits a template argument location.
DeclStmt * getLoopVarStmt()
ParmVarDecl * getParameterPack() const
Get the parameter pack which this expression refers to.
unsigned getNumArgs() const
const Expr * getBase() const
const Expr * getCond() const
A trivial tuple used to represent a source range.
This represents '#pragma omp taskyield' directive.
This represents '#pragma omp distribute parallel for simd' composite directive.
A boolean literal, per ([C++ lex.bool] Boolean literals).
SourceLocation getTemplateKeywordLoc() const
Retrieve the location of the template keyword preceding the member name, if any.
SourceLocation getLParenLoc() const
Returns the location of '('.
OffsetOfExpr - [C99 7.17] - This represents an expression of the form offsetof(record-type, member-designator).
Expr * getQueriedExpression() const
This represents '#pragma omp parallel sections' directive.
SourceLocation getBuiltinLoc() const
A Microsoft C++ __uuidof expression, which gets the _GUID that corresponds to the supplied type or ex...
SourceLocation getRParenLoc() const
Expr * getCommon() const
getCommon - Return the common expression, written to the left of the condition.
TypeSourceInfo * getWrittenTypeInfo() const
DeclStmt * getBeginStmt()
SourceLocation getRightLoc() const
const Expr * getCond() const
const Expr * getPostUpdateExpr() const
Get post-update expression for the clause.
The receiver is a superclass.
SourceLocation getLParenLoc() const
Returns the location of '('.
SourceLocation getGenericLoc() const
SourceLocation LAngleLoc
The source location of the left angle bracket ('<').
bool hasCancel() const
Return true if current directive has inner cancel directive.
SourceLocation getBegin() const
TypeSourceInfo * getTypeSourceInfo() const
getTypeSourceInfo - Return the destination type.
SourceLocation getRParenLoc() const
Return the location of the right parentheses.
Represents Objective-C's @autoreleasepool Statement.
bool isConditionTrue() const
isConditionTrue - Return whether the condition is true (i.e.
decls_iterator decls_end() const
SourceLocation getKeywordLoc() const
StmtCode
Record codes for each kind of statement or expression.
CompoundStmt * getTryBlock() const
QualType getBaseType() const
InitListExpr * getSyntacticForm() const
Expr * getBaseExpr() const
Represents an implicitly-generated value initialization of an object of a given type.
CompoundStmt * getBlock() const
SourceLocation getReturnLoc() const
CapturedRegionKind getCapturedRegionKind() const
Retrieve the captured region kind.
A GenericSelectionExpr record.
This represents '#pragma omp target parallel for' directive.
This represents clause 'use_device_ptr' in the '#pragma omp ...' directives.
Expr * getLength()
Get length of array section.
ConstructionKind getConstructionKind() const
Determine whether this constructor is actually constructing a base class (rather than a complete obje...
TypeSourceInfo * getClassReceiverTypeInfo() const
Returns a type-source information of a class message send, or nullptr if the message is not a class m...
Expr * getBase()
An array section can be written only as Base[LowerBound:Length].
bool isOverloaded() const
True if this lookup is overloaded.
This represents '#pragma omp taskloop' directive.