22 #include "llvm/Bitcode/BitstreamWriter.h"
23 using namespace clang;
41 : Writer(Writer), Record(Record) { }
46 #define STMT(Type, Base) \
47 void Visit##Type(Type *);
48 #include "clang/AST/StmtNodes.inc"
64 void ASTStmtWriter::VisitNullStmt(
NullStmt *
S) {
67 Record.push_back(S->HasLeadingEmptyMacro);
73 Record.push_back(S->
size());
74 for (
auto *CS : S->
body())
81 void ASTStmtWriter::VisitSwitchCase(
SwitchCase *S) {
88 void ASTStmtWriter::VisitCaseStmt(
CaseStmt *S) {
97 void ASTStmtWriter::VisitDefaultStmt(
DefaultStmt *S) {
103 void ASTStmtWriter::VisitLabelStmt(
LabelStmt *S) {
113 Record.push_back(S->
getAttrs().size());
114 Writer.WriteAttributes(S->
getAttrs(), Record);
120 void ASTStmtWriter::VisitIfStmt(
IfStmt *S) {
131 void ASTStmtWriter::VisitSwitchStmt(
SwitchStmt *S) {
144 void ASTStmtWriter::VisitWhileStmt(
WhileStmt *S) {
153 void ASTStmtWriter::VisitDoStmt(
DoStmt *S) {
163 void ASTStmtWriter::VisitForStmt(
ForStmt *S) {
176 void ASTStmtWriter::VisitGotoStmt(
GotoStmt *S) {
192 void ASTStmtWriter::VisitContinueStmt(
ContinueStmt *S) {
198 void ASTStmtWriter::VisitBreakStmt(
BreakStmt *S) {
204 void ASTStmtWriter::VisitReturnStmt(
ReturnStmt *S) {
212 void ASTStmtWriter::VisitDeclStmt(
DeclStmt *S) {
222 void ASTStmtWriter::VisitAsmStmt(
AsmStmt *S) {
232 void ASTStmtWriter::VisitGCCAsmStmt(
GCCAsmStmt *S) {
245 for (
unsigned I = 0, N = S->
getNumInputs(); I != N; ++I) {
258 void ASTStmtWriter::VisitMSAsmStmt(
MSAsmStmt *S) {
282 for (
unsigned I = 0, N = S->
getNumInputs(); I != N; ++I) {
290 void ASTStmtWriter::VisitCapturedStmt(
CapturedStmt *S) {
309 for (
const auto &I : S->
captures()) {
310 if (I.capturesThis() || I.capturesVariableArrayType())
313 Writer.
AddDeclRef(I.getCapturedVar(), Record);
314 Record.push_back(I.getCaptureKind());
321 void ASTStmtWriter::VisitExpr(
Expr *E) {
340 void ASTStmtWriter::VisitDeclRefExpr(
DeclRefExpr *E) {
351 Record.push_back(NumTemplateArgs);
382 if (E->
getValue().getBitWidth() == 32) {
392 Record.push_back(E->
isExact());
408 Record.push_back(E->
getKind());
424 Record.push_back(E->
getKind());
431 void ASTStmtWriter::VisitParenExpr(
ParenExpr *E) {
441 Record.push_back(E->NumExprs);
442 for (
unsigned i=0; i != E->NumExprs; ++i)
457 void ASTStmtWriter::VisitOffsetOfExpr(
OffsetOfExpr *E) {
466 Record.push_back(ON.
getKind());
494 Record.push_back(E->
getKind());
514 void ASTStmtWriter::VisitCallExpr(
CallExpr *E) {
520 Arg != ArgEnd; ++Arg)
525 void ASTStmtWriter::VisitMemberExpr(
MemberExpr *E) {
532 Record.push_back(E->HasTemplateKWAndArgsInfo);
533 if (E->HasTemplateKWAndArgsInfo) {
536 Record.push_back(NumTemplateArgs);
539 for (
unsigned i=0; i != NumTemplateArgs; ++i)
555 Record.push_back(E->
isArrow());
562 void ASTStmtWriter::VisitObjCIsaExpr(
ObjCIsaExpr *E) {
567 Record.push_back(E->
isArrow());
580 VisitExplicitCastExpr(E);
587 void ASTStmtWriter::VisitCastExpr(
CastExpr *E) {
609 VisitBinaryOperator(E);
653 VisitExplicitCastExpr(E);
676 void ASTStmtWriter::VisitInitListExpr(
InitListExpr *E) {
683 bool isArrayFiller = E->ArrayFillerOrUnionFieldInit.is<
Expr*>();
684 Record.push_back(isArrayFiller);
695 for (
unsigned I = 0, N = E->
getNumInits(); I != N; ++I)
698 for (
unsigned I = 0, N = E->
getNumInits(); I != N; ++I)
714 if (D->isFieldDesignator()) {
724 }
else if (D->isArrayDesignator()) {
726 Record.push_back(D->getFirstExprIndex());
730 assert(D->isArrayRangeDesignator() &&
"Unknown designator");
732 Record.push_back(D->getFirstExprIndex());
748 void ASTStmtWriter::VisitNoInitExpr(
NoInitExpr *E) {
758 void ASTStmtWriter::VisitVAArgExpr(
VAArgExpr *E) {
775 void ASTStmtWriter::VisitStmtExpr(
StmtExpr *E) {
783 void ASTStmtWriter::VisitChooseExpr(
ChooseExpr *E) {
794 void ASTStmtWriter::VisitGNUNullExpr(
GNUNullExpr *E) {
819 void ASTStmtWriter::VisitBlockExpr(
BlockExpr *E) {
830 for (
unsigned I = 0, N = E->
getNumAssocs(); I != N; ++I) {
850 Record.push_back(result);
860 void ASTStmtWriter::VisitAtomicExpr(
AtomicExpr *E) {
862 Record.push_back(E->
getOp());
902 Record.push_back(E->HasPackExpansions);
907 if (E->HasPackExpansions) {
909 unsigned NumExpansions = 0;
912 Record.push_back(NumExpansions);
952 Record.push_back(E->
isArrow());
959 Record.push_back(E->SetterAndMethodRefFlags.getInt());
997 Record.push_back(E->getNumStoredSelLocs());
998 Record.push_back(E->SelLocsKind);
1000 Record.push_back(E->IsImplicit);
1019 Record.push_back(1);
1022 Record.push_back(0);
1030 Arg != ArgEnd; ++Arg)
1034 for (
unsigned i = 0, e = E->getNumStoredSelLocs(); i != e; ++i)
1106 void ASTStmtWriter::VisitCXXCatchStmt(
CXXCatchStmt *S) {
1114 void ASTStmtWriter::VisitCXXTryStmt(
CXXTryStmt *S) {
1164 for (
unsigned I = 0, N = E->
getNumArgs(); I != N; ++I)
1179 VisitCXXConstructExpr(E);
1184 void ASTStmtWriter::VisitLambdaExpr(
LambdaExpr *E) {
1186 Record.push_back(E->NumCaptures);
1187 unsigned NumArrayIndexVars = 0;
1188 if (E->HasArrayIndexVars)
1189 NumArrayIndexVars = E->getArrayIndexStarts()[E->NumCaptures];
1190 Record.push_back(NumArrayIndexVars);
1192 Record.push_back(E->CaptureDefault);
1194 Record.push_back(E->ExplicitParams);
1195 Record.push_back(E->ExplicitResultType);
1206 if (NumArrayIndexVars) {
1207 Record.append(E->getArrayIndexStarts(),
1208 E->getArrayIndexStarts() + E->NumCaptures + 1);
1209 VarDecl **ArrayIndexVars = E->getArrayIndexVars();
1210 for (
unsigned I = 0; I != NumArrayIndexVars; ++I)
1211 Writer.
AddDeclRef(ArrayIndexVars[I], Record);
1224 VisitExplicitCastExpr(E);
1231 VisitCXXNamedCastExpr(E);
1236 VisitCXXNamedCastExpr(E);
1241 VisitCXXNamedCastExpr(E);
1246 VisitCXXNamedCastExpr(E);
1251 VisitExplicitCastExpr(E);
1288 void ASTStmtWriter::VisitCXXThisExpr(
CXXThisExpr *E) {
1295 void ASTStmtWriter::VisitCXXThrowExpr(
CXXThrowExpr *E) {
1306 bool HasOtherExprStored = E->Param.getInt();
1308 Record.push_back(HasOtherExprStored);
1309 if (HasOtherExprStored)
1338 void ASTStmtWriter::VisitCXXNewExpr(
CXXNewExpr *E) {
1341 Record.push_back(E->
isArray());
1344 Record.push_back(E->StoredInitializationStyle);
1375 Record.push_back(E->
isArrow());
1409 Record.push_back(E->HasTemplateKWAndArgsInfo);
1410 if (E->HasTemplateKWAndArgsInfo) {
1421 Record.push_back(E->
isArrow());
1436 Record.push_back(E->HasTemplateKWAndArgsInfo);
1437 if (E->HasTemplateKWAndArgsInfo) {
1461 void ASTStmtWriter::VisitOverloadExpr(
OverloadExpr *E) {
1478 Record.push_back(OvI.getAccess());
1486 VisitOverloadExpr(E);
1487 Record.push_back(E->
isArrow());
1496 VisitOverloadExpr(E);
1505 Record.push_back(E->TypeTraitExprBits.NumArgs);
1506 Record.push_back(E->TypeTraitExprBits.Kind);
1507 Record.push_back(E->TypeTraitExprBits.Value);
1509 for (
unsigned I = 0, N = E->
getNumArgs(); I != N; ++I)
1543 Record.push_back(E->NumExpansions);
1553 Record.push_back(E->Length);
1558 void ASTStmtWriter::VisitSubstNonTypeTemplateParmExpr(
1567 void ASTStmtWriter::VisitSubstNonTypeTemplateParmPackExpr(
1595 void ASTStmtWriter::VisitCXXFoldExpr(
CXXFoldExpr *E) {
1600 Writer.
AddStmt(E->SubExprs[0]);
1601 Writer.
AddStmt(E->SubExprs[1]);
1602 Record.push_back(E->Opcode);
1613 void ASTStmtWriter::VisitTypoExpr(
TypoExpr *E) {
1616 assert(
false &&
"Cannot write TypoExpr nodes");
1632 void ASTStmtWriter::VisitAsTypeExpr(
AsTypeExpr *E) {
1645 Record.push_back(E->
isArrow());
1680 void ASTStmtWriter::VisitSEHTryStmt(
SEHTryStmt *S) {
1689 void ASTStmtWriter::VisitSEHLeaveStmt(
SEHLeaveStmt *S) {
1705 : Writer(W), Record(Record) { }
1706 #define OPENMP_CLAUSE(Name, Class) \
1707 void Visit##Class(Class *S);
1708 #include "clang/Basic/OpenMPKinds.def"
1720 void OMPClauseWriter::VisitOMPIfClause(
OMPIfClause *
C) {
1774 void OMPClauseWriter::VisitOMPReadClause(
OMPReadClause *) {}
1804 for (
auto *VE : C->
inits()) {
1854 for (
auto *VE : C->inits()) {
1857 for (
auto *VE : C->updates()) {
1860 for (
auto *VE : C->finals()) {
1863 Writer->Writer.
AddStmt(C->getStep());
1864 Writer->Writer.
AddStmt(C->getCalcStep());
1868 Record.push_back(C->varlist_size());
1871 for (
auto *VE : C->varlists())
1877 Record.push_back(C->varlist_size());
1879 for (
auto *VE : C->varlists())
1890 Record.push_back(C->varlist_size());
1892 for (
auto *VE : C->varlists())
1903 Record.push_back(C->varlist_size());
1905 for (
auto *VE : C->varlists())
1910 Record.push_back(C->varlist_size());
1915 for (
auto *VE : C->varlists())
1927 ClauseWriter.writeClause(E->
getClause(i));
1937 VisitOMPExecutableDirective(D);
1957 for (
auto I : D->
inits()) {
1963 for (
auto I : D->
finals()) {
1971 VisitOMPExecutableDirective(D);
1976 VisitOMPLoopDirective(D);
1981 VisitOMPLoopDirective(D);
1986 VisitOMPLoopDirective(D);
1993 VisitOMPExecutableDirective(D);
1999 VisitOMPExecutableDirective(D);
2006 VisitOMPExecutableDirective(D);
2012 VisitOMPExecutableDirective(D);
2018 VisitOMPExecutableDirective(D);
2024 VisitOMPLoopDirective(D);
2028 void ASTStmtWriter::VisitOMPParallelForSimdDirective(
2030 VisitOMPLoopDirective(D);
2034 void ASTStmtWriter::VisitOMPParallelSectionsDirective(
2038 VisitOMPExecutableDirective(D);
2045 VisitOMPExecutableDirective(D);
2052 VisitOMPExecutableDirective(D);
2065 VisitOMPExecutableDirective(D);
2071 VisitOMPExecutableDirective(D);
2077 VisitOMPExecutableDirective(D);
2083 VisitOMPExecutableDirective(D);
2089 VisitOMPExecutableDirective(D);
2096 VisitOMPExecutableDirective(D);
2102 VisitOMPExecutableDirective(D);
2109 VisitOMPExecutableDirective(D);
2113 void ASTStmtWriter::VisitOMPCancellationPointDirective(
2116 VisitOMPExecutableDirective(D);
2123 VisitOMPExecutableDirective(D);
2133 assert(SwitchCaseIDs.find(S) == SwitchCaseIDs.end() &&
2134 "SwitchCase recorded twice");
2135 unsigned NextID = SwitchCaseIDs.size();
2136 SwitchCaseIDs[
S] = NextID;
2141 assert(SwitchCaseIDs.find(S) != SwitchCaseIDs.end() &&
2142 "SwitchCase hasn't been seen yet");
2143 return SwitchCaseIDs[
S];
2147 SwitchCaseIDs.clear();
2152 void ASTWriter::WriteSubStmt(
Stmt *S,
2153 llvm::DenseMap<Stmt *, uint64_t> &SubStmtEntries,
2164 llvm::DenseMap<Stmt *, uint64_t>::iterator I = SubStmtEntries.find(S);
2165 if (I != SubStmtEntries.end()) {
2166 Record.push_back(I->second);
2172 assert(!ParentStmts.count(S) &&
"There is a Stmt cycle!");
2174 struct ParentStmtInserterRAII {
2179 : S(S), ParentStmts(ParentStmts) {
2180 ParentStmts.insert(S);
2182 ~ParentStmtInserterRAII() {
2183 ParentStmts.erase(S);
2187 ParentStmtInserterRAII ParentStmtInserter(S, ParentStmts);
2192 CollectedStmts = &SubStmts;
2195 Writer.AbbrevToUse = 0;
2201 = DeclIDs.begin()->first->getASTContext().getSourceManager();
2203 llvm_unreachable(
"Unhandled sub-statement writing AST file");
2208 CollectedStmts = &StmtsToEmit;
2214 while (!SubStmts.empty())
2215 WriteSubStmt(SubStmts.pop_back_val(), SubStmtEntries, ParentStmts);
2217 Stream.EmitRecord(Writer.Code, Record, Writer.AbbrevToUse);
2219 SubStmtEntries[
S] = Stream.GetCurrentBitNo();
2229 assert(SubStmtEntries.empty() &&
"unexpected entries in sub-stmt map");
2230 assert(ParentStmts.empty() &&
"unexpected entries in parent stmt map");
2232 for (
unsigned I = 0, N = StmtsToEmit.size(); I != N; ++I) {
2233 WriteSubStmt(StmtsToEmit[I], SubStmtEntries, ParentStmts);
2235 assert(N == StmtsToEmit.size() &&
2236 "Substatement written via AddStmt rather than WriteSubStmt!");
2243 SubStmtEntries.clear();
2244 ParentStmts.clear();
2247 StmtsToEmit.clear();
void AddTemplateArgument(const TemplateArgument &Arg, RecordDataImpl &Record)
Emit a template argument.
A CXXConstCastExpr record.
SourceLocation getRParenLoc() const
A call to an overloaded operator written using operator syntax.
The receiver is the instance of the superclass object.
Represents a single C99 designator.
ValueDecl * getMemberDecl() const
Retrieve the member declaration to which this expression refers.
SourceRange getParenOrBraceRange() const
Defines the clang::ASTContext interface.
A CompoundLiteralExpr record.
unsigned getNumInits() const
This represents '#pragma omp master' directive.
SourceLocation getEnd() const
const SwitchCase * getNextSwitchCase() const
unsigned getNumTemplateArgs() const
Retrieve the number of template arguments provided as part of this template-id.
const Expr * getBase() const
ParmVarDecl *const * iterator
Iterators over the parameters which the parameter pack expanded into.
The null pointer literal (C++11 [lex.nullptr])
CastKind getCastKind() const
ExprObjectKind getObjectKind() const
This represents '#pragma omp task' directive.
serialization::StmtCode Code
TypeSourceInfo * getDestroyedTypeInfo() const
Retrieve the source location information for the type being destroyed.
CapturedDecl * getCapturedDecl()
Retrieve the outlined function declaration.
NamedDecl * getFoundDecl()
Get the NamedDecl through which this reference occurred.
unsigned arg_size() const
Retrieve the number of arguments.
unsigned getNumOutputs() const
TypeSourceInfo * getTypeSourceInfo() const
A UserDefinedLiteral record.
The receiver is an object instance.
SourceRange getSourceRange() const LLVM_READONLY
bool isXLHSInRHSPart() const
Return true if helper update expression has form 'OpaqueValueExpr(x) binop OpaqueValueExpr(expr)' and...
Expr * getSyntacticForm()
bool isFPContractable() const
void AddDeclarationNameInfo(const DeclarationNameInfo &NameInfo, RecordDataImpl &Record)
const DeclGroupRef getDeclGroup() const
An IndirectGotoStmt record.
This represents clause 'copyin' in the '#pragma omp ...' directives.
const ObjCAtFinallyStmt * getFinallyStmt() const
Retrieve the @finally statement, if any.
SourceLocation getColonLoc() const
Get colon location.
helper_expr_const_range source_exprs() const
bool containsUnexpandedParameterPack() const
Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...
NameKind
NameKind - The kind of name this object contains.
SourceLocation getLParenLoc() const
Retrieve the location of the left parentheses ('(') that precedes the argument list.
bool isResultDependent() const
Whether this generic selection is result-dependent.
SourceLocation getOperatorLoc() const
Retrieve the location of the '->' or '.' operator.
SourceLocation getThrowLoc() const
void AddToken(const Token &Tok, RecordDataImpl &Record)
Emit a token.
SourceLocation getLParenLoc() const
SourceLocation getCommaLoc()
Get location of ','.
SourceLocation getLocation() const
bool isElidable() const
Whether this construction is elidable.
Expr * getExpr(unsigned Index)
getExpr - Return the Expr at the specified index.
bool isDelegateInitCall() const
A CXXStaticCastExpr record.
A type trait used in the implementation of various C++11 and Library TR1 trait templates.
An AttributedStmt record.
void AddAPInt(const llvm::APInt &Value, RecordDataImpl &Record)
Emit an integral value.
CompoundStmt * getSubStmt()
A CXXReinterpretCastExpr record.
SourceLocation getTemplateKeywordLoc() const
Retrieve the location of the template keyword preceding the member name, if any.
NestedNameSpecifierLoc getQualifierLoc() const
Retrieve the nested-name-specifier that qualifies the member name, with source location information...
A ObjCBoolLiteralExpr record.
private_copies_range private_copies()
CharacterKind getKind() const
Expr *const * semantics_iterator
TypeSourceInfo * getScopeTypeInfo() const
Retrieve the scope type in a qualified pseudo-destructor expression.
CXXCatchStmt * getHandler(unsigned i)
bool isArgumentType() const
bool isGlobalDelete() const
This represents '#pragma omp for simd' directive.
SourceLocation getLParenLoc() const
Returns the location of '('.
SourceLocation getForLoc() const
OpenMPProcBindClauseKind getProcBindKind() const
Returns kind of the clause.
TypeSourceInfo * getTypeSourceInfo() const
SourceRange getTypeIdParens() const
An ImplicitValueInitExpr record.
SourceLocation getLParenLoc() const
AccessSpecifier getAccess() const
ObjCMethodDecl * getAtIndexMethodDecl() const
An ImplicitCastExpr record.
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.
Defines the C++ template declaration subclasses.
Represents an attribute applied to a statement.
TypeSourceInfo * getArg(unsigned I) const
Retrieve the Ith argument.
SourceLocation getRParenLoc() const
capture_init_range capture_inits() const
A CXXOperatorCallExpr record.
SourceLocation getBuiltinLoc() const
getBuiltinLoc - Return the location of the __builtin_astype token.
A CXXTemporaryObjectExpr record.
Represents Objective-C's @throw statement.
unsigned getDeclRefExprAbbrev() const
unsigned getResultIndex() const
SourceLocation getLabelLoc() const
void AddTypeSourceInfo(TypeSourceInfo *TInfo, RecordDataImpl &Record)
Emits a reference to a declarator info.
InitListExpr * getSyntacticForm() const
SourceLocation getIfLoc() const
Represents a call to a C++ constructor.
TypeSourceInfo * getTypeSourceInfo() const
An Embarcadero array type trait, as used in the implementation of __array_rank and __array_extent...
SourceLocation getColonLoc() const
Returns the location of ':'.
This represents 'update' clause in the '#pragma omp atomic' directive.
const Stmt * getElse() const
SourceLocation getOperatorLoc() const
This represents '#pragma omp parallel for' directive.
void AddTypeRef(QualType T, RecordDataImpl &Record)
Emit a reference to a type.
VarDecl * getConditionVariable() const
Retrieve the variable declared in this "for" statement, if any.
SourceLocation getLParenLoc() const
Returns the location of '('.
Represents a prvalue temporary that is written into memory so that a reference can bind to it...
Expr * getAlignment()
Returns alignment.
SourceLocation getEndLoc() const
CompoundStmt * getBlock() const
IdentType getIdentType() const
bool doesUsualArrayDeleteWantSize() const
bool isConditionTrue() const
Expr * getIndexExpr(unsigned Idx)
bool hadArrayRangeDesignator() const
ObjCDictionaryElement getKeyValueElement(unsigned Index) const
This represents 'read' clause in the '#pragma omp atomic' directive.
SourceRange getSourceRange() const LLVM_READONLY
Expr * getOperand() const
SourceLocation getReturnLoc() const
This represents clause 'private' in the '#pragma omp ...' directives.
This represents 'num_threads' clause in the '#pragma omp ...' directive.
SourceRange getSourceRange() const LLVM_READONLY
const Expr * getCallee() const
StringRef getInputConstraint(unsigned i) const
SourceLocation getLocation() const
Retrieve the location of the literal.
A ConditionOperator record.
const TypeSourceInfo * getAssocTypeSourceInfo(unsigned i) const
void AddCXXTemporary(const CXXTemporary *Temp, RecordDataImpl &Record)
Emit a CXXTemporary.
SourceLocation getDoLoc() const
Implicit construction of a std::initializer_list<T> object from an array temporary within list-initia...
SourceLocation getRParenLoc() const
UnaryExprOrTypeTrait getKind() const
This represents implicit clause 'flush' for the '#pragma omp flush' directive. This clause does not e...
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...
capture_iterator capture_begin()
Retrieve an iterator pointing to the first capture.
A CXXConstructExpr record.
const ParmVarDecl * getParam() const
SourceLocation getLParenLoc() const
raw_arg_iterator raw_arg_begin()
unsigned getValue() const
A C++ throw-expression (C++ [except.throw]).
SourceRange getSourceRange() const LLVM_READONLY
QualType getBaseType() const
unsigned path_size() const
SourceLocation getLocation() const
SourceLocation getEllipsisLoc() const
SourceLocation getAtLoc() const
void AddIdentifierRef(const IdentifierInfo *II, RecordDataImpl &Record)
Emit a reference to an identifier.
ArrayTypeTrait getTrait() const
TypeSourceInfo * getTypeSourceInfo() const
Retrieve the type source information for the type being constructed.
A ShuffleVectorExpr record.
This represents 'safelen' clause in the '#pragma omp ...' directive.
SourceLocation getDestroyedTypeLoc() const
Retrieve the starting location of the type being destroyed.
A C++ static_cast expression (C++ [expr.static.cast]).
OpenMPDirectiveKind getDirectiveKind() const
SourceLocation getRParenLoc() const
Return the location of the right parentheses.
Represents a C99 designated initializer expression.
SourceLocation getIsaMemberLoc() const
SourceLocation getLParenLoc() const
Returns the location of '('.
Expr * getNumThreads() const
Returns number of threads.
An ObjCAtThrowStmt record.
ObjCProtocolDecl * getProtocol() const
CompoundStmt * getSubStmt() const
Retrieve the compound statement that will be included in the program only if the existence of the sym...
Expr * getSubExpr(unsigned Idx) const
An element in an Objective-C dictionary literal.
A DesignatedInitExpr record.
This represents '#pragma omp parallel' directive.
unsigned getNumInputs() const
ObjCInterfaceDecl * getClassReceiver() const
unsigned getNumSemanticExprs() const
unsigned getNumAssocs() const
An ObjCProtocolExpr record.
An ObjCSelectorExpr record.
SourceLocation getAmpAmpLoc() const
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.
unsigned getManglingNumber() const
SourceLocation getLocStart() const
Returns the starting location of the clause.
StringLiteral * getString()
SourceLocation getRParen() const
Get the location of the right parentheses ')'.
const TemplateArgumentLoc * getTemplateArgs() const
Retrieve the template arguments provided as part of this template-id.
ASTTemplateKWAndArgsInfo * getTemplateKWAndArgsInfo()
Return the optional template keyword and arguments info.
IdentifierInfo * getFieldName() const
For a field or identifier offsetof node, returns the name of the field.
ArrayRef< Expr * > updates()
TypeSourceInfo * getTypeSourceInfo() const
DeclarationNameInfo getNameInfo() const
Retrieve the name of the entity we're testing for, along with location information.
Represents a C++ member access expression for which lookup produced a set of overloaded functions...
SourceLocation getAtLoc() const
IdentifierInfo & getAccessor() const
SourceLocation getLBracLoc() const
SourceLocation getLBraceLoc() const
This represents '#pragma omp barrier' directive.
const DeclarationNameInfo & getNameInfo() const
Gets the name info for specified reduction identifier.
SourceLocation getLAngleLoc() const
Retrieve the location of the left angle bracket starting the explicit template argument list followin...
This is a common base class for loop directives ('omp simd', 'omp for', 'omp for simd' etc...
SourceLocation getRAngleLoc() const
Retrieve the location of the right angle bracket ending the explicit template argument list following...
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.
SourceLocation getRParenLoc() const
Expr * getFilterExpr() const
bool isFPContractable() const
SourceLocation getSuperLoc() const
Retrieve the location of the 'super' keyword for a class or instance message to 'super', otherwise an invalid source location.
const VarDecl * getCatchParamDecl() const
bool isOverloaded() const
True if this lookup is overloaded.
SourceLocation getWhileLoc() const
Represents Objective-C's @catch statement.
const CompoundStmt * getSynchBody() const
const VarDecl * getNRVOCandidate() const
Retrieve the variable that might be used for the named return value optimization. ...
This represents clause 'copyprivate' in the '#pragma omp ...' directives.
Describes an C or C++ initializer list.
SmallVector< uint64_t, 64 > RecordData
ObjCMethodDecl * getBoxingMethod() const
IdentifierInfo * getOutputIdentifier(unsigned i) const
const Stmt * getFinallyBody() const
ArrayRef< Expr * > finals()
ObjCBridgeCastKind getBridgeKind() const
Determine which kind of bridge is being performed via this cast.
IdentifierInfo * getDestroyedTypeIdentifier() const
In a dependent pseudo-destructor expression for which we do not have full type information on the des...
helper_expr_const_range private_copies() const
const ValueDecl * getExtendingDecl() const
Get the declaration which triggered the lifetime-extension of this temporary, if any.
SourceLocation getAtFinallyLoc() const
Expr * getX()
Get 'x' part of the associated expression/statement.
QualType getSuperType() const
Retrieve the type referred to by 'super'.
bool isSuperReceiver() const
SourceLocation getRParenLoc() const
capture_init_iterator capture_init_end() const
Retrieve the iterator pointing one past the last initialization argument for this lambda expression...
A reference to a previously [de]serialized Stmt record.
Stmt * getHandlerBlock() const
Expr * getExprOperand() const
path_iterator path_begin()
SourceLocation getLParen() const
Get the location of the left parentheses '('.
helper_expr_const_range source_exprs() const
OpenMPScheduleClauseKind getScheduleKind() const
Get kind of the clause.
const Expr * getSubExpr() const
semantics_iterator semantics_end()
SourceLocation getRParenLoc() const
void AddSourceRange(SourceRange Range, RecordDataImpl &Record)
Emit a source range.
A builtin binary operation expression such as "x + y" or "x <= y".
SourceLocation getLocation() const
Selector getSelector() const
SourceLocation RAngleLoc
The source location of the right angle bracket ('>').
SourceLocation getRBraceLoc() const
bool isValueDependent() const
Expr * getOutputExpr(unsigned i)
void AddSelectorRef(Selector, RecordDataImpl &Record)
Emit a Selector (which is a smart pointer reference).
SourceLocation getThrowLoc()
This represents '#pragma omp cancellation point' directive.
This represents 'default' clause in the '#pragma omp ...' directive.
Expr * getBaseExpr() const
const Stmt * getCatchBody() const
This represents 'final' clause in the '#pragma omp ...' directive.
This represents 'mergeable' clause in the '#pragma omp ...' directive.
This represents '#pragma omp teams' directive.
bool isConditionDependent() const
This represents clause 'reduction' in the '#pragma omp ...' directives.
void AddTemplateArgumentLoc(const TemplateArgumentLoc &Arg, RecordDataImpl &Record)
Emits a template argument location.
FieldDecl * getField()
Get the field whose initializer will be used.
A marker record that indicates that we are at the end of an expression.
Represents binding an expression to a temporary.
const ObjCAtCatchStmt * getCatchStmt(unsigned I) const
Retrieve a @catch statement.
StringLiteral * getClobberStringLiteral(unsigned i)
Expr * Key
The key for the dictionary element.
CXXTemporary * getTemporary()
bool isOpenMPWorksharingDirective(OpenMPDirectiveKind DKind)
Checks if the specified directive is a worksharing directive.
A C++ lambda expression, which produces a function object (of unspecified type) that can be invoked l...
TypeSourceInfo * getTypeInfoAsWritten() const
const RecordDecl * getCapturedRecordDecl() const
Retrieve the record declaration for captured variables.
Represents a C++ member access expression where the actual member referenced could not be resolved be...
const Expr * getBase() const
CleanupObject getObject(unsigned i) const
bool isArrow() const
Determine whether this pseudo-destructor expression was written using an '->' (otherwise, it used a '.').
ASTTemplateKWAndArgsInfo * getTemplateKWAndArgsInfo()
Return the optional template keyword and arguments info.
bool hadMultipleCandidates() const
Returns true if this member expression refers to a method that was resolved from an overloaded set ha...
SourceLocation getLocation() const
ObjCMethodDecl * setAtIndexMethodDecl() const
SourceLocation getUsedLocation() const
Retrieve the location where this default argument was actually used.
SourceLocation getDefaultLoc() const
A default argument (C++ [dcl.fct.default]).
ExpressionTrait getTrait() const
SourceLocation getSwitchLoc() const
Represents the this expression in C++.
bool hadMultipleCandidates() const
Whether the referred constructor was resolved from an overloaded set having size greater than 1...
MSPropertyDecl * getPropertyDecl() const
Extends ASTTemplateArgumentListInfo with the source location information for the template keyword; th...
OpenMPDefaultClauseKind getDefaultKind() const
Returns kind of the clause.
SourceLocation getRParenLoc() const
getRParenLoc - Return the location of final right parenthesis.
SourceLocation getBuiltinLoc() const
unsigned RecordSwitchCaseID(SwitchCase *S)
Record an ID for the given switch-case statement.
OpenMPClauseKind getClauseKind() const
Returns kind of OpenMP clause (private, shared, reduction, etc.).
SourceLocation getReceiverLocation() const
SourceLocation getOperatorLoc() const LLVM_READONLY
OpenMPDependClauseKind getDependencyKind() const
Get dependency type.
CXXBaseSpecifier * getBase() const
For a base class node, returns the base specifier.
FunctionDecl * getOperatorDelete() const
SourceLocation getColonColonLoc() const
Retrieve the location of the '::' in a qualified pseudo-destructor expression.
void AddNestedNameSpecifierLoc(NestedNameSpecifierLoc NNS, RecordDataImpl &Record)
Emit a nested name specifier with source-location information.
SourceLocation getRParenLoc() const
SourceLocation getLocEnd() const
Returns the ending location of the clause.
unsigned getNumDecls() const
Gets the number of declarations in the unresolved set.
SourceLocation getTryLoc() const
OpenMPDirectiveKind getCancelRegion() const
Get cancellation region for the current cancellation point.
llvm::APInt getValue() const
Represents a C++ pseudo-destructor (C++ [expr.pseudo]).
SourceLocation getMemberLoc() const
SourceLocation getTokenLocation() const
getTokenLocation - The location of the __null token.
SourceLocation getAsmLoc() const
StringRef getAsmString() const
void Visit(PTR(OMPClause) S)
This represents '#pragma omp taskgroup' directive.
unsigned getNumArgs() const
Determine the number of arguments to this type trait.
SourceLocation getDefaultKindKwLoc() const
Returns location of clause kind.
unsigned getNumObjects() const
const Expr * getControllingExpr() const
OMPClauseWriter(ASTStmtWriter *W, ASTWriter::RecordData &Record)
capture_init_iterator capture_init_begin() const
Retrieve the first initialization argument for this lambda expression (which initializes the first ca...
This represents clause 'aligned' in the '#pragma omp ...' directives.
unsigned getNumExpansions() const
Get the number of parameters in this parameter pack.
SourceRange getSourceRange() const LLVM_READONLY
Expr * getQueriedExpression() const
NestedNameSpecifierLoc getQualifierLoc() const
Stmt * getHandler() const
unsigned getCharacterLiteralAbbrev() const
TypeSourceInfo * getEncodedTypeSourceInfo() const
NamedDecl * getDecl() const
bool isPostfixUpdate() const
Return true if 'v' expression must be updated to original value of 'x', false if 'v' must be updated ...
A field in a dependent type, known only by its name.
unsigned getSwitchCaseID(SwitchCase *S)
Retrieve the ID for the given switch-case statement.
bool isInstantiationDependent() const
Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...
VAArgExpr, used for the builtin function __builtin_va_arg.
bool HasTemplateKWAndArgsInfo
Whether the name includes info for explicit template keyword and arguments.
FunctionDecl * getOperatorDelete() const
NamedDecl * getFirstQualifierFoundInScope() const
Retrieve the first part of the nested-name-specifier that was found in the scope of the member access...
SourceLocation getOpLoc() const
NameKind getNameKind() const
getNameKind - Determine what kind of name this is.
static unsigned getNumSubExprs(AtomicOp Op)
Determine the number of arguments the specified atomic builtin should have.
bool requiresZeroInitialization() const
Whether this construction first requires zero-initialization before the initializer is called...
This represents implicit clause 'depend' for the '#pragma omp task' directive.
const ObjCMethodDecl * getMethodDecl() const
designators_iterator designators_begin()
LabelDecl * getDecl() const
OMPClause * getClause(unsigned i) const
Returns specified clause.
SourceLocation getColonLoc() const
Gets location of ':' symbol in clause.
IdentifierInfo * getInputIdentifier(unsigned i) const
unsigned getArrayExprIndex() const
For an array element node, returns the index into the array of expressions.
This represents 'proc_bind' clause in the '#pragma omp ...' directive.
This represents 'capture' clause in the '#pragma omp atomic' directive.
SourceLocation getRParenLoc() const
void AddTemplateKWAndArgsInfo(const ASTTemplateKWAndArgsInfo &Args)
SourceLocation getRParenLoc() const
helper_expr_const_range assignment_ops() const
NestedNameSpecifierLoc getQualifierLoc() const
Fetches the nested-name qualifier with source-location information, if one was given.
decls_iterator decls_end() const
SourceLocation getScheduleKindLoc()
Get kind location.
bool isListInitialization() const
Whether this constructor call was written as list-initialization.
VarDecl * getConditionVariable() const
Retrieve the variable declared in this "while" statement, if any.
SourceLocation getLocation() const
Retrieve the location of this expression.
TypeSourceInfo * getTypeSourceInfo() const
getTypeSourceInfo - Return the destination type.
unsigned NumTemplateArgs
The number of template arguments in TemplateArgs. The actual template arguments (if any) are stored a...
Expr * getCondition() const
Returns condition.
Represents a C++ functional cast expression that builds a temporary object.
unsigned getExprImplicitCastAbbrev() const
SourceLocation getLBraceLoc() const
SourceLocation getRParenLoc() const
A C++ const_cast expression (C++ [expr.const.cast]).
unsigned getNumExpressions() const
Field designator where only the field name is known.
An ObjCSubscriptRefExpr record.
Expr * getIterationVariable() const
SourceLocation getGotoLoc() const
NestedNameSpecifierLoc getQualifierLoc() const
Retrieve the nested-name-specifier that qualifies the name, with source location information.
ObjCMethodDecl * getImplicitPropertyGetter() const
raw_arg_iterator raw_arg_end()
SourceLocation getLocation() const
SourceLocation getEqualOrColonLoc() const
Retrieve the location of the '=' that precedes the initializer value itself, if present.
ConstructionKind getConstructionKind() const
Determine whether this constructor is actually constructing a base class (rather than a complete obje...
Represents Objective-C's @synchronized statement.
ObjCSelectorExpr used for @selector in Objective-C.
bool isImplicitAccess() const
True if this is an implicit access, i.e., one in which the member being accessed was not written in t...
A CXXStdInitializerListExpr record.
Represents an expression that computes the length of a parameter pack.
An ArraySubscriptExpr record.
void AddString(StringRef Str, RecordDataImpl &Record)
Add a string to the given record.
This represents 'ordered' clause in the '#pragma omp ...' directive.
Selector getSelector() const
A PseudoObjectExpr record.
unsigned getNumElements() const
getNumElements - Return number of elements of objective-c array literal.
NonTypeTemplateParmDecl * getParameterPack() const
Retrieve the non-type template parameter pack being substituted.
SourceRange getAngleBrackets() const LLVM_READONLY
SourceLocation getEndLoc() const
const SwitchCase * getSwitchCaseList() const
void AddCXXBaseSpecifier(const CXXBaseSpecifier &Base, RecordDataImpl &Record)
Emit a C++ base specifier.
SourceLocation getQuestionLoc() const
SourceLocation getLocation() const
Expr * getSubExpr() const
This represents '#pragma omp for' directive.
An ObjCIndirectCopyRestoreExpr record.
SourceLocation getLabelLoc() const
Expr * getElement(unsigned Index)
getExpr - Return the Expr at the specified index.
SourceLocation getLParenLoc() const
Returns the location of '('.
Optional< unsigned > NumExpansions
The number of elements this pack expansion will expand to, if this is a pack expansion and is known...
Stmt * getTemporary() const
Represents a folding of a pack over an operator.
Expr * getSrcExpr() const
getSrcExpr - Return the Expr to be converted.
Expr * getIsLastIterVariable() const
An expression that sends a message to the given Objective-C object or class.
unsigned getNumComponents() const
A DesignatedInitUpdateExpr record.
Expr * getInputExpr(unsigned i)
Expr * getOutputExpr(unsigned i)
A member reference to an MSPropertyDecl.
Expr * getNextUpperBound() const
DeclarationName getDeclName() const
TemplateArgumentLoc * getTemplateArgs()
Retrieve the template arguments.
Represents a reference to a non-type template parameter that has been substituted with a template arg...
This represents '#pragma omp cancel' directive.
This represents 'collapse' clause in the '#pragma omp ...' directive.
SourceLocation getKeywordLoc() const
Retrieve the location of the __if_exists or __if_not_exists keyword.
This represents clause 'firstprivate' in the '#pragma omp ...' directives.
QualType getComputationLHSType() const
SourceLocation getProcBindKindKwLoc() const
Returns location of clause kind.
SourceRange getSourceRange() const LLVM_READONLY
unsigned getNumClauses() const
Get number of clauses.
NestedNameSpecifierLoc getQualifierLoc() const
Gets the nested name specifier.
NestedNameSpecifierLoc getQualifierLoc() const
If the name was qualified, retrieves the nested-name-specifier that precedes the name, with source-location information.
SourceLocation getLParenLoc() const
SourceLocation getSemiLoc() const
An ObjCPropertyRefExpr record.
APFloatSemantics getRawSemantics() const
SourceLocation getAtLoc() const
This represents '#pragma omp flush' directive.
An ObjCForCollectionStmt record.
helper_expr_const_range destination_exprs() const
SourceLocation getParameterPackLocation() const
Retrieve the location of the parameter pack name.
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.
This represents '#pragma omp parallel for simd' directive.
InitListExpr * getUpdater() const
This represents 'seq_cst' clause in the '#pragma omp atomic' directive.
SourceLocation getRightLoc() const
This represents 'untied' clause in the '#pragma omp ...' directive.
SourceLocation getLParenLoc() const
Returns the location of '('.
SourceLocation getLocStart() const
Returns starting location of directive kind.
QualType getComputationResultType() const
A MS-style AsmStmt record.
unsigned getNumSubExprs() const
LabelDecl * getLabel() const
void AddSourceLocation(SourceLocation Loc, RecordDataImpl &Record)
Emit a source location.
decls_iterator decls_begin() const
SourceLocation getOperatorLoc() const
SourceLocation getLParenLoc()
Get location of '('.
SourceLocation getAtLoc() const
A C++ dynamic_cast expression (C++ [expr.dynamic.cast]).
SourceLocation getGotoLoc() const
const StringLiteral * getAsmString() const
A reference to an overloaded function set, either an UnresolvedLookupExpr or an UnresolvedMemberExpr...
This captures a statement into a function. For example, the following pragma annotated compound state...
SourceLocation getRBracket() const
Expr * getNumForLoops() const
Return the number of associated for-loops.
unsigned getResultExprIndex() const
This represents '#pragma omp single' directive.
Encodes a location in the source. The SourceManager can decode this to get at the full include stack...
SourceLocation getLeaveLoc() const
helper_expr_const_range reduction_ops() const
Expr * getSourceExpr() const
SourceLocation getOperatorLoc() const
getOperatorLoc - Return the location of the operator.
This is a basic class for representing single OpenMP executable directive.
private_copies_range private_copies()
NestedNameSpecifierLoc getQualifierLoc() const
Retrieve the nested-name-specifier that qualifies this name, if any.
NonTypeTemplateParmDecl * getParameter() const
Represents a new-expression for memory allocation and constructor calls, e.g: "new CXXNewExpr(foo)"...
SourceLocation getOperatorLoc() const
Retrieve the location of the '.' or '->' operator.
Expr * getLowerBoundVariable() const
A call to a literal operator (C++11 [over.literal]) written as a user-defined literal (C++11 [lit...
Expr * getCondition() const
Returns condition.
helper_expr_const_range lhs_exprs() const
This represents 'schedule' clause in the '#pragma omp ...' directive.
Expr * getExpr()
Get 'expr' part of the associated expression/statement.
unsigned getCollapsedNumber() const
Get number of collapsed loops.
SourceLocation getKeywordLoc() const
SourceRange getSourceRange() const LLVM_READONLY
bool refersToEnclosingVariableOrCapture() const
Does this DeclRefExpr refer to an enclosing local or a captured variable?
SourceLocation getRParenLoc() const
CompoundStmt * getBlock() const
unsigned getNumTemplateArgs() const
Retrieve the number of template arguments provided as part of this template-id.
This represents clause 'shared' in the '#pragma omp ...' directives.
const Expr * getCond() const
TemplateArgument getArgumentPack() const
Retrieve the template argument pack containing the substituted template arguments.
SourceLocation getIdentLoc() const
A CXXFunctionalCastExpr record.
Expr * getSrcExpr() const
getSrcExpr - Return the Expr to be converted.
A FloatingLiteral record.
SourceLocation getTryLoc() const
TypeSourceInfo * getClassReceiverTypeInfo() const
Returns a type-source information of a class message send, or NULL if the message is not a class mess...
An ObjCEncodeExpr record.
SourceLocation getGenericLoc() const
SourceLocation getAtLoc() const
This represents '#pragma omp taskwait' directive.
bool isImplicitAccess() const
True if this is an implicit access, i.e. one in which the member being accessed was not written in th...
SourceLocation getStrTokenLoc(unsigned TokNum) const
An ImaginaryLiteral record.
This is a basic class for representing single OpenMP clause.
unsigned getIntegerLiteralAbbrev() const
SourceLocation getContinueLoc() const
QualType getBaseType() const
StringLiteral * getFunctionName()
SourceLocation getOperatorLoc() const
Retrieve the location of the cast operator keyword, e.g., static_cast.
VarDecl * getConditionVariable() const
Retrieve the variable declared in this "switch" statement, if any.
capture_iterator capture_end() const
Retrieve an iterator pointing past the end of the sequence of captures.
Stmt * getCapturedStmt()
Retrieve the statement being captured.
ParmVarDecl * getParameterPack() const
Get the parameter pack which this expression refers to.
This represents '#pragma omp target' directive.
Expr * getInputExpr(unsigned i)
SourceLocation getBegin() const
bool isTypeDependent() const
Expr * getUpperBoundVariable() const
SourceLocation getDependencyLoc() const
Get dependency type location.
bool isAllEnumCasesCovered() const
Expr * getV()
Get 'v' part of the associated expression/statement.
void AddDeclRef(const Decl *D, RecordDataImpl &Record)
Emit a reference to a declaration.
bool isArrow() const
Determine whether this member expression used the '->' operator; otherwise, it used the '...
StringRef getOutputConstraint(unsigned i) const
An expression trait intrinsic.
StringRef getClobber(unsigned i) const
TypeSourceInfo * getTypeOperandSourceInfo() const
Retrieve source information for the type operand.
SourceLocation getAtSynchronizedLoc() const
uint64_t getValue() const
This represents '#pragma omp ordered' directive.
const Expr * getBase() const
Expr * getArrayFiller()
If this initializer list initializes an array with more elements than there are initializers in the l...
const BlockDecl * getBlockDecl() const
bool isObjectReceiver() const
SourceLocation getForLoc() const
SourceLocation getRParenLoc() const
Representation of a Microsoft __if_exists or __if_not_exists statement with a dependent name...
const OffsetOfNode & getComponent(unsigned Idx) const
Expr * getPreCond() const
SourceLocation getExprLoc() const LLVM_READONLY
SourceLocation getNameLoc() const
SourceLocation getOperatorLoc() const
getOperatorLoc - Return the location of the operator.
A qualified reference to a name whose declaration cannot yet be resolved.
Expr * Value
The value of the dictionary element.
SourceLocation getRBracketLoc() const
Represents a C11 generic selection.
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...
SourceLocation getEllipsisLoc() const
Retrieve the location of the ellipsis that describes this pack expansion.
Represents a reference to a function parameter pack that has been substituted but not yet expanded...
void AddDeclarationNameLoc(const DeclarationNameLoc &DNLoc, DeclarationName Name, RecordDataImpl &Record)
Expr * getReplacement() const
SourceLocation getLocation() const
VarDecl * getConditionVariable() const
Retrieve the variable declared in this "if" statement, if any.
Expr * getCommon() const
getCommon - Return the common expression, written to the left of the condition. The opaque value will...
const Expr * getSubExpr() const
bool isImplicitProperty() const
void writeClause(OMPClause *C)
SourceLocation getLParenLoc() const
const Expr * getAssocExpr(unsigned i) const
An IntegerLiteral record.
helper_expr_const_range rhs_exprs() const
const Expr * getExpr() const
bool hadMultipleCandidates() const
Returns true if this expression refers to a function that was resolved from an overloaded set having ...
[C99 6.4.2.2] - A predefined identifier such as func.
unsigned getByteLength() const
A CXXBoolLiteralExpr record.
Represents a delete expression for memory deallocation and destructor calls, e.g. "delete[] pArray"...
SourceLocation getStarLoc() const
TypeSourceInfo * getTypeOperandSourceInfo() const
Retrieve source information for the type operand.
SourceLocation getOpLoc() const
const Stmt * getBody() const
An ExtVectorElementExpr record.
NestedNameSpecifierLoc getQualifierLoc() const
Retrieves the nested-name-specifier that qualifies the type name, with source-location information...
This represents '#pragma omp section' directive.
bool isThrownVariableInScope() const
Determines whether the variable thrown by this expression (if any!) is within the innermost try block...
NestedNameSpecifierLoc getQualifierLoc() const
If the member name was qualified, retrieves the nested-name-specifier that precedes the member name...
SourceLocation getLParenLoc() const
SourceLocation EllipsisLoc
The location of the ellipsis, if this is a pack expansion.
An ObjCIvarRefExpr record.
designators_iterator designators_end()
A C++ reinterpret_cast expression (C++ [expr.reinterpret.cast]).
This represents '#pragma omp simd' directive.
SourceLocation getTildeLoc() const
Retrieve the location of the '~'.
An ObjCAutoreleasePoolStmt record.
const Expr * getSynchExpr() const
unsigned getNumHandlers() const
A CharacterLiteral record.
Kind getKind() const
Determine what kind of offsetof node this is.
const StringLiteral * getOutputConstraintLiteral(unsigned i) const
Represents a C++11 pack expansion that produces a sequence of expressions.
An ObjCStringLiteral record.
unsigned getNumPlacementArgs() const
A CXXDynamicCastExpr record.
StringRef getBytes() const
SourceLocation getWhileLoc() const
This represents clause 'linear' in the '#pragma omp ...' directives.
DeclarationNameInfo getDirectiveName() const
Return name of the directive.
A CXXForRangeStmt record.
StringKind getKind() const
SourceLocation LAngleLoc
The source location of the left angle bracket ('<').
bool isTypeOperand() const
ObjCMethodDecl * getArrayWithObjectsMethod() const
Expr * getEnsureUpperBound() const
Expr * getUpdateExpr()
Get helper expression of the form 'OpaqueValueExpr(x) binop OpaqueValueExpr(expr)' or 'OpaqueValueExp...
bool usesGNUSyntax() const
Determines whether this designated initializer used the deprecated GNU syntax for designated initiali...
semantics_iterator semantics_begin()
const Expr * getRetValue() const
unsigned getNumArgs() const
SourceLocation getLocation() const
unsigned getNumArgs() const
unsigned getNumConcatenated() const
This represents '#pragma omp atomic' directive.
SourceLocation getParameterPackLocation() const
Get the location of the parameter pack.
Expr * getBaseExpr() const
CXXRecordDecl * getNamingClass() const
An ObjCAtFinallyStmt record.
Expr * getCalcLastIteration() const
ObjCMethodDecl * getDictWithObjectsMethod() const
llvm::APFloat getValue() const
FieldDecl * getField() const
For a field offsetof node, returns the field.
const Stmt * getThen() const
ArrayRef< Expr * > counters()
Represents a C++11 noexcept expression (C++ [expr.unary.noexcept]).
SourceLocation getMemberLoc() const
bool hasQualifier() const
Determine whether this declaration reference was preceded by a C++ nested-name-specifier, e.g., N::foo.
SourceLocation getAtCatchLoc() const
SourceLocation getRParenLoc() const
getRParenLoc - Return the location of final right parenthesis.
SourceLocation getRParenLoc() const
Expr * getSafelen() const
Return safe iteration space distance.
SourceLocation getLeftLoc() const
Expr * getBase() const
Retrieve the base object of this member expressions, e.g., the x in x.m.
SourceLocation getOperatorLoc() const
Retrieve the location of the '->' or '.' operator.
FunctionDecl * getOperatorNew() const
ArraySubscriptExpr - [C99 6.5.2.1] Array Subscripting.
DeclStmt * getBeginEndStmt()
const Stmt * getSubStmt() const
Represents Objective-C's collection statement.
OpaqueValueExpr * getOpaqueValue() const
getOpaqueValue - Return the opaque value placeholder.
An ObjCAtSynchronizedStmt record.
SourceLocation getBridgeKeywordLoc() const
The location of the bridge keyword.
ArrayRef< Expr * > inits()
SourceLocation getLParenLoc() const
Returns the location of '('.
SourceLocation getBuiltinLoc() const
SourceLocation getAtTryLoc() const
Retrieve the location of the @ in the @try.
SourceLocation getLParenLoc() const
Returns the location of '('.
A SizefAlignOfExpr record.
Represents a call to a CUDA kernel function.
TypeSourceInfo * getWrittenTypeInfo() const
A CXXMemberCallExpr record.
Expr * getArg(unsigned Arg)
Return the specified argument.
CXXConstructorDecl * getConstructor() const
Expr * getExprOperand() const
Represents Objective-C's @finally statement.
const Expr * getSubExpr() const
SourceLocation getRParenLoc() const
Retrieve the location of the right parentheses (')') that follows the argument list.
QualType getSuperReceiverType() const
SourceLocation getRParenLoc() const
SourceLocation getBuiltinLoc() const
getBuiltinLoc - Return the location of the __builtin_convertvector token.
Expr * getKeyExpr() const
unsigned getNumArgs() const
Return the number of actual arguments in this message, not counting the receiver. ...
LabelDecl * getLabel() const
SourceLocation getAccessorLoc() const
Represents a base class of a C++ class.
This represents 'write' clause in the '#pragma omp atomic' directive.
ObjCPropertyDecl * getExplicitProperty() const
unsigned getNumCatchStmts() const
Retrieve the number of @catch statements in this try-catch-finally block.
const Expr * getInitializer() const
SourceRange getDirectInitRange() const
SourceLocation getRParenLoc() const
ObjCIvarRefExpr - A reference to an ObjC instance variable.
SourceLocation getForLoc() const
SourceLocation getLocation() const
DeclStmt * getRangeStmt()
A ConvertVectorExpr record.
bool hasAssociatedStmt() const
Returns true if directive has associated statement.
Expr * getFalseExpr() const
getFalseExpr - Return the subexpression which will be evaluated if the condnition evaluates to false;...
Describes an explicit type conversion that uses functional notion but could not be resolved because o...
ArrayRef< const Attr * > getAttrs() const
A use of a default initializer in a constructor or in aggregate initialization.
SourceLocation getColonLoc() const
SourceLocation getAttrLoc() const
SourceLocation getLParenLoc() const
Returns the location of '('.
helper_expr_const_range destination_exprs() const
Defines the C++ Decl subclasses, other than those for templates (found in DeclTemplate.h) and friends (in DeclFriend.h).
const StringLiteral * getInputConstraintLiteral(unsigned i) const
ASTStmtWriter(ASTWriter &Writer, ASTWriter::RecordData &Record)
bool isArrayFormAsWritten() const
GNU array range designator.
OverloadedOperatorKind getOperator() const
Returns the kind of overloaded operator that this expression refers to.
Expr * getNextLowerBound() const
SourceLocation getFinallyLoc() const
const Expr * getSubExpr() const
void AddStmt(Stmt *S)
Add the given statement or expression to the queue of statements to emit.
A GCC-style AsmStmt record.
SourceLocation getBuiltinLoc() const
SourceLocation getRParenLoc() const
Retrieve the location of the closing parenthesis.
This represents 'nowait' clause in the '#pragma omp ...' directive.
void FlushStmts()
Flush all of the statements and expressions that have been added to the queue via AddStmt()...
SourceLocation getRParenLoc() const
SourceLocation getBreakLoc() const
SourceLocation getBuiltinLoc() const
Represents an explicit C++ type conversion that uses "functional" notation (C++ [expr.type.conv]).
bool hasQualifier() const
Determines whether this member expression actually had a C++ nested-name-specifier prior to the name ...
An ObjCAtCatchStmt record.
bool doesUsualArrayDeleteWantSize() const
Field designator where the field has been resolved to a declaration.
const Expr * getCond() const
CapturedRegionKind getCapturedRegionKind() const
Retrieve the captured region kind.
SourceLocation getElseLoc() const
TypeSourceInfo * getQueriedTypeSourceInfo() const
helper_expr_const_range assignment_ops() const
CompoundStmt * getTryBlock()
Writes an AST file containing the contents of a translation unit.
Represents Objective-C's @try ... @catch ... @finally statement.
const Expr * getThrowExpr() const
bool hasTemplateKWAndArgsInfo() const
SourceLocation getLocation() const
SourceLocation getTemplateKeywordLoc() const
Get the source location of the template keyword.
Expr * getPattern()
Retrieve the pattern of the pack expansion.
Expr * getHelperChunkSize()
Get helper chunk size.
bool isIfExists() const
Determine whether this is an __if_exists statement.
An ObjCMessageExpr record.
SourceLocation getRBracLoc() const
SourceLocation getColonLoc() const
void ClearSwitchCaseIDs()
Abstract class common to all of the C++ "named"/"keyword" casts.
bool isStdInitListInitialization() const
Whether this constructor call was written as list-initialization, but was interpreted as forming a st...
This represents '#pragma omp sections' directive.
const Stmt * getTryBody() const
Retrieve the @try body.
A CompoundAssignOperator record.
VarDecl * getExceptionDecl() const
A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].
ExprValueKind getValueKind() const
getValueKind - The value kind that this expression produces.
Expr * getLastIteration() const
Expr * getChunkSize()
Get chunk size.
const Expr * getInit(unsigned Init) const
const Expr * getSubExpr() const
FieldDecl * getInitializedFieldInUnion()
If this initializes a union, specifies which field in the union to initialize.
TypeSourceInfo * getAllocatedTypeSourceInfo() const
DeclStmt * getLoopVarStmt()
unsigned getNumClobbers() const
Expr * getTrueExpr() const
getTrueExpr - Return the subexpression which will be evaluated if the condition evaluates to true; th...
SourceLocation getRParenLoc() const
A trivial tuple used to represent a source range.
helper_expr_const_range destination_exprs() const
This represents '#pragma omp taskyield' directive.
SourceLocation getRParenLoc() const
A boolean literal, per ([C++ lex.bool] Boolean literals).
CompoundStmt * getTryBlock() const
This represents '#pragma omp parallel sections' directive.
SourceRange getSourceRange() const LLVM_READONLY
Retrieve the source range that covers this offsetof node.
SourceLocation getStartLoc() const
const CallExpr * getConfig() const
SourceLocation getLocation() const
SourceLocation getLocEnd() const
Returns ending location of directive.
bool isTypeOperand() const
The receiver is a superclass.
Stmt * getAssociatedStmt() const
Returns statement associated with the directive.
SourceLocation getExceptLoc() const
SourceLocation getCatchLoc() const
ReceiverKind getReceiverKind() const
Determine the kind of receiver that this message is being sent to.
Represents Objective-C's @autoreleasepool Statement.
bool isArrow() const
Determine whether this member expression used the '->' operator; otherwise, it used the '...
unsigned varlist_size() const
StmtCode
Record codes for each kind of statement or expression.
This class handles loading and caching of source files into memory.
Represents an implicitly-generated value initialization of an object of a given type.
ObjCMethodDecl * getImplicitPropertySetter() const
unsigned getNumElements() const
A GenericSelectionExpr record.
SourceLocation getRParenLoc() const
SourceLocation getRParenLoc() const
helper_expr_const_range assignment_ops() const
SourceLocation getColonLoc() const
Expr * getStrideVariable() const
void AddAPFloat(const llvm::APFloat &Value, RecordDataImpl &Record)
Emit a floating-point value.
DeclAccessPair getFoundDecl() const
Retrieves the declaration found by lookup.
bool hasUnresolvedUsing() const
Determine whether the lookup results contain an unresolved using declaration.
TypeSourceInfo * getArgumentTypeInfo() const
helper_expr_const_range source_exprs() const