clang: include/clang/Sema/SemaOpenMP.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14#ifndef LLVM_CLANG_SEMA_SEMAOPENMP_H

15#define LLVM_CLANG_SEMA_SEMAOPENMP_H

16

31#include "llvm/ADT/DenseMap.h"

32#include "llvm/Frontend/OpenMP/OMP.h.inc"

33#include "llvm/Frontend/OpenMP/OMPConstants.h"

34#include

35#include

36#include

37

39namespace sema {

40class FunctionScopeInfo;

41}

42

43class DeclContext;

44class DeclGroupRef;

45class ParsedAttr;

46class Scope;

47

49public:

51

54

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

74 unsigned DiagID,

76

77

78

79

80

81

82

83

84

85

86

87

88

89

91 unsigned DiagID,

93

94

95

96

97

101

102

103

106

107

109

110

112 return !OMPDeclareVariantScopes.empty();

113 }

114

117 bool StrictlyPositive = true,

118 bool SuppressExprDiags = false);

119

120

121

122

123

127

128

130

131

133

134

135

137

138

139

140

141

142

144 unsigned OpenMPCaptureLevel) const;

145

146

147

148

150 unsigned StopAt = 0);

151

152

153

154

155

157

160

161

162

164

165

166

168

169

170

171

173 unsigned CapLevel) const;

174

175

176

177

179

180

181

182

184 unsigned CaptureLevel) const;

185

186

187

188

189

191 unsigned CaptureLevel) const;

192

195

199

201

203

205

206

207

208

209

211

212

213

217

218

219

220

224

227

230

235

236

240 bool SkippedClauses);

241

242

244

245

247

248

250

251

254

257

258

261

264 ArrayRef<std::pair<QualType, SourceLocation>> ReductionTypes,

266

268

270

271

273

276

279

280

282

283

286

291 Decl *PrevDeclInScope = nullptr);

292

300

303 OMPDeclareTargetDeclAttr::MapTypeTy MT;

305 };

306

308

309

310 OMPDeclareTargetDeclAttr::DevTypeTy DT = OMPDeclareTargetDeclAttr::DT_Any;

311

312

314

315

317

318

320

323 };

324

325

327

328

330

331

332

333

334

336

337

338

340

341

342

346

347

349 OMPDeclareTargetDeclAttr::MapTypeTy MT,

350 DeclareTargetContextInfo &DTCI);

351

352

353 void

356

357

358

360

361

362

366

367

369

370

372 return !DeclareTargetNesting.empty();

373 }

374

376

377

379

380

382

383

384

386

387

388

389

391

392

393

394

395

396

397

403

404

405

406

407

408

409

410

415

416

417

418

419

420

424

425

426

431 llvm::SmallDenseMap<const ValueDecl *, const Expr *, 4>;

432

433

438

439

443

444

448

451

452

457

458

463

464

469

470

474

475

478

479

483

484

488

489

492

493

498

499

503

504

508

509

514

515

520

521

526

527

531

534

535

536

540 bool InExContext = true);

541

544

548

552

556

560

564

565

569

570

574

575

579

580

585

586

590 Stmt *AStmt);

591

592

596 Stmt *AStmt);

597

598

603

604

608

609

613

614

618

619

623

624

628

629

633

638

643

644

649

650

654

655

659

660

664

665

669

670

674

675

679

680

684

685

689

690

694

695

700

704 Stmt *AStmt);

705

706

710

711

715

716

720

721

725

726

731

732

736

737

741

742

746

747

751

752

757

758

762

763

767

768

772

773

777

781

782

786

787

791

792

793

797

798

801

802

805 bool IsDeclareSimd = false);

806

807

808

810 DeclGroupPtrTy DG, OMPDeclareSimdDeclAttr::BranchStateTy BS,

814

815

816

817

818

819

820

821

822

823

824

825

826

827 std::optional<std::pair<FunctionDecl *, Expr *>>

831

832

833

834

835

836

837

838

839

840

841

842

843

844

851

856

861

868

872

877

881

885

889

894

899

902

906

911

915 Expr *NumForLoops = nullptr);

916

922

928

932

936

942

946

952

958

965

971

975

982

988

994

997

1000

1003

1006

1009

1012

1015

1018

1021

1029

1030

1033

1036

1039

1042

1045

1048

1049

1054

1055

1059

1060

1065

1070

1075

1079

1082

1085

1088

1091

1092

1095

1096

1099

1100

1103

1104

1108

1109

1115

1116

1122

1123

1124

1128

1129

1137 int ExtraModifier = -1;

1138

1157 };

1158

1163

1168

1173

1183

1188

1193

1198

1203

1211

1218

1220 ArrayRef<Expr *> VarList, SourceLocation StartLoc,

1221 SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc,

1222 CXXScopeSpec &ReductionIdScopeSpec,

1223 const DeclarationNameInfo &ReductionId,

1224 ArrayRef<Expr *> UnresolvedReductions = {});

1225

1227 ArrayRef<Expr *> VarList, Expr *Step, SourceLocation StartLoc,

1229 SourceLocation LinLoc, SourceLocation ColonLoc,

1230 SourceLocation StepModifierLoc, SourceLocation EndLoc);

1231

1233 SourceLocation StartLoc,

1234 SourceLocation LParenLoc,

1235 SourceLocation ColonLoc,

1236 SourceLocation EndLoc);

1237

1239 SourceLocation StartLoc,

1240 SourceLocation LParenLoc,

1241 SourceLocation EndLoc);

1242

1244 SourceLocation StartLoc,

1245 SourceLocation LParenLoc,

1246 SourceLocation EndLoc);

1247

1249 SourceLocation StartLoc,

1250 SourceLocation LParenLoc,

1251 SourceLocation EndLoc);

1252

1254 SourceLocation LParenLoc,

1255 SourceLocation EndLoc);

1256

1258 Expr *DepModifier,

1259 ArrayRef<Expr *> VarList,

1260 SourceLocation StartLoc,

1261 SourceLocation LParenLoc,

1262 SourceLocation EndLoc);

1263

1265 Expr *Device, SourceLocation StartLoc,

1266 SourceLocation LParenLoc,

1267 SourceLocation ModifierLoc,

1268 SourceLocation EndLoc);

1269

1271 Expr *IteratorModifier, ArrayRef MapTypeModifiers,

1272 ArrayRef MapTypeModifiersLoc,

1273 CXXScopeSpec &MapperIdScopeSpec, DeclarationNameInfo &MapperId,

1275 SourceLocation MapLoc, SourceLocation ColonLoc, ArrayRef<Expr *> VarList,

1276 const OMPVarListLocTy &Locs, bool NoDiagnose = false,

1277 ArrayRef<Expr *> UnresolvedMappers = {});

1278

1280 SourceLocation StartLoc,

1281 SourceLocation LParenLoc,

1282 SourceLocation EndLoc);

1283

1285 SourceLocation StartLoc,

1286 SourceLocation LParenLoc,

1287 SourceLocation EndLoc);

1288

1290 SourceLocation LParenLoc,

1291 SourceLocation EndLoc);

1292

1295 SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation KindLoc,

1296 SourceLocation CommaLoc, SourceLocation EndLoc);

1297

1300 SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation MLoc,

1301 SourceLocation KindLoc, SourceLocation EndLoc);

1302

1303 OMPClause *

1305 ArrayRef MotionModifiersLoc,

1306 CXXScopeSpec &MapperIdScopeSpec,

1307 DeclarationNameInfo &MapperId, SourceLocation ColonLoc,

1308 ArrayRef<Expr *> VarList, const OMPVarListLocTy &Locs,

1309 ArrayRef<Expr *> UnresolvedMappers = {});

1310

1311 OMPClause *

1313 ArrayRef MotionModifiersLoc,

1314 CXXScopeSpec &MapperIdScopeSpec,

1315 DeclarationNameInfo &MapperId, SourceLocation ColonLoc,

1316 ArrayRef<Expr *> VarList, const OMPVarListLocTy &Locs,

1317 ArrayRef<Expr *> UnresolvedMappers = {});

1318

1320 const OMPVarListLocTy &Locs);

1321

1323 const OMPVarListLocTy &Locs);

1324

1326 const OMPVarListLocTy &Locs);

1327

1329 const OMPVarListLocTy &Locs);

1330

1332 SourceLocation StartLoc,

1333 SourceLocation LParenLoc,

1334 SourceLocation EndLoc);

1335

1336

1338

1340

1342

1344 };

1345

1350

1356

1362

1363

1367

1368

1374

1375

1380

1381

1384

1386 Expr *LowerBound,

1395

1396

1405 };

1406

1410

1412

1413private:

1414 void *VarDataSharingAttributesStack;

1415

1416

1418

1419

1420 void InitDataSharingAttributesStack();

1421 void DestroyDataSharingAttributesStack();

1422

1423

1424 unsigned getOpenMPNestingLevel() const;

1425

1426

1427 void adjustOpenMPTargetScopeIndex(unsigned &FunctionScopesIndex,

1428 unsigned Level) const;

1429

1430

1431

1432 int getNumberOfConstructScopes(unsigned Level) const;

1433

1434

1435 void pushOpenMPFunctionRegion();

1436

1437

1439

1440

1441

1442

1443

1444

1445

1446

1447

1448

1449

1450

1451

1452 bool checkTransformableLoopNest(

1456

1457

1458

1459 struct OMPDeclareVariantScope {

1460

1462

1463

1464 std::string NameSuffix;

1465

1467 };

1468

1469

1470 OMPTraitInfo *getOMPTraitInfoForSurroundingScope() {

1471 return OMPDeclareVariantScopes.empty() ? nullptr

1472 : OMPDeclareVariantScopes.back().TI;

1473 }

1474

1475

1476 SmallVector<OMPDeclareVariantScope, 4> OMPDeclareVariantScopes;

1477

1478

1479 SmallVector<OMPAssumeAttr *, 4> OMPAssumeScoped;

1480

1481

1482 SmallVector<OMPAssumeAttr *, 4> OMPAssumeGlobal;

1483};

1484

1485}

1486

1487#endif

Forward declaration of all AST node types.

enum clang::sema::@1727::IndirectLocalPathEntry::EntryKind Kind

Defines the clang::IdentifierInfo, clang::IdentifierTable, and clang::Selector interfaces.

Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified.

This file defines OpenMP AST classes for clauses.

Defines some OpenMP-specific enums and functions.

Defines the clang::SourceLocation class and associated facilities.

Defines various enumerations that describe declaration and type specifiers.

This file defines OpenMP AST classes for executable directives and clauses.

Represents a C++ nested-name-specifier or a global scope specifier.

DeclContext - This is used only as base class of specific decl types that can act as declaration cont...

Decl - This represents one declaration (or definition), e.g.

The name of a declaration.

Information about one declarator, including the parsed type information and the identifier.

This represents one expression.

Represents a member of a struct/union/class.

Represents a function declaration or definition.

One of these records is kept for each identifier that is lexed.

This represents a decl that may have a name.

This is a basic class for representing single OpenMP clause.

This represents '#pragma omp requires...' directive.

This represents '#pragma omp threadprivate ...' directive.

Helper data structure representing the traits in a match clause of an declare variant or metadirectiv...

Wrapper for void* pointer.

ParsedAttr - Represents a syntactic attribute.

Parser - This implements a parser for the C family of languages.

A (possibly-)qualified type.

Scope - A scope is a transient data structure that is used while parsing the program.

A generic diagnostic builder for errors which may or may not be deferred.

StmtResult ActOnOpenMPTargetParallelForDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp target parallel for' after parsing of the associated statement.

OMPClause * ActOnOpenMPNocontextClause(Expr *Condition, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'nocontext' clause.

OMPClause * ActOnOpenMPXDynCGroupMemClause(Expr *Size, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on a well-formed 'ompx_dyn_cgroup_mem' clause.

DeclGroupPtrTy ActOnOpenMPDeclareReductionDirectiveEnd(Scope *S, DeclGroupPtrTy DeclReductions, bool IsValid)

Called at the end of '#pragma omp declare reduction'.

bool isInOpenMPTaskUntiedContext() const

Return true if currently in OpenMP task with untied clause context.

OMPClause * ActOnOpenMPUntiedClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed 'untied' clause.

OMPClause * ActOnOpenMPSafelenClause(Expr *Length, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'safelen' clause.

OMPClause * ActOnOpenMPHoldsClause(Expr *E, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'holds' clause.

StmtResult ActOnOpenMPParallelMasterTaskLoopSimdDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp parallel master taskloop simd' after parsing of the associated sta...

OMPClause * ActOnOpenMPDefaultClause(llvm::omp::DefaultKind Kind, SourceLocation KindLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'default' clause.

StmtResult ActOnOpenMPParallelMasterDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp parallel master' after parsing of the associated statement.

StmtResult ActOnOpenMPDispatchDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp dispatch' after parsing of the.

OMPClause * ActOnOpenMPReadClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed 'read' clause.

OMPClause * ActOnOpenMPFilterClause(Expr *ThreadID, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'filter' clause.

void ActOnOpenMPDeclareReductionCombinerEnd(Decl *D, Expr *Combiner)

Finish current declare reduction construct initializer.

ExprResult ActOnOpenMPCall(ExprResult Call, Scope *Scope, SourceLocation LParenLoc, MultiExprArg ArgExprs, SourceLocation RParenLoc, Expr *ExecConfig)

Given the potential call expression Call, determine if there is a specialization via the OpenMP decla...

OMPClause * ActOnOpenMPFullClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-form 'full' clauses.

StmtResult ActOnOpenMPTargetEnterDataDirective(ArrayRef< OMPClause * > Clauses, SourceLocation StartLoc, SourceLocation EndLoc, Stmt *AStmt)

Called on well-formed '#pragma omp target enter data' after parsing of the associated statement.

StmtResult ActOnOpenMPTargetTeamsGenericLoopDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp target teams loop' after parsing of the associated statement.

OMPClause * ActOnOpenMPDetachClause(Expr *Evt, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'detach' clause.

OMPClause * ActOnOpenMPUseClause(Expr *InteropVar, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation VarLoc, SourceLocation EndLoc)

Called on well-formed 'use' clause.

OMPClause * ActOnOpenMPFailClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed 'fail' clause.

StmtResult ActOnOpenMPTargetTeamsDistributeParallelForSimdDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp target teams distribute parallel for simd' after parsing of the as...

StmtResult ActOnOpenMPAssumeDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Process an OpenMP assume directive.

void ActOnFinishedOpenMPDeclareTargetContext(DeclareTargetContextInfo &DTCI)

Called once a target context is completed, that can be when a '#pragma omp end declare target' was en...

OMPClause * ActOnOpenMPDirectivePresenceClause(OpenMPClauseKind CK, llvm::ArrayRef< OpenMPDirectiveKind > DKVec, SourceLocation Loc, SourceLocation LLoc, SourceLocation RLoc)

Called on well-formed 'absent' or 'contains' clauses.

void tryCaptureOpenMPLambdas(ValueDecl *V)

Function tries to capture lambda's captured variables in the OpenMP region before the original lambda...

OMPClause * ActOnOpenMPToClause(ArrayRef< OpenMPMotionModifierKind > MotionModifiers, ArrayRef< SourceLocation > MotionModifiersLoc, CXXScopeSpec &MapperIdScopeSpec, DeclarationNameInfo &MapperId, SourceLocation ColonLoc, ArrayRef< Expr * > VarList, const OMPVarListLocTy &Locs, ArrayRef< Expr * > UnresolvedMappers={})

Called on well-formed 'to' clause.

StmtResult ActOnOpenMPParallelMaskedDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp parallel masked' after parsing of the associated statement.

StmtResult ActOnOpenMPTargetTeamsDistributeParallelForDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp target teams distribute parallel for' after parsing of the associa...

OMPClause * ActOnOpenMPPrivateClause(ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'private' clause.

void StartOpenMPClause(OpenMPClauseKind K)

Start analysis of clauses.

bool CheckOpenMPLinearModifier(OpenMPLinearClauseKind LinKind, SourceLocation LinLoc)

Checks correctness of linear modifiers.

ExprResult ActOnOpenMPDeclareMapperDirectiveVarDecl(Scope *S, QualType MapperType, SourceLocation StartLoc, DeclarationName VN)

Build the mapper variable of '#pragma omp declare mapper'.

OMPClause * ActOnOpenMPOrderedClause(SourceLocation StartLoc, SourceLocation EndLoc, SourceLocation LParenLoc=SourceLocation(), Expr *NumForLoops=nullptr)

Called on well-formed 'ordered' clause.

bool CheckOpenMPLinearDecl(const ValueDecl *D, SourceLocation ELoc, OpenMPLinearClauseKind LinKind, QualType Type, bool IsDeclareSimd=false)

Checks that the specified declaration matches requirements for the linear decls.

OMPClause * ActOnOpenMPIsDevicePtrClause(ArrayRef< Expr * > VarList, const OMPVarListLocTy &Locs)

Called on well-formed 'is_device_ptr' clause.

OMPClause * ActOnOpenMPHasDeviceAddrClause(ArrayRef< Expr * > VarList, const OMPVarListLocTy &Locs)

Called on well-formed 'has_device_addr' clause.

StmtResult ActOnOpenMPErrorDirective(ArrayRef< OMPClause * > Clauses, SourceLocation StartLoc, SourceLocation EndLoc, bool InExContext=true)

Called on well-formed '#pragma omp error'.

OMPClause * ActOnOpenMPPartialClause(Expr *FactorExpr, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-form 'partial' clauses.

StmtResult ActOnOpenMPSimdDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp simd' after parsing of the associated statement.

OMPClause * ActOnOpenMPLastprivateClause(ArrayRef< Expr * > VarList, OpenMPLastprivateModifier LPKind, SourceLocation LPKindLoc, SourceLocation ColonLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'lastprivate' clause.

void ActOnOpenMPDeclareTargetName(NamedDecl *ND, SourceLocation Loc, OMPDeclareTargetDeclAttr::MapTypeTy MT, DeclareTargetContextInfo &DTCI)

Called on correct id-expression from the '#pragma omp declare target'.

DeclGroupPtrTy ActOnOpenMPRequiresDirective(SourceLocation Loc, ArrayRef< OMPClause * > ClauseList)

Called on well-formed '#pragma omp requires'.

StmtResult ActOnOpenMPDistributeSimdDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp distribute simd' after parsing of the associated statement.

OMPClause * ActOnOpenMPFirstprivateClause(ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'firstprivate' clause.

StmtResult ActOnOpenMPDepobjDirective(ArrayRef< OMPClause * > Clauses, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp depobj'.

ExprResult getOpenMPCapturedExpr(VarDecl *Capture, ExprValueKind VK, ExprObjectKind OK, SourceLocation Loc)

OMPClause * ActOnOpenMPPriorityClause(Expr *Priority, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'priority' clause.

OMPClause * ActOnOpenMPSingleExprWithArgClause(OpenMPClauseKind Kind, ArrayRef< unsigned > Arguments, Expr *Expr, SourceLocation StartLoc, SourceLocation LParenLoc, ArrayRef< SourceLocation > ArgumentsLoc, SourceLocation DelimLoc, SourceLocation EndLoc)

StmtResult ActOnOpenMPTargetParallelDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp target parallel' after parsing of the associated statement.

OMPClause * ActOnOpenMPDistScheduleClause(OpenMPDistScheduleClauseKind Kind, Expr *ChunkSize, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation KindLoc, SourceLocation CommaLoc, SourceLocation EndLoc)

Called on well-formed 'dist_schedule' clause.

OpenMPClauseKind isOpenMPPrivateDecl(ValueDecl *D, unsigned Level, unsigned CapLevel) const

Check if the specified variable is used in 'private' clause.

OMPClause * ActOnOpenMPNowaitClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed 'nowait' clause.

StmtResult ActOnOpenMPMetaDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp metadirective' after parsing of the associated statement.

OMPClause * ActOnOpenMPPermutationClause(ArrayRef< Expr * > PermExprs, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-form 'permutation' clause after parsing its arguments.

OMPClause * ActOnOpenMPNontemporalClause(ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'nontemporal' clause.

OMPClause * ActOnOpenMPFromClause(ArrayRef< OpenMPMotionModifierKind > MotionModifiers, ArrayRef< SourceLocation > MotionModifiersLoc, CXXScopeSpec &MapperIdScopeSpec, DeclarationNameInfo &MapperId, SourceLocation ColonLoc, ArrayRef< Expr * > VarList, const OMPVarListLocTy &Locs, ArrayRef< Expr * > UnresolvedMappers={})

Called on well-formed 'from' clause.

OMPClause * ActOnOpenMPBindClause(OpenMPBindClauseKind Kind, SourceLocation KindLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on a well-formed 'bind' clause.

OMPClause * ActOnOpenMPThreadsClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed 'threads' clause.

OMPClause * ActOnOpenMPThreadLimitClause(ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'thread_limit' clause.

OMPClause * ActOnOpenMPSharedClause(ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'shared' clause.

StmtResult ActOnOpenMPTargetExitDataDirective(ArrayRef< OMPClause * > Clauses, SourceLocation StartLoc, SourceLocation EndLoc, Stmt *AStmt)

Called on well-formed '#pragma omp target exit data' after parsing of the associated statement.

StmtResult ActOnOpenMPTeamsDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp teams' after parsing of the associated statement.

OMPClause * ActOnOpenMPCopyinClause(ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'copyin' clause.

OMPClause * ActOnOpenMPMergeableClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed 'mergeable' clause.

void startOpenMPCXXRangeFor()

If the current region is a range loop-based region, mark the start of the loop construct.

OMPClause * ActOnOpenMPDestroyClause(Expr *InteropVar, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation VarLoc, SourceLocation EndLoc)

Called on well-formed 'destroy' clause.

StmtResult ActOnOpenMPParallelMaskedTaskLoopDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp parallel masked taskloop' after parsing of the associated statemen...

OMPClause * ActOnOpenMPAffinityClause(SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc, Expr *Modifier, ArrayRef< Expr * > Locators)

Called on well-formed 'affinity' clause.

OMPClause * ActOnOpenMPCompareClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed 'compare' clause.

OMPClause * ActOnOpenMPNumTeamsClause(ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'num_teams' clause.

StmtResult ActOnOpenMPParallelSectionsDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp parallel sections' after parsing of the associated statement.

OMPClause * ActOnOpenMPUpdateClause(OpenMPDependClauseKind Kind, SourceLocation KindLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'update' clause.

OMPClause * ActOnOpenMPDependClause(const OMPDependClause::DependDataTy &Data, Expr *DepModifier, ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'depend' clause.

OMPClause * ActOnOpenMPDoacrossClause(OpenMPDoacrossClauseModifier DepType, SourceLocation DepLoc, SourceLocation ColonLoc, ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'doacross' clause.

VarDecl * ActOnOpenMPDeclareReductionInitializerStart(Scope *S, Decl *D)

Initialize declare reduction construct initializer.

StmtResult ActOnOpenMPTeamsDistributeParallelForDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp teams distribute parallel for' after parsing of the associated sta...

StmtResult ActOnOpenMPMasterDirective(Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp master' after parsing of the associated statement.

StmtResult ActOnOpenMPTaskgroupDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp taskgroup'.

VarDecl * isOpenMPCapturedDecl(ValueDecl *D, bool CheckScopeInfo=false, unsigned StopAt=0)

Check if the specified variable is used in one of the private clauses (private, firstprivate,...

StmtResult ActOnOpenMPMasterTaskLoopSimdDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp master taskloop simd' after parsing of the associated statement.

ExprResult ActOnOpenMPIdExpression(Scope *CurScope, CXXScopeSpec &ScopeSpec, const DeclarationNameInfo &Id, OpenMPDirectiveKind Kind)

Called on correct id-expression from the '#pragma omp threadprivate'.

void ActOnOpenMPEndAssumesDirective()

Called on well-formed '#pragma omp end assumes'.

OMPClause * ActOnOpenMPNogroupClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed 'nogroup' clause.

OMPClause * ActOnOpenMPGrainsizeClause(OpenMPGrainsizeClauseModifier Modifier, Expr *Size, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ModifierLoc, SourceLocation EndLoc)

Called on well-formed 'grainsize' clause.

ExprResult ActOnOMPArraySectionExpr(Expr *Base, SourceLocation LBLoc, Expr *LowerBound, SourceLocation ColonLocFirst, SourceLocation ColonLocSecond, Expr *Length, Expr *Stride, SourceLocation RBLoc)

bool isOpenMPRebuildMemberExpr(ValueDecl *D)

The member expression(this->fd) needs to be rebuilt in the template instantiation to generate private...

QualType ActOnOpenMPDeclareReductionType(SourceLocation TyLoc, TypeResult ParsedType)

Check if the specified type is allowed to be used in 'omp declare reduction' construct.

StmtResult ActOnOpenMPMaskedTaskLoopSimdDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp masked taskloop simd' after parsing of the associated statement.

bool isOpenMPCapturedByRef(const ValueDecl *D, unsigned Level, unsigned OpenMPCaptureLevel) const

Return true if the provided declaration VD should be captured by reference.

OMPClause * ActOnOpenMPWhenClause(OMPTraitInfo &TI, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'when' clause.

StmtResult ActOnOpenMPParallelGenericLoopDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp parallel loop' after parsing of the associated statement.

DeclGroupPtrTy ActOnOpenMPAllocateDirective(SourceLocation Loc, ArrayRef< Expr * > VarList, ArrayRef< OMPClause * > Clauses, DeclContext *Owner=nullptr)

Called on well-formed '#pragma omp allocate'.

OMPClause * ActOnOpenMPSimpleClause(OpenMPClauseKind Kind, unsigned Argument, SourceLocation ArgumentLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

OMPClause * ActOnOpenMPUnifiedAddressClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed 'unified_address' clause.

static int getOpenMPCaptureLevels(OpenMPDirectiveKind Kind)

Return the number of captured regions created for an OpenMP directive.

bool isOpenMPTargetCapturedDecl(const ValueDecl *D, unsigned Level, unsigned CaptureLevel) const

Check if the specified variable is captured by 'target' directive.

StmtResult ActOnOpenMPParallelMaskedTaskLoopSimdDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp parallel masked taskloop simd' after parsing of the associated sta...

OMPClause * ActOnOpenMPDynamicAllocatorsClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed 'dynamic_allocators' clause.

StmtResult ActOnOpenMPScopeDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp scope' after parsing of the associated statement.

void ActOnOpenMPIteratorVarDecl(VarDecl *VD)

bool isInOpenMPDeclareVariantScope() const

Can we exit an OpenMP declare variant scope at the moment.

StmtResult ActOnOpenMPDistributeParallelForSimdDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp distribute parallel for simd' after parsing of the associated stat...

StmtResult ActOnOpenMPBarrierDirective(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp barrier'.

TypeResult ActOnOpenMPDeclareMapperVarDecl(Scope *S, Declarator &D)

Check variable declaration in 'omp declare mapper' construct.

ExprResult ActOnOMPIteratorExpr(Scope *S, SourceLocation IteratorKwLoc, SourceLocation LLoc, SourceLocation RLoc, ArrayRef< OMPIteratorData > Data)

OMPClause * ActOnOpenMPUsesAllocatorClause(SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc, ArrayRef< UsesAllocatorsData > Data)

Called on well-formed 'uses_allocators' clause.

StmtResult ActOnOpenMPRegionEnd(StmtResult S, ArrayRef< OMPClause * > Clauses)

End of OpenMP region.

DeclGroupPtrTy ActOnOpenMPDeclareReductionDirectiveStart(Scope *S, DeclContext *DC, DeclarationName Name, ArrayRef< std::pair< QualType, SourceLocation > > ReductionTypes, AccessSpecifier AS, Decl *PrevDeclInScope=nullptr)

Called on start of '#pragma omp declare reduction'.

OMPClause * ActOnOpenMPAcqRelClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed 'acq_rel' clause.

OMPClause * ActOnOpenMPAllocatorClause(Expr *Allocator, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'allocator' clause.

ExprResult VerifyPositiveIntegerConstantInClause(Expr *Op, OpenMPClauseKind CKind, bool StrictlyPositive=true, bool SuppressExprDiags=false)

bool isOpenMPDeclareMapperVarDeclAllowed(const VarDecl *VD) const

OMPClause * ActOnOpenMPInclusiveClause(ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'inclusive' clause.

SemaDiagnosticBuilder diagIfOpenMPHostCode(SourceLocation Loc, unsigned DiagID, const FunctionDecl *FD)

Creates a SemaDiagnosticBuilder that emits the diagnostic if the current context is "used as host cod...

SemaDiagnosticBuilder diagIfOpenMPDeviceCode(SourceLocation Loc, unsigned DiagID, const FunctionDecl *FD)

Creates a SemaDiagnosticBuilder that emits the diagnostic if the current context is "used as device c...

StmtResult ActOnOpenMPSectionsDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp sections' after parsing of the associated statement.

void ActOnOpenMPEndDeclareVariant()

Handle a omp end declare variant.

OMPClause * ActOnOpenMPTaskReductionClause(ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc, CXXScopeSpec &ReductionIdScopeSpec, const DeclarationNameInfo &ReductionId, ArrayRef< Expr * > UnresolvedReductions={})

Called on well-formed 'task_reduction' clause.

bool hasGlobalOpenMPAssumes() const

Check if there is an active global omp assumes directive.

StmtResult ActOnOpenMPCriticalDirective(const DeclarationNameInfo &DirName, ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp critical' after parsing of the associated statement.

StmtResult ActOnOpenMPMaskedDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp masked' after parsing of the.

void ActOnFinishedFunctionDefinitionInOpenMPAssumeScope(Decl *D)

Act on D, a function definition inside of an omp [begin/end] assumes.

void EndOpenMPDSABlock(Stmt *CurDirective)

Called on end of data sharing attribute block.

OMPClause * ActOnOpenMPOrderClause(OpenMPOrderClauseModifier Modifier, OpenMPOrderClauseKind Kind, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation MLoc, SourceLocation KindLoc, SourceLocation EndLoc)

Called on well-formed 'order' clause.

OMPClause * ActOnOpenMPReductionClause(ArrayRef< Expr * > VarList, OpenMPReductionClauseModifier Modifier, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ModifierLoc, SourceLocation ColonLoc, SourceLocation EndLoc, CXXScopeSpec &ReductionIdScopeSpec, const DeclarationNameInfo &ReductionId, ArrayRef< Expr * > UnresolvedReductions={})

Called on well-formed 'reduction' clause.

OMPClause * ActOnOpenMPSizesClause(ArrayRef< Expr * > SizeExprs, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-form 'sizes' clause.

bool ActOnStartOpenMPDeclareTargetContext(DeclareTargetContextInfo &DTCI)

Called on the start of target region i.e. '#pragma omp declare target'.

StmtResult ActOnOpenMPTeamsDistributeParallelForSimdDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp teams distribute parallel for simd' after parsing of the associate...

OMPClause * ActOnOpenMPDeviceClause(OpenMPDeviceClauseModifier Modifier, Expr *Device, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ModifierLoc, SourceLocation EndLoc)

Called on well-formed 'device' clause.

OMPClause * ActOnOpenMPNumThreadsClause(Expr *NumThreads, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'num_threads' clause.

StmtResult ActOnOpenMPDistributeDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp distribute' after parsing of the associated statement.

StmtResult ActOnOpenMPSectionDirective(Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp section' after parsing of the associated statement.

StmtResult ActOnOpenMPInterchangeDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp interchange' after parsing of its clauses and the associated state...

bool isOpenMPGlobalCapturedDecl(ValueDecl *D, unsigned Level, unsigned CaptureLevel) const

Check if the specified global variable must be captured by outer capture regions.

OMPClause * ActOnOpenMPInReductionClause(ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc, CXXScopeSpec &ReductionIdScopeSpec, const DeclarationNameInfo &ReductionId, ArrayRef< Expr * > UnresolvedReductions={})

Called on well-formed 'in_reduction' clause.

StmtResult ActOnOpenMPGenericLoopDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp loop' after parsing of the associated statement.

OMPClause * ActOnOpenMPFlushClause(ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'flush' pseudo clause.

OMPRequiresDecl * CheckOMPRequiresDecl(SourceLocation Loc, ArrayRef< OMPClause * > Clauses)

Check restrictions on Requires directive.

void ActOnFinishedFunctionDefinitionInOpenMPDeclareVariantScope(Decl *D, SmallVectorImpl< FunctionDecl * > &Bases)

Register D as specialization of all base functions in Bases in the current omp begin/end declare vari...

StmtResult ActOnOpenMPExecutableDirective(OpenMPDirectiveKind Kind, const DeclarationNameInfo &DirName, OpenMPDirectiveKind CancelRegion, ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

void EndOpenMPClause()

End analysis of clauses.

bool isInOpenMPAssumeScope() const

Check if there is an active global omp begin assumes directive.

StmtResult ActOnOpenMPDistributeParallelForDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp distribute parallel for' after parsing of the associated statement...

QualType ActOnOpenMPDeclareMapperType(SourceLocation TyLoc, TypeResult ParsedType)

Check if the specified type is allowed to be used in 'omp declare mapper' construct.

StmtResult ActOnOpenMPTeamsDistributeDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp teams distribute' after parsing of the associated statement.

StmtResult ActOnOpenMPTargetTeamsDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp target teams' after parsing of the associated statement.

OMPClause * ActOnOpenMPMessageClause(Expr *MS, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'message' clause.

StmtResult ActOnOpenMPScanDirective(ArrayRef< OMPClause * > Clauses, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp scan'.

OMPClause * ActOnOpenMPScheduleClause(OpenMPScheduleClauseModifier M1, OpenMPScheduleClauseModifier M2, OpenMPScheduleClauseKind Kind, Expr *ChunkSize, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation M1Loc, SourceLocation M2Loc, SourceLocation KindLoc, SourceLocation CommaLoc, SourceLocation EndLoc)

Called on well-formed 'schedule' clause.

void ActOnOpenMPLoopInitialization(SourceLocation ForLoc, Stmt *Init)

Check if the current region is an OpenMP loop region and if it is, mark loop control variable,...

OMPClause * ActOnOpenMPUnifiedSharedMemoryClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed 'unified_address' clause.

void DiagnoseUnterminatedOpenMPDeclareTarget()

Report unterminated 'omp declare target' or 'omp begin declare target' at the end of a compilation un...

void finalizeOpenMPDelayedAnalysis(const FunctionDecl *Caller, const FunctionDecl *Callee, SourceLocation Loc)

Finishes analysis of the deferred functions calls that may be declared as host/nohost during device/h...

OMPClause * ActOnOpenMPSimdlenClause(Expr *Length, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'simdlen' clause.

std::optional< std::pair< FunctionDecl *, Expr * > > checkOpenMPDeclareVariantFunction(DeclGroupPtrTy DG, Expr *VariantRef, OMPTraitInfo &TI, unsigned NumAppendArgs, SourceRange SR)

Checks '#pragma omp declare variant' variant function and original functions after parsing of the ass...

OMPClause * ActOnOpenMPUseDevicePtrClause(ArrayRef< Expr * > VarList, const OMPVarListLocTy &Locs)

Called on well-formed 'use_device_ptr' clause.

StmtResult ActOnOpenMPParallelForSimdDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp parallel for simd' after parsing of the associated statement.

OpaquePtr< DeclGroupRef > DeclGroupPtrTy

OMPClause * ActOnOpenMPReleaseClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed 'release' clause.

OMPClause * ActOnOpenMPAcquireClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed 'acquire' clause.

OMPClause * ActOnOpenMPProcBindClause(llvm::omp::ProcBindKind Kind, SourceLocation KindLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'proc_bind' clause.

OMPClause * ActOnOpenMPSIMDClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed 'simd' clause.

OMPClause * ActOnOpenMPXBareClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on a well-formed 'ompx_bare' clause.

StmtResult ActOnOpenMPInformationalDirective(OpenMPDirectiveKind Kind, const DeclarationNameInfo &DirName, ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Process an OpenMP informational directive.

StmtResult ActOnOpenMPCanonicalLoop(Stmt *AStmt)

Called for syntactical loops (ForStmt or CXXForRangeStmt) associated to an OpenMP loop directive.

OMPClause * ActOnOpenMPHintClause(Expr *Hint, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'hint' clause.

OMPClause * ActOnOpenMPSingleExprClause(OpenMPClauseKind Kind, Expr *Expr, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

OMPClause * ActOnOpenMPNullaryAssumptionClause(OpenMPClauseKind CK, SourceLocation Loc, SourceLocation RLoc)

StmtResult ActOnOpenMPTargetTeamsDistributeDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp target teams distribute' after parsing of the associated statement...

StmtResult ActOnOpenMPParallelForDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp parallel for' after parsing of the associated statement.

OMPClause * ActOnOpenMPCaptureClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed 'capture' clause.

StmtResult ActOnOpenMPForDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp for' after parsing of the associated statement.

StmtResult ActOnOpenMPAtomicDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp atomic' after parsing of the associated statement.

StmtResult ActOnOpenMPTargetUpdateDirective(ArrayRef< OMPClause * > Clauses, SourceLocation StartLoc, SourceLocation EndLoc, Stmt *AStmt)

Called on well-formed '#pragma omp target update'.

StmtResult ActOnOpenMPOrderedDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp ordered' after parsing of the associated statement.

StmtResult ActOnOpenMPReverseDirective(Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp reverse'.

ExprResult ActOnOMPArrayShapingExpr(Expr *Base, SourceLocation LParenLoc, SourceLocation RParenLoc, ArrayRef< Expr * > Dims, ArrayRef< SourceRange > Brackets)

OMPClause * ActOnOpenMPAtClause(OpenMPAtClauseKind Kind, SourceLocation KindLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'at' clause.

StmtResult ActOnOpenMPTaskLoopDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp taskloop' after parsing of the associated statement.

OMPClause * ActOnOpenMPInitClause(Expr *InteropVar, OMPInteropInfo &InteropInfo, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation VarLoc, SourceLocation EndLoc)

Called on well-formed 'init' clause.

OMPClause * ActOnOpenMPUseDeviceAddrClause(ArrayRef< Expr * > VarList, const OMPVarListLocTy &Locs)

Called on well-formed 'use_device_addr' clause.

void ActOnOpenMPDeclareReductionCombinerStart(Scope *S, Decl *D)

Initialize declare reduction construct initializer.

OMPClause * ActOnOpenMPAllocateClause(Expr *Allocator, Expr *Alignment, OpenMPAllocateClauseModifier FirstModifier, SourceLocation FirstModifierLoc, OpenMPAllocateClauseModifier SecondModifier, SourceLocation SecondModifierLoc, ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation ColonLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'allocate' clause.

std::pair< StringRef, QualType > CapturedParamNameType

OMPClause * ActOnOpenMPFinalClause(Expr *Condition, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'final' clause.

bool isInOpenMPTargetExecutionDirective() const

Return true inside OpenMP target region.

StmtResult ActOnOpenMPTargetDataDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp target data' after parsing of the associated statement.

StmtResult ActOnOpenMPMasterTaskLoopDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp master taskloop' after parsing of the associated statement.

void ActOnStartOfFunctionDefinitionInOpenMPDeclareVariantScope(Scope *S, Declarator &D, MultiTemplateParamsArg TemplateParameterLists, SmallVectorImpl< FunctionDecl * > &Bases)

The declarator D defines a function in the scope S which is nested in an omp begin/end declare varian...

StmtResult ActOnOpenMPFlushDirective(ArrayRef< OMPClause * > Clauses, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp flush'.

StmtResult ActOnOpenMPUnrollDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp unroll' after parsing of its clauses and the associated statement.

OMPClause * ActOnOpenMPMapClause(Expr *IteratorModifier, ArrayRef< OpenMPMapModifierKind > MapTypeModifiers, ArrayRef< SourceLocation > MapTypeModifiersLoc, CXXScopeSpec &MapperIdScopeSpec, DeclarationNameInfo &MapperId, OpenMPMapClauseKind MapType, bool IsMapTypeImplicit, SourceLocation MapLoc, SourceLocation ColonLoc, ArrayRef< Expr * > VarList, const OMPVarListLocTy &Locs, bool NoDiagnose=false, ArrayRef< Expr * > UnresolvedMappers={})

Called on well-formed 'map' clause.

OMPClause * ActOnOpenMPNumTasksClause(OpenMPNumTasksClauseModifier Modifier, Expr *NumTasks, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ModifierLoc, SourceLocation EndLoc)

Called on well-formed 'num_tasks' clause.

void ActOnOpenMPDeclareTargetInitializer(Decl *D)

Adds OMPDeclareTargetDeclAttr to referenced variables in declare target directive.

bool isInOpenMPDeclareTargetContext() const

Return true inside OpenMP declare target region.

StmtResult ActOnOpenMPCancellationPointDirective(SourceLocation StartLoc, SourceLocation EndLoc, OpenMPDirectiveKind CancelRegion)

Called on well-formed '#pragma omp cancellation point'.

OMPClause * ActOnOpenMPVarListClause(OpenMPClauseKind Kind, ArrayRef< Expr * > Vars, const OMPVarListLocTy &Locs, OpenMPVarListDataTy &Data)

void startOpenMPLoop()

If the current region is a loop-based region, mark the start of the loop construct.

StmtResult ActOnOpenMPTargetDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp target' after parsing of the associated statement.

void StartOpenMPDSABlock(OpenMPDirectiveKind K, const DeclarationNameInfo &DirName, Scope *CurScope, SourceLocation Loc)

Called on start of new data sharing attribute block.

OMPThreadPrivateDecl * CheckOMPThreadPrivateDecl(SourceLocation Loc, ArrayRef< Expr * > VarList)

Builds a new OpenMPThreadPrivateDecl and checks its correctness.

void handleOMPAssumeAttr(Decl *D, const ParsedAttr &AL)

OMPClause * ActOnOpenMPSeverityClause(OpenMPSeverityClauseKind Kind, SourceLocation KindLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'severity' clause.

void ActOnOpenMPDeclareVariantDirective(FunctionDecl *FD, Expr *VariantRef, OMPTraitInfo &TI, ArrayRef< Expr * > AdjustArgsNothing, ArrayRef< Expr * > AdjustArgsNeedDevicePtr, ArrayRef< OMPInteropInfo > AppendArgs, SourceLocation AdjustArgsLoc, SourceLocation AppendArgsLoc, SourceRange SR)

Called on well-formed '#pragma omp declare variant' after parsing of the associated method/function.

void ActOnOpenMPDeclareReductionInitializerEnd(Decl *D, Expr *Initializer, VarDecl *OmpPrivParm)

Finish current declare reduction construct initializer.

OMPClause * ActOnOpenMPLinearClause(ArrayRef< Expr * > VarList, Expr *Step, SourceLocation StartLoc, SourceLocation LParenLoc, OpenMPLinearClauseKind LinKind, SourceLocation LinLoc, SourceLocation ColonLoc, SourceLocation StepModifierLoc, SourceLocation EndLoc)

Called on well-formed 'linear' clause.

OMPClause * ActOnOpenMPDefaultmapClause(OpenMPDefaultmapClauseModifier M, OpenMPDefaultmapClauseKind Kind, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation MLoc, SourceLocation KindLoc, SourceLocation EndLoc)

Called on well-formed 'defaultmap' clause.

StmtResult ActOnOpenMPMaskedTaskLoopDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp masked taskloop' after parsing of the associated statement.

StmtResult ActOnOpenMPTaskwaitDirective(ArrayRef< OMPClause * > Clauses, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp taskwait'.

StmtResult ActOnOpenMPForSimdDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp for simd' after parsing of the associated statement.

OMPClause * ActOnOpenMPRelaxedClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed 'relaxed' clause.

OMPClause * ActOnOpenMPAlignedClause(ArrayRef< Expr * > VarList, Expr *Alignment, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc)

Called on well-formed 'aligned' clause.

StmtResult ActOnOpenMPInteropDirective(ArrayRef< OMPClause * > Clauses, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp interop'.

OMPClause * ActOnOpenMPDepobjClause(Expr *Depobj, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'depobj' pseudo clause.

OMPClause * ActOnOpenMPSeqCstClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed 'seq_cst' clause.

void checkDeclIsAllowedInOpenMPTarget(Expr *E, Decl *D, SourceLocation IdLoc=SourceLocation())

Check declaration inside target region.

OMPClause * ActOnOpenMPNovariantsClause(Expr *Condition, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'novariants' clause.

OMPClause * ActOnOpenMPCopyprivateClause(ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'copyprivate' clause.

OMPClause * ActOnOpenMPCollapseClause(Expr *NumForLoops, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'collapse' clause.

DeclGroupPtrTy ActOnOpenMPDeclareSimdDirective(DeclGroupPtrTy DG, OMPDeclareSimdDeclAttr::BranchStateTy BS, Expr *Simdlen, ArrayRef< Expr * > Uniforms, ArrayRef< Expr * > Aligneds, ArrayRef< Expr * > Alignments, ArrayRef< Expr * > Linears, ArrayRef< unsigned > LinModifiers, ArrayRef< Expr * > Steps, SourceRange SR)

Called on well-formed '#pragma omp declare simd' after parsing of the associated method/function.

ExprResult PerformOpenMPImplicitIntegerConversion(SourceLocation OpLoc, Expr *Op)

StmtResult ActOnOpenMPTargetSimdDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp target simd' after parsing of the associated statement.

OMPClause * ActOnOpenMPAlignClause(Expr *Alignment, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'align' clause.

OMPClause * ActOnOpenMPAtomicDefaultMemOrderClause(OpenMPAtomicDefaultMemOrderClauseKind Kind, SourceLocation KindLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'atomic_default_mem_order' clause.

StmtResult ActOnOpenMPTeamsGenericLoopDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp teams loop' after parsing of the associated statement.

OMPClause * ActOnOpenMPWeakClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed 'weak' clause.

OMPClause * ActOnOpenMPXAttributeClause(ArrayRef< const Attr * > Attrs, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on a well-formed 'ompx_attribute' clause.

StmtResult ActOnOpenMPTileDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp tile' after parsing of its clauses and the associated statement.

StmtResult ActOnOpenMPParallelDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp parallel' after parsing of the associated statement.

StmtResult ActOnOpenMPSingleDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp single' after parsing of the associated statement.

StmtResult ActOnOpenMPTaskLoopSimdDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp taskloop simd' after parsing of the associated statement.

const ValueDecl * getOpenMPDeclareMapperVarName() const

StmtResult ActOnOpenMPParallelMasterTaskLoopDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp parallel master taskloop' after parsing of the associated statemen...

DeclGroupPtrTy ActOnOpenMPThreadprivateDirective(SourceLocation Loc, ArrayRef< Expr * > VarList)

Called on well-formed '#pragma omp threadprivate'.

void ActOnOpenMPRegionStart(OpenMPDirectiveKind DKind, Scope *CurScope)

Initialization of captured region for OpenMP region.

NamedDecl * lookupOpenMPDeclareTargetName(Scope *CurScope, CXXScopeSpec &ScopeSpec, const DeclarationNameInfo &Id)

Searches for the provided declaration name for OpenMP declare target directive.

OMPClause * ActOnOpenMPExclusiveClause(ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Called on well-formed 'exclusive' clause.

OMPClause * ActOnOpenMPWriteClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed 'write' clause.

StmtResult ActOnOpenMPTargetParallelGenericLoopDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp target parallel loop' after parsing of the associated statement.

void ActOnOpenMPAssumesDirective(SourceLocation Loc, OpenMPDirectiveKind DKind, ArrayRef< std::string > Assumptions, bool SkippedClauses)

Called on well-formed '#pragma omp [begin] assume[s]'.

StmtResult ActOnOpenMPTargetParallelForSimdDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp target parallel for simd' after parsing of the associated statemen...

void ActOnOpenMPBeginDeclareVariant(SourceLocation Loc, OMPTraitInfo &TI)

Handle a omp begin declare variant.

StmtResult ActOnOpenMPLoopnest(Stmt *AStmt)

Process a canonical OpenMP loop nest that can either be a canonical literal loop (ForStmt or CXXForRa...

OMPClause * ActOnOpenMPReverseOffloadClause(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed 'reverse_offload' clause.

StmtResult ActOnOpenMPTaskDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp task' after parsing of the associated statement.

OMPClause * ActOnOpenMPIfClause(OpenMPDirectiveKind NameModifier, Expr *Condition, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation NameModifierLoc, SourceLocation ColonLoc, SourceLocation EndLoc)

Called on well-formed 'if' clause.

llvm::SmallDenseMap< const ValueDecl *, const Expr *, 4 > VarsWithInheritedDSAType

StmtResult ActOnOpenMPTargetTeamsDistributeSimdDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp target teams distribute simd' after parsing of the associated stat...

const DeclareTargetContextInfo ActOnOpenMPEndDeclareTargetDirective()

Called at the end of target region i.e. '#pragma omp end declare target'.

void setOpenMPCaptureKind(FieldDecl *FD, const ValueDecl *D, unsigned Level)

Sets OpenMP capture kind (OMPC_private, OMPC_firstprivate, OMPC_map etc.) for FD based on DSA for the...

OMPClause * ActOnOpenMPClause(OpenMPClauseKind Kind, SourceLocation StartLoc, SourceLocation EndLoc)

StmtResult ActOnOpenMPCancelDirective(ArrayRef< OMPClause * > Clauses, SourceLocation StartLoc, SourceLocation EndLoc, OpenMPDirectiveKind CancelRegion)

Called on well-formed '#pragma omp cancel'.

StmtResult ActOnOpenMPTaskyieldDirective(SourceLocation StartLoc, SourceLocation EndLoc)

Called on well-formed '#pragma omp taskyield'.

StmtResult ActOnOpenMPTeamsDistributeSimdDirective(ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)

Called on well-formed '#pragma omp teams distribute simd' after parsing of the associated statement.

DeclGroupPtrTy ActOnOpenMPDeclareMapperDirective(Scope *S, DeclContext *DC, DeclarationName Name, QualType MapperType, SourceLocation StartLoc, DeclarationName VN, AccessSpecifier AS, Expr *MapperVarRef, ArrayRef< OMPClause * > Clauses, Decl *PrevDeclInScope=nullptr)

Called on start of '#pragma omp declare mapper'.

Sema - This implements semantic analysis and AST building for C.

Encodes a location in the source.

A trivial tuple used to represent a source range.

Stmt - This represents one statement.

The base class of the type hierarchy.

Represent the declaration of a variable (in which case it is an lvalue) a function (in which case it ...

Represents a variable declaration or definition.

Retains information about a function, method, or block that is currently being parsed.

The JSON file list parser is used to communicate input to InstallAPI.

llvm::omp::Directive OpenMPDirectiveKind

OpenMP directives.

OpenMPDefaultmapClauseModifier

OpenMP modifiers for 'defaultmap' clause.

OpenMPOrderClauseModifier

OpenMP modifiers for 'order' clause.

ExprObjectKind

A further classification of the kind of object referenced by an l-value or x-value.

OpenMPAtClauseKind

OpenMP attributes for 'at' clause.

OpenMPReductionClauseModifier

OpenMP modifiers for 'reduction' clause.

OpenMPScheduleClauseModifier

OpenMP modifiers for 'schedule' clause.

llvm::omp::Clause OpenMPClauseKind

OpenMP clauses.

static constexpr unsigned NumberOfOMPAllocateClauseModifiers

Number of allowed allocate-modifiers.

OpenMPDistScheduleClauseKind

OpenMP attributes for 'dist_schedule' clause.

OpenMPDoacrossClauseModifier

OpenMP dependence types for 'doacross' clause.

OpenMPBindClauseKind

OpenMP bindings for the 'bind' clause.

OpenMPLastprivateModifier

OpenMP 'lastprivate' clause modifier.

OpenMPDependClauseKind

OpenMP attributes for 'depend' clause.

OpenMPGrainsizeClauseModifier

OpenMPNumTasksClauseModifier

OpenMPSeverityClauseKind

OpenMP attributes for 'severity' clause.

OpenMPDefaultmapClauseKind

OpenMP attributes for 'defaultmap' clause.

OpenMPAllocateClauseModifier

OpenMP modifiers for 'allocate' clause.

OpenMPLinearClauseKind

OpenMP attributes for 'linear' clause.

ExprValueKind

The categorization of expression values, currently following the C++11 scheme.

OpenMPAtomicDefaultMemOrderClauseKind

OpenMP attributes for 'atomic_default_mem_order' clause.

OpenMPDeviceClauseModifier

OpenMP modifiers for 'device' clause.

OpenMPOrderClauseKind

OpenMP attributes for 'order' clause.

OpenMPScheduleClauseKind

OpenMP attributes for 'schedule' clause.

AccessSpecifier

A C++ access specifier (public, private, protected), plus the special value "none" which means differ...

OpenMPMapClauseKind

OpenMP mapping kind for 'map' clause.

DeclarationNameInfo - A collector data type for bundling together a DeclarationName and the correspon...

Iterator range representation begin:end[:step].

This structure contains most locations needed for by an OMPVarListClause.

OMPDeclareTargetDeclAttr::MapTypeTy MT

DeclareTargetContextInfo(OpenMPDirectiveKind Kind, SourceLocation Loc)

std::optional< Expr * > Indirect

The directive with indirect clause.

OpenMPDirectiveKind Kind

The directive kind, begin declare target or declare target.

OMPDeclareTargetDeclAttr::DevTypeTy DT

The 'device_type' as parsed from the clause.

SourceLocation Loc

The directive location.

llvm::DenseMap< NamedDecl *, MapInfo > ExplicitlyMapped

Explicitly listed variables and functions in a 'to' or 'link' clause.

Data structure for iterator expression.

SourceLocation DeclIdentLoc

SourceLocation SecColonLoc

IdentifierInfo * DeclIdent

OMPIteratorExpr::IteratorRange Range

Data used for processing a list of variables in OpenMP clauses.

SmallVector< SourceLocation, NumberOfOMPMotionModifiers > MotionModifiersLoc

CXXScopeSpec ReductionOrMapperIdScopeSpec

SmallVector< OpenMPMotionModifierKind, NumberOfOMPMotionModifiers > MotionModifiers

SmallVector< SourceLocation, NumberOfOMPAllocateClauseModifiers > AllocClauseModifiersLoc

SourceLocation OmpAllMemoryLoc

SmallVector< OpenMPMapModifierKind, NumberOfOMPMapClauseModifiers > MapTypeModifiers

SmallVector< SourceLocation, NumberOfOMPMapClauseModifiers > MapTypeModifiersLoc

DeclarationNameInfo ReductionOrMapperId

SourceLocation ExtraModifierLoc

int ExtraModifier

Additional modifier for linear, map, depend or lastprivate clause.

SmallVector< OpenMPAllocateClauseModifier, NumberOfOMPAllocateClauseModifiers > AllocClauseModifiers

'step' modifier location for linear clause

SourceLocation StepModifierLoc

Data for list of allocators.

Expr * AllocatorTraits

Allocator traits.

SourceLocation LParenLoc

Locations of '(' and ')' symbols.

Expr * Allocator

Allocator.