:
Stmt(SC),
Kind(K),
Range(Start, End), DirectiveLoc(DirectiveLoc) {}
51assert(Clauses.empty() &&
"Cannot change clause list");
59 returnS->getStmtClass() >= firstOpenACCConstructStmtConstant &&
60S->getStmtClass() <= lastOpenACCConstructStmtConstant;
84 Stmt*AssociatedStmt =
nullptr;
92AssociatedStmt(AssocStmt) {}
108 return child_range(&AssociatedStmt, &AssociatedStmt + 1);
130 privatellvm::TrailingObjects<OpenACCComputeConstruct,
131const OpenACCClause *> {
135 friendTrailingObjects;
144std::uninitialized_value_construct(
145getTrailingObjects<const OpenACCClause *>(),
146getTrailingObjects<const OpenACCClause *>() + NumClauses);
154 Stmt*StructuredBlock)
156DirectiveLoc, End, StructuredBlock) {
158 "Only parallel, serial, and kernels constructs should be " 159 "represented by this type");
162std::uninitialized_copy(Clauses.begin(), Clauses.end(),
163getTrailingObjects<const OpenACCClause *>());
173 return T->getStmtClass() == OpenACCComputeConstructClass;
177 unsignedNumClauses);
193 privatellvm::TrailingObjects<OpenACCLoopConstruct,
194const OpenACCClause *> {
206 friendTrailingObjects;
216 return T->getStmtClass() == OpenACCLoopConstructClass;
220 unsignedNumClauses);
242 returnParentComputeConstructKind;
250 privatellvm::TrailingObjects<OpenACCCombinedConstruct,
251const OpenACCClause *> {
252 friendTrailingObjects;
258std::uninitialized_value_construct(
259getTrailingObjects<const OpenACCClause *>(),
260getTrailingObjects<const OpenACCClause *>() + NumClauses);
268 Stmt*StructuredBlock)
270DirectiveLoc, End, StructuredBlock) {
272 "Only parallel loop, serial loop, and kernels loop constructs " 273 "should be represented by this type");
275std::uninitialized_copy(Clauses.begin(), Clauses.end(),
276getTrailingObjects<const OpenACCClause *>());
284 return T->getStmtClass() == OpenACCCombinedConstructClass;
288 unsignedNumClauses);
303 privatellvm::TrailingObjects<OpenACCDataConstruct,
304const OpenACCClause *> {
305 friendTrailingObjects;
311std::uninitialized_value_construct(
312getTrailingObjects<const OpenACCClause *>(),
313getTrailingObjects<const OpenACCClause *>() + NumClauses);
321 Stmt*StructuredBlock)
324DirectiveLoc, End, StructuredBlock) {
325std::uninitialized_copy(Clauses.begin(), Clauses.end(),
326getTrailingObjects<const OpenACCClause *>());
334 return T->getStmtClass() == OpenACCDataConstructClass;
338 unsignedNumClauses);
343 Stmt*StructuredBlock);
352 privatellvm::TrailingObjects<OpenACCEnterDataConstruct,
353const OpenACCClause *> {
354 friendTrailingObjects;
359std::uninitialized_value_construct(
360getTrailingObjects<const OpenACCClause *>(),
361getTrailingObjects<const OpenACCClause *>() + NumClauses);
371std::uninitialized_copy(Clauses.begin(), Clauses.end(),
372getTrailingObjects<const OpenACCClause *>());
379 return T->getStmtClass() == OpenACCEnterDataConstructClass;
382 unsignedNumClauses);
390 privatellvm::TrailingObjects<OpenACCExitDataConstruct,
391const OpenACCClause *> {
392 friendTrailingObjects;
397std::uninitialized_value_construct(
398getTrailingObjects<const OpenACCClause *>(),
399getTrailingObjects<const OpenACCClause *>() + NumClauses);
409std::uninitialized_copy(Clauses.begin(), Clauses.end(),
410getTrailingObjects<const OpenACCClause *>());
417 return T->getStmtClass() == OpenACCExitDataConstructClass;
420 unsignedNumClauses);
429 privatellvm::TrailingObjects<OpenACCHostDataConstruct,
430const OpenACCClause *> {
431 friendTrailingObjects;
437std::uninitialized_value_construct(
438getTrailingObjects<const OpenACCClause *>(),
439getTrailingObjects<const OpenACCClause *>() + NumClauses);
446 Stmt*StructuredBlock)
449DirectiveLoc, End, StructuredBlock) {
450std::uninitialized_copy(Clauses.begin(), Clauses.end(),
451getTrailingObjects<const OpenACCClause *>());
459 return T->getStmtClass() == OpenACCHostDataConstructClass;
462 unsignedNumClauses);
466 Stmt*StructuredBlock);
477 privatellvm::TrailingObjects<OpenACCWaitConstruct, Expr *,
483 friendTrailingObjects;
494 unsignedNumExprs = 0;
501assert(NumExprs >= 1 &&
502 "NumExprs should always be >= 1 because the 'devnum' " 503 "expr is represented by a null if necessary");
504std::uninitialized_value_construct(getExprPtr(),
505getExprPtr() + NumExprs);
506std::uninitialized_value_construct(getTrailingObjects<OpenACCClause *>(),
507getTrailingObjects<OpenACCClause *>() +
510getTrailingObjects<OpenACCClause *>()),
522LParenLoc(LParenLoc), RParenLoc(RParenLoc), QueuesLoc(QueuesLoc),
523NumExprs(QueueIdExprs.size() + 1) {
524assert(NumExprs >= 1 &&
525 "NumExprs should always be >= 1 because the 'devnum' " 526 "expr is represented by a null if necessary");
528std::uninitialized_copy(&DevNumExpr, &DevNumExpr + 1,
530std::uninitialized_copy(QueueIdExprs.begin(), QueueIdExprs.end(),
533std::uninitialized_copy(
const_cast<OpenACCClause**
>(Clauses.begin()),
535getTrailingObjects<OpenACCClause *>());
537getTrailingObjects<OpenACCClause *>()),
541 size_tnumTrailingObjects(OverloadToken<Expr *>)
const{
returnNumExprs; }
542 size_tnumTrailingObjects(OverloadToken<const OpenACCClause *>)
const{
546Expr **getExprPtr()
const{
547 return const_cast<Expr**
>(getTrailingObjects<Expr *>());
560 return T->getStmtClass() == OpenACCWaitConstructClass;
581 returngetExprs().drop_front();
591 reinterpret_cast<Stmt*
const*
>(getExprPtr());
599 privatellvm::TrailingObjects<OpenACCInitConstruct,
600const OpenACCClause *> {
601 friendTrailingObjects;
606std::uninitialized_value_construct(
607getTrailingObjects<const OpenACCClause *>(),
608getTrailingObjects<const OpenACCClause *>() + NumClauses);
618std::uninitialized_copy(Clauses.begin(), Clauses.end(),
619getTrailingObjects<const OpenACCClause *>());
626 return T->getStmtClass() == OpenACCInitConstructClass;
629 unsignedNumClauses);
639 privatellvm::TrailingObjects<OpenACCShutdownConstruct,
640const OpenACCClause *> {
641 friendTrailingObjects;
646std::uninitialized_value_construct(
647getTrailingObjects<const OpenACCClause *>(),
648getTrailingObjects<const OpenACCClause *>() + NumClauses);
658std::uninitialized_copy(Clauses.begin(), Clauses.end(),
659getTrailingObjects<const OpenACCClause *>());
666 return T->getStmtClass() == OpenACCShutdownConstructClass;
669 unsignedNumClauses);
678 privatellvm::TrailingObjects<OpenACCSetConstruct,
679const OpenACCClause *> {
680 friendTrailingObjects;
685std::uninitialized_value_construct(
686getTrailingObjects<const OpenACCClause *>(),
687getTrailingObjects<const OpenACCClause *>() + NumClauses);
698std::uninitialized_copy(Clauses.begin(), Clauses.end(),
699getTrailingObjects<const OpenACCClause *>());
706 return T->getStmtClass() == OpenACCSetConstructClass;
709 unsignedNumClauses);
718 privatellvm::TrailingObjects<OpenACCUpdateConstruct,
719const OpenACCClause *> {
720 friendTrailingObjects;
725std::uninitialized_value_construct(
726getTrailingObjects<const OpenACCClause *>(),
727getTrailingObjects<const OpenACCClause *>() + NumClauses);
738std::uninitialized_copy(Clauses.begin(), Clauses.end(),
739getTrailingObjects<const OpenACCClause *>());
746 return T->getStmtClass() == OpenACCUpdateConstructClass;
749 unsignedNumClauses);
enum clang::sema::@1704::IndirectLocalPathEntry::EntryKind Kind
Defines some OpenACC-specific enums and functions.
Defines the clang::SourceLocation class and associated facilities.
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
This represents one expression.
This is a base class for any OpenACC statement-level constructs that have an associated statement.
void setAssociatedStmt(Stmt *S)
Stmt * getAssociatedStmt()
const_child_range children() const
const Stmt * getAssociatedStmt() const
OpenACCAssociatedStmtConstruct(StmtClass SC, OpenACCDirectiveKind K, SourceLocation Start, SourceLocation DirectiveLoc, SourceLocation End, Stmt *AssocStmt)
static bool classof(const Stmt *T)
This is the base type for all OpenACC Clauses.
static OpenACCCombinedConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
static bool classof(const Stmt *T)
const Stmt * getLoop() const
This class represents a compute construct, representing a 'Kind' of âparallelâ, 'serial',...
static OpenACCComputeConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
static bool classof(const Stmt *T)
Stmt * getStructuredBlock()
const Stmt * getStructuredBlock() const
This is the base class for an OpenACC statement-level construct, other construct types are expected t...
SourceLocation getEndLoc() const
SourceLocation getBeginLoc() const
OpenACCDirectiveKind getDirectiveKind() const
void setClauseList(MutableArrayRef< const OpenACCClause * > NewClauses)
ArrayRef< const OpenACCClause * > clauses() const
const_child_range children() const
SourceLocation getDirectiveLoc() const
static bool classof(const Stmt *S)
OpenACCConstructStmt(StmtClass SC, OpenACCDirectiveKind K, SourceLocation Start, SourceLocation DirectiveLoc, SourceLocation End)
const Stmt * getStructuredBlock() const
static OpenACCDataConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
static bool classof(const Stmt *T)
Stmt * getStructuredBlock()
static bool classof(const Stmt *T)
static OpenACCEnterDataConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
static bool classof(const Stmt *T)
static OpenACCExitDataConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
static OpenACCHostDataConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
Stmt * getStructuredBlock()
static bool classof(const Stmt *T)
const Stmt * getStructuredBlock() const
static bool classof(const Stmt *T)
static OpenACCInitConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
This class represents a 'loop' construct.
static OpenACCLoopConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
OpenACCDirectiveKind getParentComputeConstructKind() const
const Stmt * getLoop() const
bool isOrphanedLoopConstruct() const
OpenACC 3.3 2.9: An orphaned loop construct is a loop construct that is not lexically enclosed within...
static bool classof(const Stmt *T)
static OpenACCSetConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
static bool classof(const Stmt *T)
static OpenACCShutdownConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
static bool classof(const Stmt *T)
static bool classof(const Stmt *T)
static OpenACCUpdateConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
llvm::ArrayRef< Expr * > getQueueIdExprs()
static bool classof(const Stmt *T)
SourceLocation getRParenLoc() const
bool hasDevNumExpr() const
static OpenACCWaitConstruct * CreateEmpty(const ASTContext &C, unsigned NumExprs, unsigned NumClauses)
llvm::ArrayRef< Expr * > getQueueIdExprs() const
SourceLocation getQueuesLoc() const
const_child_range children() const
bool hasQueuesTag() const
SourceLocation getLParenLoc() const
Expr * getDevNumExpr() const
A class that does preorder or postorder depth-first traversal on the entire Clang AST and visits each...
Encodes a location in the source.
A trivial tuple used to represent a source range.
Stmt - This represents one statement.
StmtIterator child_iterator
Child Iterators: All subclasses must implement 'children' to permit easy iteration over the substatem...
llvm::iterator_range< child_iterator > child_range
llvm::iterator_range< const_child_iterator > const_child_range
The JSON file list parser is used to communicate input to InstallAPI.
bool isOpenACCComputeDirectiveKind(OpenACCDirectiveKind K)
bool isOpenACCCombinedDirectiveKind(OpenACCDirectiveKind K)
@ Create
'create' clause, allowed on Compute and Combined constructs, plus 'data', 'enter data',...
const FunctionProtoType * T
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4