20 void *Mem =
C.Allocate(
21 OpenACCComputeConstruct::totalSizeToAlloc<const OpenACCClause *>(
31 void *Mem =
C.Allocate(
32 OpenACCComputeConstruct::totalSizeToAlloc<const OpenACCClause *>(
35 Clauses, StructuredBlock);
39OpenACCLoopConstruct::OpenACCLoopConstruct(
unsigned NumClauses)
44 std::uninitialized_value_construct_n(getTrailingObjects(), NumClauses);
48OpenACCLoopConstruct::OpenACCLoopConstruct(
55 ParentComputeConstructKind(ParentKind) {
58 assert((
Loop ==
nullptr || isa<ForStmt, CXXForRangeStmt>(
Loop)) &&
59 "Associated Loop not a for loop?");
61 llvm::uninitialized_copy(Clauses, getTrailingObjects());
67 unsigned NumClauses) {
69 C.Allocate(OpenACCLoopConstruct::totalSizeToAlloc<const OpenACCClause *>(
80 C.Allocate(OpenACCLoopConstruct::totalSizeToAlloc<const OpenACCClause *>(
82 auto *Inst =
new (Mem)
89 unsigned NumClauses) {
90 void *Mem =
C.Allocate(
91 OpenACCCombinedConstruct::totalSizeToAlloc<const OpenACCClause *>(
101 void *Mem =
C.Allocate(
102 OpenACCCombinedConstruct::totalSizeToAlloc<const OpenACCClause *>(
104 auto *Inst =
new (Mem)
110 unsigned NumClauses) {
112 C.Allocate(OpenACCDataConstruct::totalSizeToAlloc<const OpenACCClause *>(
122 Stmt *StructuredBlock) {
124 C.Allocate(OpenACCDataConstruct::totalSizeToAlloc<const OpenACCClause *>(
126 auto *Inst =
new (Mem)
133 unsigned NumClauses) {
134 void *Mem =
C.Allocate(
135 OpenACCEnterDataConstruct::totalSizeToAlloc<const OpenACCClause *>(
144 void *Mem =
C.Allocate(
145 OpenACCEnterDataConstruct::totalSizeToAlloc<const OpenACCClause *>(
154 unsigned NumClauses) {
155 void *Mem =
C.Allocate(
156 OpenACCExitDataConstruct::totalSizeToAlloc<const OpenACCClause *>(
165 void *Mem =
C.Allocate(
166 OpenACCExitDataConstruct::totalSizeToAlloc<const OpenACCClause *>(
175 unsigned NumClauses) {
176 void *Mem =
C.Allocate(
177 OpenACCHostDataConstruct::totalSizeToAlloc<const OpenACCClause *>(
186 Stmt *StructuredBlock) {
187 void *Mem =
C.Allocate(
188 OpenACCHostDataConstruct::totalSizeToAlloc<const OpenACCClause *>(
191 Clauses, StructuredBlock);
197 unsigned NumClauses) {
198 void *Mem =
C.Allocate(
199 OpenACCWaitConstruct::totalSizeToAlloc<Expr *, OpenACCClause *>(
200 NumExprs, NumClauses));
212 assert(!llvm::is_contained(QueueIdExprs,
nullptr));
214 void *Mem =
C.Allocate(
215 OpenACCWaitConstruct::totalSizeToAlloc<Expr *, OpenACCClause *>(
216 QueueIdExprs.size() + 1, Clauses.size()));
218 auto *Inst =
new (Mem)
220 QueuesLoc, QueueIdExprs, RParenLoc, End, Clauses);
224 unsigned NumClauses) {
226 C.Allocate(OpenACCInitConstruct::totalSizeToAlloc<const OpenACCClause *>(
237 C.Allocate(OpenACCInitConstruct::totalSizeToAlloc<const OpenACCClause *>(
245 unsigned NumClauses) {
246 void *Mem =
C.Allocate(
247 OpenACCShutdownConstruct::totalSizeToAlloc<const OpenACCClause *>(
256 void *Mem =
C.Allocate(
257 OpenACCShutdownConstruct::totalSizeToAlloc<const OpenACCClause *>(
265 unsigned NumClauses) {
266 void *Mem =
C.Allocate(
267 OpenACCSetConstruct::totalSizeToAlloc<const OpenACCClause *>(NumClauses));
277 C.Allocate(OpenACCSetConstruct::totalSizeToAlloc<const OpenACCClause *>(
285 void *Mem =
C.Allocate(
286 OpenACCUpdateConstruct::totalSizeToAlloc<const OpenACCClause *>(
296 void *Mem =
C.Allocate(
297 OpenACCUpdateConstruct::totalSizeToAlloc<const OpenACCClause *>(
306 void *Mem =
C.Allocate(
307 OpenACCAtomicConstruct::totalSizeToAlloc<const OpenACCClause *>(
317 void *Mem =
C.Allocate(
318 OpenACCAtomicConstruct::totalSizeToAlloc<const OpenACCClause *>(
321 End, Clauses, AssociatedStmt);
328 C.Allocate(OpenACCCacheConstruct::totalSizeToAlloc<Expr *>(NumVars));
337 void *Mem =
C.Allocate(
338 OpenACCCacheConstruct::totalSizeToAlloc<Expr *>(VarList.size()));
340 Start, DirectiveLoc, LParenLoc, ReadOnlyLoc, VarList, RParenLoc, End);
Defines the clang::ASTContext interface.
This file defines OpenACC AST classes for statement-level contructs.
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.
static OpenACCAtomicConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
static OpenACCAtomicConstruct * Create(const ASTContext &C, SourceLocation Start, SourceLocation DirectiveLoc, OpenACCAtomicKind AtKind, SourceLocation End, ArrayRef< const OpenACCClause * > Clauses, Stmt *AssociatedStmt)
static OpenACCCacheConstruct * CreateEmpty(const ASTContext &C, unsigned NumVars)
static OpenACCCacheConstruct * Create(const ASTContext &C, SourceLocation Start, SourceLocation DirectiveLoc, SourceLocation LParenLoc, SourceLocation ReadOnlyLoc, ArrayRef< Expr * > VarList, SourceLocation RParenLoc, SourceLocation End)
static OpenACCCombinedConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
static OpenACCCombinedConstruct * Create(const ASTContext &C, OpenACCDirectiveKind K, SourceLocation Start, SourceLocation DirectiveLoc, SourceLocation End, ArrayRef< const OpenACCClause * > Clauses, Stmt *StructuredBlock)
This class represents a compute construct, representing a 'Kind' of ‘parallel’, 'serial',...
static OpenACCComputeConstruct * Create(const ASTContext &C, OpenACCDirectiveKind K, SourceLocation BeginLoc, SourceLocation DirectiveLoc, SourceLocation EndLoc, ArrayRef< const OpenACCClause * > Clauses, Stmt *StructuredBlock)
static OpenACCComputeConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
void setClauseList(MutableArrayRef< const OpenACCClause * > NewClauses)
static OpenACCDataConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
static OpenACCDataConstruct * Create(const ASTContext &C, SourceLocation Start, SourceLocation DirectiveLoc, SourceLocation End, ArrayRef< const OpenACCClause * > Clauses, Stmt *StructuredBlock)
static OpenACCEnterDataConstruct * Create(const ASTContext &C, SourceLocation Start, SourceLocation DirectiveLoc, SourceLocation End, ArrayRef< const OpenACCClause * > Clauses)
static OpenACCEnterDataConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
static OpenACCExitDataConstruct * Create(const ASTContext &C, SourceLocation Start, SourceLocation DirectiveLoc, SourceLocation End, ArrayRef< const OpenACCClause * > Clauses)
static OpenACCExitDataConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
static OpenACCHostDataConstruct * Create(const ASTContext &C, SourceLocation Start, SourceLocation DirectiveLoc, SourceLocation End, ArrayRef< const OpenACCClause * > Clauses, Stmt *StructuredBlock)
static OpenACCHostDataConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
static OpenACCInitConstruct * Create(const ASTContext &C, SourceLocation Start, SourceLocation DirectiveLoc, SourceLocation End, ArrayRef< const OpenACCClause * > Clauses)
static OpenACCInitConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
This class represents a 'loop' construct.
static OpenACCLoopConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
static OpenACCLoopConstruct * Create(const ASTContext &C, OpenACCDirectiveKind ParentKind, SourceLocation BeginLoc, SourceLocation DirLoc, SourceLocation EndLoc, ArrayRef< const OpenACCClause * > Clauses, Stmt *Loop)
static OpenACCSetConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
static OpenACCSetConstruct * Create(const ASTContext &C, SourceLocation Start, SourceLocation DirectiveLoc, SourceLocation End, ArrayRef< const OpenACCClause * > Clauses)
static OpenACCShutdownConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
static OpenACCShutdownConstruct * Create(const ASTContext &C, SourceLocation Start, SourceLocation DirectiveLoc, SourceLocation End, ArrayRef< const OpenACCClause * > Clauses)
static OpenACCUpdateConstruct * CreateEmpty(const ASTContext &C, unsigned NumClauses)
static OpenACCUpdateConstruct * Create(const ASTContext &C, SourceLocation Start, SourceLocation DirectiveLoc, SourceLocation End, ArrayRef< const OpenACCClause * > Clauses)
static OpenACCWaitConstruct * CreateEmpty(const ASTContext &C, unsigned NumExprs, unsigned NumClauses)
static OpenACCWaitConstruct * Create(const ASTContext &C, SourceLocation Start, SourceLocation DirectiveLoc, SourceLocation LParenLoc, Expr *DevNumExpr, SourceLocation QueuesLoc, ArrayRef< Expr * > QueueIdExprs, SourceLocation RParenLoc, SourceLocation End, ArrayRef< const OpenACCClause * > Clauses)
Encodes a location in the source.
Stmt - This represents one statement.
The JSON file list parser is used to communicate input to InstallAPI.