clang: lib/AST/StmtOpenACC.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

16using namespace clang;

17

20 void *Mem = C.Allocate(

21 OpenACCComputeConstruct::totalSizeToAlloc<const OpenACCClause *>(

22 NumClauses));

24 return Inst;

25}

26

31 void *Mem = C.Allocate(

32 OpenACCComputeConstruct::totalSizeToAlloc<const OpenACCClause *>(

33 Clauses.size()));

35 Clauses, StructuredBlock);

36 return Inst;

37}

38

39OpenACCLoopConstruct::OpenACCLoopConstruct(unsigned NumClauses)

43 nullptr) {

44 std::uninitialized_value_construct(

45 getTrailingObjects<const OpenACCClause *>(),

46 getTrailingObjects<const OpenACCClause *>() + NumClauses);

48 MutableArrayRef(getTrailingObjects<const OpenACCClause *>(), NumClauses));

49}

50

51OpenACCLoopConstruct::OpenACCLoopConstruct(

58 ParentComputeConstructKind(ParentKind) {

59

60

61 assert((Loop == nullptr || isa<ForStmt, CXXForRangeStmt>(Loop)) &&

62 "Associated Loop not a for loop?");

63

64 std::uninitialized_copy(Clauses.begin(), Clauses.end(),

65 getTrailingObjects<const OpenACCClause *>());

66

68 Clauses.size()));

69}

70

72 unsigned NumClauses) {

73 void *Mem =

74 C.Allocate(OpenACCLoopConstruct::totalSizeToAlloc<const OpenACCClause *>(

75 NumClauses));

77 return Inst;

78}

79

84 void *Mem =

85 C.Allocate(OpenACCLoopConstruct::totalSizeToAlloc<const OpenACCClause *>(

86 Clauses.size()));

87 auto *Inst = new (Mem)

89 return Inst;

90}

91

94 unsigned NumClauses) {

95 void *Mem = C.Allocate(

96 OpenACCCombinedConstruct::totalSizeToAlloc<const OpenACCClause *>(

97 NumClauses));

99 return Inst;

100}

101

106 void *Mem = C.Allocate(

107 OpenACCCombinedConstruct::totalSizeToAlloc<const OpenACCClause *>(

108 Clauses.size()));

109 auto *Inst = new (Mem)

111 return Inst;

112}

113

115 unsigned NumClauses) {

116 void *Mem =

117 C.Allocate(OpenACCDataConstruct::totalSizeToAlloc<const OpenACCClause *>(

118 NumClauses));

120 return Inst;

121}

122

127 Stmt *StructuredBlock) {

128 void *Mem =

129 C.Allocate(OpenACCDataConstruct::totalSizeToAlloc<const OpenACCClause *>(

130 Clauses.size()));

131 auto *Inst = new (Mem)

133 return Inst;

134}

135

138 unsigned NumClauses) {

139 void *Mem = C.Allocate(

140 OpenACCEnterDataConstruct::totalSizeToAlloc<const OpenACCClause *>(

141 NumClauses));

143 return Inst;

144}

145

149 void *Mem = C.Allocate(

150 OpenACCEnterDataConstruct::totalSizeToAlloc<const OpenACCClause *>(

151 Clauses.size()));

152 auto *Inst =

154 return Inst;

155}

156

159 unsigned NumClauses) {

160 void *Mem = C.Allocate(

161 OpenACCExitDataConstruct::totalSizeToAlloc<const OpenACCClause *>(

162 NumClauses));

164 return Inst;

165}

166

170 void *Mem = C.Allocate(

171 OpenACCExitDataConstruct::totalSizeToAlloc<const OpenACCClause *>(

172 Clauses.size()));

173 auto *Inst =

175 return Inst;

176}

177

180 unsigned NumClauses) {

181 void *Mem = C.Allocate(

182 OpenACCHostDataConstruct::totalSizeToAlloc<const OpenACCClause *>(

183 NumClauses));

185 return Inst;

186}

187

191 Stmt *StructuredBlock) {

192 void *Mem = C.Allocate(

193 OpenACCHostDataConstruct::totalSizeToAlloc<const OpenACCClause *>(

194 Clauses.size()));

196 Clauses, StructuredBlock);

197 return Inst;

198}

199

201 unsigned NumExprs,

202 unsigned NumClauses) {

203 void *Mem = C.Allocate(

204 OpenACCWaitConstruct::totalSizeToAlloc<Expr *, OpenACCClause *>(

205 NumExprs, NumClauses));

206

208 return Inst;

209}

210

216

217 assert(llvm::all_of(QueueIdExprs, [](Expr *E) { return E != nullptr; }));

218

219 void *Mem = C.Allocate(

220 OpenACCWaitConstruct::totalSizeToAlloc<Expr *, OpenACCClause *>(

221 QueueIdExprs.size() + 1, Clauses.size()));

222

223 auto *Inst = new (Mem)

225 QueuesLoc, QueueIdExprs, RParenLoc, End, Clauses);

226 return Inst;

227}

229 unsigned NumClauses) {

230 void *Mem =

231 C.Allocate(OpenACCInitConstruct::totalSizeToAlloc<const OpenACCClause *>(

232 NumClauses));

234 return Inst;

235}

236

241 void *Mem =

242 C.Allocate(OpenACCInitConstruct::totalSizeToAlloc<const OpenACCClause *>(

243 Clauses.size()));

244 auto *Inst =

246 return Inst;

247}

250 unsigned NumClauses) {

251 void *Mem = C.Allocate(

252 OpenACCShutdownConstruct::totalSizeToAlloc<const OpenACCClause *>(

253 NumClauses));

255 return Inst;

256}

257

261 void *Mem = C.Allocate(

262 OpenACCShutdownConstruct::totalSizeToAlloc<const OpenACCClause *>(

263 Clauses.size()));

264 auto *Inst =

266 return Inst;

267}

268

270 unsigned NumClauses) {

271 void *Mem = C.Allocate(

272 OpenACCSetConstruct::totalSizeToAlloc<const OpenACCClause *>(NumClauses));

274 return Inst;

275}

276

281 void *Mem =

282 C.Allocate(OpenACCSetConstruct::totalSizeToAlloc<const OpenACCClause *>(

283 Clauses.size()));

284 auto *Inst = new (Mem) OpenACCSetConstruct(Start, DirectiveLoc, End, Clauses);

285 return Inst;

286}

287

290 void *Mem = C.Allocate(

291 OpenACCUpdateConstruct::totalSizeToAlloc<const OpenACCClause *>(

292 NumClauses));

294 return Inst;

295}

296

301 void *Mem = C.Allocate(

302 OpenACCUpdateConstruct::totalSizeToAlloc<const OpenACCClause *>(

303 Clauses.size()));

304 auto *Inst =

306 return Inst;

307}

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 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.