19OpenACCComputeConstruct::CreateEmpty(
const ASTContext &
C,
unsigned NumClauses) {
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) {
59 "Associated Loop not a for loop?");
61 llvm::uninitialized_copy(Clauses, getTrailingObjects());
67 unsigned NumClauses) {
69 C.Allocate(OpenACCLoopConstruct::totalSizeToAlloc<const OpenACCClause *>(
71 auto *Inst =
new (Mem) OpenACCLoopConstruct(NumClauses);
80 C.Allocate(OpenACCLoopConstruct::totalSizeToAlloc<const OpenACCClause *>(
82 auto *Inst =
new (Mem)
83 OpenACCLoopConstruct(ParentKind, BeginLoc, DirLoc, EndLoc, Clauses,
Loop);
89 unsigned NumClauses) {
90 void *Mem =
C.Allocate(
91 OpenACCCombinedConstruct::totalSizeToAlloc<const OpenACCClause *>(
93 auto *Inst =
new (Mem) OpenACCCombinedConstruct(NumClauses);
101 void *Mem =
C.Allocate(
102 OpenACCCombinedConstruct::totalSizeToAlloc<const OpenACCClause *>(
104 auto *Inst =
new (Mem)
105 OpenACCCombinedConstruct(DK, BeginLoc, DirLoc, EndLoc, Clauses,
Loop);
110 unsigned NumClauses) {
112 C.Allocate(OpenACCDataConstruct::totalSizeToAlloc<const OpenACCClause *>(
114 auto *Inst =
new (Mem) OpenACCDataConstruct(NumClauses);
122 Stmt *StructuredBlock) {
124 C.Allocate(OpenACCDataConstruct::totalSizeToAlloc<const OpenACCClause *>(
126 auto *Inst =
new (Mem)
127 OpenACCDataConstruct(Start, DirectiveLoc, End, Clauses, StructuredBlock);
133 unsigned NumClauses) {
134 void *Mem =
C.Allocate(
135 OpenACCEnterDataConstruct::totalSizeToAlloc<const OpenACCClause *>(
137 auto *Inst =
new (Mem) OpenACCEnterDataConstruct(NumClauses);
144 void *Mem =
C.Allocate(
145 OpenACCEnterDataConstruct::totalSizeToAlloc<const OpenACCClause *>(
148 new (Mem) OpenACCEnterDataConstruct(Start, DirectiveLoc, End, Clauses);
154 unsigned NumClauses) {
155 void *Mem =
C.Allocate(
156 OpenACCExitDataConstruct::totalSizeToAlloc<const OpenACCClause *>(
158 auto *Inst =
new (Mem) OpenACCExitDataConstruct(NumClauses);
165 void *Mem =
C.Allocate(
166 OpenACCExitDataConstruct::totalSizeToAlloc<const OpenACCClause *>(
169 new (Mem) OpenACCExitDataConstruct(Start, DirectiveLoc, End, Clauses);
175 unsigned NumClauses) {
176 void *Mem =
C.Allocate(
177 OpenACCHostDataConstruct::totalSizeToAlloc<const OpenACCClause *>(
179 auto *Inst =
new (Mem) OpenACCHostDataConstruct(NumClauses);
186 Stmt *StructuredBlock) {
187 void *Mem =
C.Allocate(
188 OpenACCHostDataConstruct::totalSizeToAlloc<const OpenACCClause *>(
190 auto *Inst =
new (Mem) OpenACCHostDataConstruct(Start, DirectiveLoc, End,
191 Clauses, StructuredBlock);
197 unsigned NumClauses) {
198 void *Mem =
C.Allocate(
199 OpenACCWaitConstruct::totalSizeToAlloc<Expr *, OpenACCClause *>(
200 NumExprs, NumClauses));
202 auto *Inst =
new (Mem) OpenACCWaitConstruct(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)
219 OpenACCWaitConstruct(Start, DirectiveLoc, LParenLoc, DevNumExpr,
220 QueuesLoc, QueueIdExprs, RParenLoc, End, Clauses);
224 unsigned NumClauses) {
226 C.Allocate(OpenACCInitConstruct::totalSizeToAlloc<const OpenACCClause *>(
228 auto *Inst =
new (Mem) OpenACCInitConstruct(NumClauses);
237 C.Allocate(OpenACCInitConstruct::totalSizeToAlloc<const OpenACCClause *>(
240 new (Mem) OpenACCInitConstruct(Start, DirectiveLoc, End, Clauses);
245 unsigned NumClauses) {
246 void *Mem =
C.Allocate(
247 OpenACCShutdownConstruct::totalSizeToAlloc<const OpenACCClause *>(
249 auto *Inst =
new (Mem) OpenACCShutdownConstruct(NumClauses);
256 void *Mem =
C.Allocate(
257 OpenACCShutdownConstruct::totalSizeToAlloc<const OpenACCClause *>(
260 new (Mem) OpenACCShutdownConstruct(Start, DirectiveLoc, End, Clauses);
265 unsigned NumClauses) {
266 void *Mem =
C.Allocate(
267 OpenACCSetConstruct::totalSizeToAlloc<const OpenACCClause *>(NumClauses));
268 auto *Inst =
new (Mem) OpenACCSetConstruct(NumClauses);
277 C.Allocate(OpenACCSetConstruct::totalSizeToAlloc<const OpenACCClause *>(
279 auto *Inst =
new (Mem) OpenACCSetConstruct(Start, DirectiveLoc, End, Clauses);
285 void *Mem =
C.Allocate(
286 OpenACCUpdateConstruct::totalSizeToAlloc<const OpenACCClause *>(
288 auto *Inst =
new (Mem) OpenACCUpdateConstruct(NumClauses);
296 void *Mem =
C.Allocate(
297 OpenACCUpdateConstruct::totalSizeToAlloc<const OpenACCClause *>(
300 new (Mem) OpenACCUpdateConstruct(Start, DirectiveLoc, End, Clauses);
306 void *Mem =
C.Allocate(
307 OpenACCAtomicConstruct::totalSizeToAlloc<const OpenACCClause *>(
309 auto *Inst =
new (Mem) OpenACCAtomicConstruct(NumClauses);
317 void *Mem =
C.Allocate(
318 OpenACCAtomicConstruct::totalSizeToAlloc<const OpenACCClause *>(
320 auto *Inst =
new (Mem) OpenACCAtomicConstruct(Start, DirectiveLoc, AtKind,
321 End, Clauses, AssociatedStmt);
328 C.Allocate(OpenACCCacheConstruct::totalSizeToAlloc<Expr *>(NumVars));
329 auto *Inst =
new (Mem) OpenACCCacheConstruct(NumVars);
337 void *Mem =
C.Allocate(
338 OpenACCCacheConstruct::totalSizeToAlloc<Expr *>(VarList.size()));
339 auto *Inst =
new (Mem) OpenACCCacheConstruct(
340 Start, DirectiveLoc, LParenLoc, ReadOnlyLoc, VarList, RParenLoc, End);
Defines the clang::ASTContext interface.
This file defines OpenACC AST classes for statement-level contructs.
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)
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)
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)
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.
Encodes a location in the source.
Stmt - This represents one statement.
The JSON file list parser is used to communicate input to InstallAPI.
bool isa(CodeGen::Address addr)
nullptr
This class represents a compute construct, representing a 'Kind' of ‘parallel’, 'serial',...
OpenACCComputeConstruct(OpenACCDirectiveKind K, SourceLocation Start, SourceLocation DirectiveLoc, SourceLocation End, ArrayRef< const OpenACCClause * > Clauses, Stmt *StructuredBlock)
setClauseList(getTrailingObjects(NumClauses))