A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://clang.llvm.org/doxygen/OpenMPClause_8h_source.html below:

clang: include/clang/AST/OpenMPClause.h Source File

16#ifndef LLVM_CLANG_AST_OPENMPCLAUSE_H 17#define LLVM_CLANG_AST_OPENMPCLAUSE_H 29#include "llvm/ADT/ArrayRef.h" 30#include "llvm/ADT/MapVector.h" 31#include "llvm/ADT/PointerIntPair.h" 32#include "llvm/ADT/SmallVector.h" 33#include "llvm/ADT/iterator.h" 34#include "llvm/ADT/iterator_range.h" 35#include "llvm/Frontend/OpenMP/OMPAssume.h" 36#include "llvm/Frontend/OpenMP/OMPConstants.h" 37#include "llvm/Frontend/OpenMP/OMPContext.h" 38#include "llvm/Support/Casting.h" 39#include "llvm/Support/Compiler.h" 40#include "llvm/Support/TrailingObjects.h" 67

: StartLoc(StartLoc), EndLoc(EndLoc), Kind(K) {}

110template

<OpenMPClauseKind ClauseKind>

117

:

OMPClause

(ClauseKind, StartLoc, EndLoc) {}

139 return T

->getClauseKind() == ClauseKind;

143template

<OpenMPClauseKind ClauseKind,

class

Base>

158

:

Base

(ClauseKind, StartLoc, EndLoc), LParenLoc(LParenLoc), S(S) {}

163 template

<

typename

T>

T

*

getStmtAs

()

const

{

return

cast_or_null<T>(S); }

189 return T

->getClauseKind() == ClauseKind;

199 Stmt

*PreInit =

nullptr

;

206

assert(

get

(This) &&

"get is not tuned for pre-init."

);

214

CaptureRegion = ThisRegion;

237 Expr

*PostUpdate =

nullptr

;

241

assert(

get

(This) &&

"get is not tuned for post-update."

);

294

:

OMPClause

(K, StartLoc, EndLoc), LParenLoc(LParenLoc), NumVars(N) {}

299 static_cast<T

*

>

(

this

)->

template

getTrailingObjects<Expr *>(), NumVars);

304

assert(VL.size() == NumVars &&

305 "Number of variables is not the same as the preallocated buffer"

);

306

std::copy(VL.begin(), VL.end(),

307 static_cast<T

*

>

(

this

)->template getTrailingObjects<Expr *>());

340 static_cast<const T

*

>

(

this

)->

template

getTrailingObjects<Expr *>(),

366

:

OMPClause

(K, StartLoc, EndLoc), LParenLoc(LParenLoc),

386 static_cast<T

*

>

(

this

)

387

->

template

getTrailingObjects<OpenMPDirectiveKind>(),

394 "Number of directive kinds is not the same as the preallocated buffer"

);

395

std::copy(DK.begin(), DK.end(),

396 static_cast<T

*

>

(

this

)

397

->template getTrailingObjects<OpenMPDirectiveKind>());

474 static

OMPAlignClause *

Create

(

const

ASTContext &

C

, Expr *A,

475

SourceLocation StartLoc,

476

SourceLocation LParenLoc,

477

SourceLocation EndLoc);

493 private

llvm::TrailingObjects<OMPAllocateClause, Expr *> {

496 friend

TrailingObjects;

500 Expr

*Allocator =

nullptr

;

503 Expr

*Alignment =

nullptr

;

514 enum

{ FIRST, SECOND, NUM_MODIFIERS };

524

Modifiers[FIRST] = M;

531

Modifiers[SECOND] = M;

535 void

setFirstAllocateModifierLoc(SourceLocation

Loc

) {

536

ModifiersLoc[FIRST] =

Loc

;

540 void

setSecondAllocateModifierLoc(SourceLocation

Loc

) {

541

ModifiersLoc[SECOND] =

Loc

;

554

OMPAllocateClause(SourceLocation StartLoc, SourceLocation LParenLoc,

555

Expr *Allocator, Expr *Alignment, SourceLocation ColonLoc,

557

SourceLocation Modifier1Loc,

559

SourceLocation Modifier2Loc, SourceLocation EndLoc,

561

: OMPVarListClause<OMPAllocateClause>(

llvm

::omp::OMPC_allocate, StartLoc,

562

LParenLoc, EndLoc, N),

563

Allocator(Allocator), Alignment(Alignment), ColonLoc(ColonLoc) {

564

Modifiers[FIRST] = Modifier1;

565

Modifiers[SECOND] = Modifier2;

566

ModifiersLoc[FIRST] = Modifier1Loc;

567

ModifiersLoc[SECOND] = Modifier2Loc;

573 explicit

OMPAllocateClause(

unsigned

N)

574

: OMPVarListClause<OMPAllocateClause>(

llvm

::omp::OMPC_allocate,

575

SourceLocation(), SourceLocation(),

576

SourceLocation(), N) {

582 void

setColonLoc(SourceLocation CL) { ColonLoc = CL; }

584 void

setAllocator(Expr *A) { Allocator = A; }

586

AllocatorModifier = AM;

588 void

setAlignment(Expr *A) { Alignment = A; }

602 static

OMPAllocateClause *

603 Create

(

const

ASTContext &

C

, SourceLocation StartLoc, SourceLocation LParenLoc,

604

Expr *Allocator, Expr *Alignment, SourceLocation ColonLoc,

607

SourceLocation EndLoc, ArrayRef<Expr *> VL);

617 return

AllocatorModifier;

622 return

Modifiers[FIRST];

627 return

ModifiersLoc[FIRST];

632 return

Modifiers[SECOND];

637 return

ModifiersLoc[SECOND];

644 return

AllocatorModifierLoc;

671 return T

->getClauseKind() == llvm::omp::OMPC_allocate;

689 Stmt

*Condition =

nullptr

;

707 void

setNameModifierLoc(SourceLocation

Loc

) { NameModifierLoc =

Loc

; }

710 void

setColonLoc(SourceLocation

Loc

) { ColonLoc =

Loc

; }

731

ColonLoc(ColonLoc), NameModifier(NameModifier),

732

NameModifierLoc(NameModifierLoc) {

772 return T

->getClauseKind() == llvm::omp::OMPC_if;

835 void

setNumThreads(

Expr

*NThreads) {

setStmt

(NThreads); }

943 private

llvm::TrailingObjects<OMPSizesClause, Expr *> {

956

NumSizes(NumSizes) {}

988

->

template

getTrailingObjects<Expr *>(),

993

->

template

getTrailingObjects<Expr *>(),

999

assert(VL.size() == NumSizes);

1000

std::copy(VL.begin(), VL.end(),

1002

->template getTrailingObjects<Expr *>());

1008 reinterpret_cast<Stmt

**

>

(Sizes.end()));

1013 reinterpret_cast<Stmt

*

const

*

>

(Sizes.end()));

1024 return T

->getClauseKind() == llvm::omp::OMPC_sizes;

1038 private

llvm::TrailingObjects<OMPSizesClause, Expr *> {

1051

assert(VL.size() == NumLoops &&

"Expecting one expression per loop"

);

1053

->

template

getTrailingObjects<Expr *>());

1060

NumLoops(NumLoops) {}

1070 static

OMPPermutationClause *

1071 Create

(

const

ASTContext &

C

, SourceLocation StartLoc, SourceLocation LParenLoc,

1072

SourceLocation EndLoc, ArrayRef<Expr *> Args);

1078 static

OMPPermutationClause *

CreateEmpty

(

const

ASTContext &

C

,

1094

->

template

getTrailingObjects<Expr *>(),

1099

->

template

getTrailingObjects<Expr *>(),

1107 reinterpret_cast<Stmt

**

>

(Args.end()));

1112 reinterpret_cast<Stmt

*

const

*

>

(Args.end()));

1123 return T

->getClauseKind() == llvm::omp::OMPC_permutation;

1174 void

setFactor(Expr *

E

) { Factor =

E

; }

1177 void

setLParenLoc(SourceLocation

Loc

) { LParenLoc =

Loc

; }

1187 static

OMPPartialClause *

Create

(

const

ASTContext &

C

, SourceLocation StartLoc,

1188

SourceLocation LParenLoc,

1189

SourceLocation EndLoc, Expr *Factor);

1194 static

OMPPartialClause *

CreateEmpty

(

const

ASTContext &

C

);

1215 return T

->getClauseKind() == llvm::omp::OMPC_partial;

1269

llvm::omp::DefaultKind

Kind

= llvm::omp::OMP_DEFAULT_unknown;

1277 void

setDefaultKind(llvm::omp::DefaultKind K) {

Kind

= K; }

1282 void

setDefaultKindKwLoc(

SourceLocation

KLoc) { KindKwLoc = KLoc; }

1296

LParenLoc(LParenLoc),

Kind

(A), KindKwLoc(ALoc) {}

1331 return T

->getClauseKind() == llvm::omp::OMPC_default;

1350

llvm::omp::ProcBindKind

Kind

= llvm::omp::OMP_PROC_BIND_unknown;

1358 void

setProcBindKind(llvm::omp::ProcBindKind K) {

Kind

= K; }

1363 void

setProcBindKindKwLoc(

SourceLocation

KLoc) { KindKwLoc = KLoc; }

1377

:

OMPClause

(

llvm

::omp::OMPC_proc_bind, StartLoc, EndLoc),

1378

LParenLoc(LParenLoc),

Kind

(A), KindKwLoc(ALoc) {}

1413 return T

->getClauseKind() == llvm::omp::OMPC_proc_bind;

1456

:

OMPClause

(

llvm

::omp::OMPC_unified_shared_memory, StartLoc, EndLoc) {}

1479 return T

->getClauseKind() == llvm::omp::OMPC_unified_shared_memory;

1499

:

OMPClause

(

llvm

::omp::OMPC_reverse_offload, StartLoc, EndLoc) {}

1522 return T

->getClauseKind() == llvm::omp::OMPC_reverse_offload;

1542

:

OMPClause

(

llvm

::omp::OMPC_dynamic_allocators, StartLoc, EndLoc) {}

1565 return T

->getClauseKind() == llvm::omp::OMPC_dynamic_allocators;

1617

:

OMPClause

(

llvm

::omp::OMPC_atomic_default_mem_order, StartLoc, EndLoc),

1618

LParenLoc(LParenLoc),

Kind

(A), KindKwLoc(ALoc) {}

1655 return T

->getClauseKind() == llvm::omp::OMPC_atomic_default_mem_order;

1689 void

setLParenLoc(SourceLocation

Loc

) { LParenLoc =

Loc

; }

1702

:

OMPClause

(

llvm

::omp::OMPC_at, StartLoc, EndLoc), LParenLoc(LParenLoc),

1703 Kind

(A), KindKwLoc(ALoc) {}

1734 return T

->getClauseKind() == llvm::omp::OMPC_at;

1765 void

setSeverityKindKwLoc(

SourceLocation

KLoc) { KindKwLoc = KLoc; }

1768 void

setLParenLoc(SourceLocation

Loc

) { LParenLoc =

Loc

; }

1782

LParenLoc(LParenLoc),

Kind

(A), KindKwLoc(ALoc) {}

1814 return T

->getClauseKind() == llvm::omp::OMPC_severity;

1832 Stmt

*MessageString =

nullptr

;

1835 void

setMessageString(

Expr

*MS) { MessageString = MS; }

1850

LParenLoc(LParenLoc), MessageString(MS) {}

1864 return child_range

(&MessageString, &MessageString + 1);

1880 return T

->getClauseKind() == llvm::omp::OMPC_message;

1901 enum

{FIRST, SECOND, NUM_MODIFIERS};

1914 Expr

*ChunkSize =

nullptr

;

1925

Modifiers[FIRST] = M;

1932

Modifiers[SECOND] = M;

1936 void

setFirstScheduleModifierLoc(SourceLocation

Loc

) {

1937

ModifiersLoc[FIRST] =

Loc

;

1941 void

setSecondScheduleModifierLoc(SourceLocation

Loc

) {

1942

ModifiersLoc[SECOND] =

Loc

;

1950

Modifiers[FIRST] = M;

1953

Modifiers[SECOND] = M;

1960 void

setLParenLoc(SourceLocation

Loc

) { LParenLoc =

Loc

; }

1965 void

setScheduleKindLoc(SourceLocation KLoc) { KindLoc = KLoc; }

1970 void

setCommaLoc(SourceLocation

Loc

) { CommaLoc =

Loc

; }

1975 void

setChunkSize(Expr *

E

) { ChunkSize =

E

; }

1996 Expr

*ChunkSize,

Stmt

*HelperChunkSize,

2001

KindLoc(KLoc), CommaLoc(CommaLoc), ChunkSize(ChunkSize) {

2003

Modifiers[FIRST] = M1;

2004

Modifiers[SECOND] = M2;

2005

ModifiersLoc[FIRST] = M1Loc;

2006

ModifiersLoc[SECOND] = M2Loc;

2022 return

Modifiers[FIRST];

2027 return

Modifiers[SECOND];

2038 return

ModifiersLoc[FIRST];

2043 return

ModifiersLoc[SECOND];

2057 reinterpret_cast<Stmt

**

>

(&ChunkSize) + 1);

2073 return T

->getClauseKind() == llvm::omp::OMPC_schedule;

2086 private

llvm::TrailingObjects<OMPOrderedClause, Expr *> {

2088 friend

TrailingObjects;

2094 Stmt

*NumForLoops =

nullptr

;

2097 unsigned

NumberOfLoops = 0;

2109

LParenLoc(LParenLoc), NumForLoops(

Num

), NumberOfLoops(NumLoops) {}

2114

NumberOfLoops(NumLoops) {}

2117 void

setNumForLoops(Expr *

Num

) { NumForLoops =

Num

; }

2127 static

OMPOrderedClause *

Create

(

const

ASTContext &

C

, Expr *

Num

,

2128 unsigned

NumLoops, SourceLocation StartLoc,

2129

SourceLocation LParenLoc,

2130

SourceLocation EndLoc);

2133 static

OMPOrderedClause*

CreateEmpty

(

const

ASTContext &

C

,

unsigned

NumLoops);

2169 return T

->getClauseKind() == llvm::omp::OMPC_ordered;

2225 return T

->getClauseKind() == llvm::omp::OMPC_untied;

2243

:

OMPClause

(

llvm

::omp::OMPC_mergeable, StartLoc, EndLoc) {}

2266 return T

->getClauseKind() == llvm::omp::OMPC_mergeable;

2279 private

llvm::TrailingObjects<OMPAbsentClause, OpenMPDirectiveKind> {

2281 friend

TrailingObjects;

2292

llvm::omp::OMPC_absent, StartLoc, LParenLoc, EndLoc,

NumKinds

) {}

2309 return C

->getClauseKind() == llvm::omp::OMPC_absent;

2322 private

llvm::TrailingObjects<OMPContainsClause, OpenMPDirectiveKind> {

2324 friend

TrailingObjects;

2335

llvm::omp::OMPC_contains, StartLoc, LParenLoc, EndLoc,

NumKinds

) {}

2352 return C

->getClauseKind() == llvm::omp::OMPC_contains;

2483 return T

->getClauseKind() == llvm::omp::OMPC_read;

2522 return T

->getClauseKind() == llvm::omp::OMPC_write;

2543 private

llvm::TrailingObjects<OMPUpdateClause, SourceLocation,

2544

OpenMPDependClauseKind> {

2546 friend

TrailingObjects;

2549 bool

IsExtended =

false

;

2553 size_t

numTrailingObjects(OverloadToken<SourceLocation>)

const

{

2555 return

IsExtended ? 2 : 0;

2560

assert(IsExtended &&

"Expected extended clause."

);

2561

*getTrailingObjects<SourceLocation>() =

Loc

;

2565 void

setArgumentLoc(SourceLocation

Loc

) {

2566

assert(IsExtended &&

"Expected extended clause."

);

2567

*std::next(getTrailingObjects<SourceLocation>(), 1) =

Loc

;

2572

assert(IsExtended &&

"Expected extended clause."

);

2573

*getTrailingObjects<OpenMPDependClauseKind>() = DK;

2580

OMPUpdateClause(SourceLocation StartLoc, SourceLocation EndLoc,

2583

IsExtended(IsExtended) {}

2586

OMPUpdateClause(

bool

IsExtended)

2587

:

OMPClause

(

llvm

::omp::OMPC_update, SourceLocation(), SourceLocation()),

2588

IsExtended(IsExtended) {}

2596 static

OMPUpdateClause *

Create

(

const

ASTContext &

C

, SourceLocation StartLoc,

2597

SourceLocation EndLoc);

2607 static

OMPUpdateClause *

Create

(

const

ASTContext &

C

, SourceLocation StartLoc,

2608

SourceLocation LParenLoc,

2609

SourceLocation ArgumentLoc,

2611

SourceLocation EndLoc);

2618 static

OMPUpdateClause *

CreateEmpty

(

const

ASTContext &

C

,

bool

IsExtended);

2640

assert(IsExtended &&

"Expected extended clause."

);

2641 return

*getTrailingObjects<SourceLocation>();

2646

assert(IsExtended &&

"Expected extended clause."

);

2647 return

*std::next(getTrailingObjects<SourceLocation>(), 1);

2652

assert(IsExtended &&

"Expected extended clause."

);

2653 return

*getTrailingObjects<OpenMPDependClauseKind>();

2657 return T

->getClauseKind() == llvm::omp::OMPC_update;

2675

:

OMPClause

(

llvm

::omp::OMPC_capture, StartLoc, EndLoc) {}

2698 return T

->getClauseKind() == llvm::omp::OMPC_capture;

2716

:

OMPClause

(

llvm

::omp::OMPC_compare, StartLoc, EndLoc) {}

2739 return T

->getClauseKind() == llvm::omp::OMPC_compare;

2757

:

OMPClause

(

llvm

::omp::OMPC_seq_cst, StartLoc, EndLoc) {}

2780 return T

->getClauseKind() == llvm::omp::OMPC_seq_cst;

2798

:

OMPClause

(

llvm

::omp::OMPC_acq_rel, StartLoc, EndLoc) {}

2821 return T

->getClauseKind() == llvm::omp::OMPC_acq_rel;

2839

:

OMPClause

(

llvm

::omp::OMPC_acquire, StartLoc, EndLoc) {}

2862 return T

->getClauseKind() == llvm::omp::OMPC_acquire;

2880

:

OMPClause

(

llvm

::omp::OMPC_release, StartLoc, EndLoc) {}

2903 return T

->getClauseKind() == llvm::omp::OMPC_release;

2921

:

OMPClause

(

llvm

::omp::OMPC_relaxed, StartLoc, EndLoc) {}

2944 return T

->getClauseKind() == llvm::omp::OMPC_relaxed;

2984 return T

->getClauseKind() == llvm::omp::OMPC_weak;

3013

this->FailParameter = FailParameter;

3015 "Invalid fail clause parameter"

);

3030

FailParameterLoc(FailParameterLoc), LParenLoc(LParenLoc) {

3032

setFailParameter(FailParameter);

3055 return T

->getClauseKind() == llvm::omp::OMPC_fail;

3080 private

llvm::TrailingObjects<OMPPrivateClause, Expr *> {

3083 friend

TrailingObjects;

3094

LParenLoc, EndLoc, N) {}

3107 void

setPrivateCopies(ArrayRef<Expr *> VL);

3111

MutableArrayRef<Expr *> getPrivateCopies() {

3114

ArrayRef<const Expr *> getPrivateCopies()

const

{

3127 static

OMPPrivateClause *

Create

(

const

ASTContext &

C

, SourceLocation StartLoc,

3128

SourceLocation LParenLoc,

3129

SourceLocation EndLoc, ArrayRef<Expr *> VL,

3130

ArrayRef<Expr *> PrivateVL);

3136 static

OMPPrivateClause *

CreateEmpty

(

const

ASTContext &

C

,

unsigned

N);

3142

llvm::iterator_range<private_copies_const_iterator>;

3146

getPrivateCopies().end());

3151

getPrivateCopies().end());

3172 return T

->getClauseKind() == llvm::omp::OMPC_private;

3187 private

llvm::TrailingObjects<OMPFirstprivateClause, Expr *> {

3190 friend

TrailingObjects;

3201

StartLoc, LParenLoc, EndLoc, N),

3216 void

setPrivateCopies(ArrayRef<Expr *> VL);

3220

MutableArrayRef<Expr *> getPrivateCopies() {

3223

ArrayRef<const Expr *> getPrivateCopies()

const

{

3230 void

setInits(ArrayRef<Expr *> VL);

3234

MutableArrayRef<Expr *> getInits() {

3235 return

MutableArrayRef<Expr *>(getPrivateCopies().end(),

varlist_size

());

3237

ArrayRef<const Expr *> getInits()

const

{

3255 static

OMPFirstprivateClause *

3256 Create

(

const

ASTContext &

C

, SourceLocation StartLoc, SourceLocation LParenLoc,

3257

SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> PrivateVL,

3258

ArrayRef<Expr *> InitVL, Stmt *PreInit);

3264 static

OMPFirstprivateClause *

CreateEmpty

(

const

ASTContext &

C

,

unsigned

N);

3270

llvm::iterator_range<private_copies_const_iterator>;

3274

getPrivateCopies().end());

3278

getPrivateCopies().end());

3287 return inits_range

(getInits().begin(), getInits().end());

3313 return T

->getClauseKind() == llvm::omp::OMPC_firstprivate;

3328 private

llvm::TrailingObjects<OMPLastprivateClause, Expr *> {

3347 friend

TrailingObjects;

3367

StartLoc, LParenLoc, EndLoc, N),

3369

ColonLoc(ColonLoc) {}

3382

MutableArrayRef<Expr *> getPrivateCopies() {

3385

ArrayRef<const Expr *> getPrivateCopies()

const

{

3393 void

setSourceExprs(ArrayRef<Expr *> SrcExprs);

3396

MutableArrayRef<Expr *> getSourceExprs() {

3397 return

MutableArrayRef<Expr *>(getPrivateCopies().end(),

varlist_size

());

3399

ArrayRef<const Expr *> getSourceExprs()

const

{

3407 void

setDestinationExprs(ArrayRef<Expr *> DstExprs);

3410

MutableArrayRef<Expr *> getDestinationExprs() {

3411 return

MutableArrayRef<Expr *>(getSourceExprs().end(),

varlist_size

());

3413

ArrayRef<const Expr *> getDestinationExprs()

const

{

3420 void

setAssignmentOps(ArrayRef<Expr *> AssignmentOps);

3423

MutableArrayRef<Expr *> getAssignmentOps() {

3424 return

MutableArrayRef<Expr *>(getDestinationExprs().end(),

varlist_size

());

3426

ArrayRef<const Expr *> getAssignmentOps()

const

{

3433 void

setKindLoc(SourceLocation

Loc

) { LPKindLoc =

Loc

; }

3435 void

setColonLoc(SourceLocation

Loc

) { ColonLoc =

Loc

; }

3465 static

OMPLastprivateClause *

3466 Create

(

const

ASTContext &

C

, SourceLocation StartLoc, SourceLocation LParenLoc,

3467

SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> SrcExprs,

3468

ArrayRef<Expr *> DstExprs, ArrayRef<Expr *> AssignmentOps,

3470

SourceLocation ColonLoc, Stmt *PreInit, Expr *PostUpdate);

3476 static

OMPLastprivateClause *

CreateEmpty

(

const

ASTContext &

C

,

unsigned

N);

3489

llvm::iterator_range<helper_expr_const_iterator>;

3497

getPrivateCopies().end());

3502

getPrivateCopies().end());

3507

getSourceExprs().end());

3516

getDestinationExprs().end());

3521

getDestinationExprs().end());

3526

getAssignmentOps().end());

3531

getAssignmentOps().end());

3552 return T

->getClauseKind() == llvm::omp::OMPC_lastprivate;

3565 private

llvm::TrailingObjects<OMPSharedClause, Expr *> {

3567 friend

TrailingObjects;

3578

LParenLoc, EndLoc, N) {}

3624 return T

->getClauseKind() == llvm::omp::OMPC_shared;

3639 private

llvm::TrailingObjects<OMPReductionClause, Expr *> {

3642 friend

TrailingObjects;

3676

StartLoc, LParenLoc, EndLoc, N),

3678

ModifierLoc(ModifierLoc), ColonLoc(ColonLoc),

3679

QualifierLoc(QualifierLoc), NameInfo(NameInfo) {}

3694 void

setModifierLoc(SourceLocation

Loc

) { ModifierLoc =

Loc

; }

3697 void

setColonLoc(SourceLocation CL) { ColonLoc = CL; }

3700 void

setNameInfo(DeclarationNameInfo DNI) { NameInfo = DNI; }

3703 void

setQualifierLoc(NestedNameSpecifierLoc NSL) { QualifierLoc = NSL; }

3708 void

setPrivates(ArrayRef<Expr *> Privates);

3711

MutableArrayRef<Expr *> getPrivates() {

3714

ArrayRef<const Expr *> getPrivates()

const

{

3721 void

setLHSExprs(ArrayRef<Expr *> LHSExprs);

3724

MutableArrayRef<Expr *> getLHSExprs() {

3725 return

MutableArrayRef<Expr *>(getPrivates().end(),

varlist_size

());

3727

ArrayRef<const Expr *> getLHSExprs()

const

{

3736 void

setRHSExprs(ArrayRef<Expr *> RHSExprs);

3739

MutableArrayRef<Expr *> getRHSExprs() {

3740 return

MutableArrayRef<Expr *>(getLHSExprs().end(),

varlist_size

());

3742

ArrayRef<const Expr *> getRHSExprs()

const

{

3750 void

setReductionOps(ArrayRef<Expr *> ReductionOps);

3753

MutableArrayRef<Expr *> getReductionOps() {

3754 return

MutableArrayRef<Expr *>(getRHSExprs().end(),

varlist_size

());

3756

ArrayRef<const Expr *> getReductionOps()

const

{

3762 void

setInscanCopyOps(ArrayRef<Expr *> Ops);

3765

MutableArrayRef<Expr *> getInscanCopyOps() {

3766 return

MutableArrayRef<Expr *>(getReductionOps().end(),

varlist_size

());

3768

ArrayRef<const Expr *> getInscanCopyOps()

const

{

3773 void

setInscanCopyArrayTemps(ArrayRef<Expr *> CopyArrayTemps);

3776

MutableArrayRef<Expr *> getInscanCopyArrayTemps() {

3777 return

MutableArrayRef<Expr *>(getInscanCopyOps().end(),

varlist_size

());

3779

ArrayRef<const Expr *> getInscanCopyArrayTemps()

const

{

3784 void

setInscanCopyArrayElems(ArrayRef<Expr *> CopyArrayElems);

3787

MutableArrayRef<Expr *> getInscanCopyArrayElems() {

3788 return

MutableArrayRef<Expr *>(getInscanCopyArrayTemps().end(),

3791

ArrayRef<const Expr *> getInscanCopyArrayElems()

const

{

3835 static

OMPReductionClause *

3836 Create

(

const

ASTContext &

C

, SourceLocation StartLoc, SourceLocation LParenLoc,

3837

SourceLocation ModifierLoc, SourceLocation ColonLoc,

3839

ArrayRef<Expr *> VL, NestedNameSpecifierLoc QualifierLoc,

3840 const

DeclarationNameInfo &NameInfo, ArrayRef<Expr *> Privates,

3841

ArrayRef<Expr *> LHSExprs, ArrayRef<Expr *> RHSExprs,

3842

ArrayRef<Expr *> ReductionOps, ArrayRef<Expr *> CopyOps,

3843

ArrayRef<Expr *> CopyArrayTemps, ArrayRef<Expr *> CopyArrayElems,

3844

Stmt *PreInit, Expr *PostUpdate);

3851 static

OMPReductionClause *

3874

llvm::iterator_range<helper_expr_const_iterator>;

3902

getReductionOps().end());

3907

getReductionOps().end());

3912

getInscanCopyOps().end());

3917

getInscanCopyOps().end());

3922

getInscanCopyArrayTemps().end());

3927

getInscanCopyArrayTemps().end());

3932

getInscanCopyArrayElems().end());

3937

getInscanCopyArrayElems().end());

3960 return T

->getClauseKind() == llvm::omp::OMPC_reduction;

3975 private

llvm::TrailingObjects<OMPTaskReductionClause, Expr *> {

3978 friend

TrailingObjects;

4003 llvm

::omp::OMPC_task_reduction, StartLoc, LParenLoc, EndLoc, N),

4005

QualifierLoc(QualifierLoc), NameInfo(NameInfo) {}

4017 void

setColonLoc(SourceLocation CL) { ColonLoc = CL; }

4020 void

setNameInfo(DeclarationNameInfo DNI) { NameInfo = DNI; }

4023 void

setQualifierLoc(NestedNameSpecifierLoc NSL) { QualifierLoc = NSL; }

4027 void

setPrivates(ArrayRef<Expr *> Privates);

4030

MutableArrayRef<Expr *> getPrivates() {

4033

ArrayRef<const Expr *> getPrivates()

const

{

4040 void

setLHSExprs(ArrayRef<Expr *> LHSExprs);

4043

MutableArrayRef<Expr *> getLHSExprs() {

4044 return

MutableArrayRef<Expr *>(getPrivates().end(),

varlist_size

());

4046

ArrayRef<const Expr *> getLHSExprs()

const

{

4054 void

setRHSExprs(ArrayRef<Expr *> RHSExprs);

4057

MutableArrayRef<Expr *> getRHSExprs() {

4058 return

MutableArrayRef<Expr *>(getLHSExprs().end(),

varlist_size

());

4060

ArrayRef<const Expr *> getRHSExprs()

const

{

4068 void

setReductionOps(ArrayRef<Expr *> ReductionOps);

4071

MutableArrayRef<Expr *> getReductionOps() {

4072 return

MutableArrayRef<Expr *>(getRHSExprs().end(),

varlist_size

());

4074

ArrayRef<const Expr *> getReductionOps()

const

{

4111 static

OMPTaskReductionClause *

4112 Create

(

const

ASTContext &

C

, SourceLocation StartLoc, SourceLocation LParenLoc,

4113

SourceLocation ColonLoc, SourceLocation EndLoc, ArrayRef<Expr *> VL,

4114

NestedNameSpecifierLoc QualifierLoc,

4115 const

DeclarationNameInfo &NameInfo, ArrayRef<Expr *> Privates,

4116

ArrayRef<Expr *> LHSExprs, ArrayRef<Expr *> RHSExprs,

4117

ArrayRef<Expr *> ReductionOps, Stmt *PreInit, Expr *PostUpdate);

4123 static

OMPTaskReductionClause *

CreateEmpty

(

const

ASTContext &

C

,

unsigned

N);

4138

llvm::iterator_range<helper_expr_const_iterator>;

4166

getReductionOps().end());

4171

getReductionOps().end());

4192 return T

->getClauseKind() == llvm::omp::OMPC_task_reduction;

4206 private

llvm::TrailingObjects<OMPInReductionClause, Expr *> {

4209 friend

TrailingObjects;

4234

StartLoc, LParenLoc, EndLoc, N),

4236

QualifierLoc(QualifierLoc), NameInfo(NameInfo) {}

4248 void

setColonLoc(SourceLocation CL) { ColonLoc = CL; }

4251 void

setNameInfo(DeclarationNameInfo DNI) { NameInfo = DNI; }

4254 void

setQualifierLoc(NestedNameSpecifierLoc NSL) { QualifierLoc = NSL; }

4258 void

setPrivates(ArrayRef<Expr *> Privates);

4261

MutableArrayRef<Expr *> getPrivates() {

4264

ArrayRef<const Expr *> getPrivates()

const

{

4271 void

setLHSExprs(ArrayRef<Expr *> LHSExprs);

4274

MutableArrayRef<Expr *> getLHSExprs() {

4275 return

MutableArrayRef<Expr *>(getPrivates().end(),

varlist_size

());

4277

ArrayRef<const Expr *> getLHSExprs()

const

{

4285 void

setRHSExprs(ArrayRef<Expr *> RHSExprs);

4288

MutableArrayRef<Expr *> getRHSExprs() {

4289 return

MutableArrayRef<Expr *>(getLHSExprs().end(),

varlist_size

());

4291

ArrayRef<const Expr *> getRHSExprs()

const

{

4299 void

setReductionOps(ArrayRef<Expr *> ReductionOps);

4302

MutableArrayRef<Expr *> getReductionOps() {

4303 return

MutableArrayRef<Expr *>(getRHSExprs().end(),

varlist_size

());

4305

ArrayRef<const Expr *> getReductionOps()

const

{

4310 void

setTaskgroupDescriptors(ArrayRef<Expr *> ReductionOps);

4313

MutableArrayRef<Expr *> getTaskgroupDescriptors() {

4314 return

MutableArrayRef<Expr *>(getReductionOps().end(),

varlist_size

());

4316

ArrayRef<const Expr *> getTaskgroupDescriptors()

const

{

4355 static

OMPInReductionClause *

4356 Create

(

const

ASTContext &

C

, SourceLocation StartLoc, SourceLocation LParenLoc,

4357

SourceLocation ColonLoc, SourceLocation EndLoc, ArrayRef<Expr *> VL,

4358

NestedNameSpecifierLoc QualifierLoc,

4359 const

DeclarationNameInfo &NameInfo, ArrayRef<Expr *> Privates,

4360

ArrayRef<Expr *> LHSExprs, ArrayRef<Expr *> RHSExprs,

4361

ArrayRef<Expr *> ReductionOps, ArrayRef<Expr *> TaskgroupDescriptors,

4362

Stmt *PreInit, Expr *PostUpdate);

4368 static

OMPInReductionClause *

CreateEmpty

(

const

ASTContext &

C

,

unsigned

N);

4383

llvm::iterator_range<helper_expr_const_iterator>;

4411

getReductionOps().end());

4416

getReductionOps().end());

4421

getTaskgroupDescriptors().end());

4426

getTaskgroupDescriptors().end());

4447 return T

->getClauseKind() == llvm::omp::OMPC_in_reduction;

4462 private

llvm::TrailingObjects<OMPLinearClause, Expr *> {

4465 friend

TrailingObjects;

4480 void

setStep(

Expr

*Step) { *(getFinals().end()) = Step; }

4483 void

setCalcStep(

Expr

*CalcStep) { *(getFinals().end() + 1) = CalcStep; }

4493

OMPLinearClause(SourceLocation StartLoc, SourceLocation LParenLoc,

4495

SourceLocation ColonLoc, SourceLocation StepModifierLoc,

4496

SourceLocation EndLoc,

unsigned

NumVars)

4497

: OMPVarListClause<OMPLinearClause>(

llvm

::omp::OMPC_linear, StartLoc,

4498

LParenLoc, EndLoc, NumVars),

4499

OMPClauseWithPostUpdate(this), Modifier(Modifier),

4500

ModifierLoc(ModifierLoc), ColonLoc(ColonLoc),

4501

StepModifierLoc(StepModifierLoc) {}

4506 explicit

OMPLinearClause(

unsigned

NumVars)

4507

: OMPVarListClause<OMPLinearClause>(

llvm

::omp::OMPC_linear,

4508

SourceLocation(), SourceLocation(),

4509

SourceLocation(), NumVars),

4524

MutableArrayRef<Expr *> getPrivates() {

4527

ArrayRef<const Expr *> getPrivates()

const

{

4531

MutableArrayRef<Expr *> getInits() {

4532 return

MutableArrayRef<Expr *>(getPrivates().end(),

varlist_size

());

4534

ArrayRef<const Expr *> getInits()

const

{

4539

MutableArrayRef<Expr *> getUpdates() {

4540 return

MutableArrayRef<Expr *>(getInits().end(),

varlist_size

());

4542

ArrayRef<const Expr *> getUpdates()

const

{

4547

MutableArrayRef<Expr *> getFinals() {

4548 return

MutableArrayRef<Expr *>(getUpdates().end(),

varlist_size

());

4550

ArrayRef<const Expr *> getFinals()

const

{

4555

MutableArrayRef<Expr *> getUsedExprs() {

4556 return

MutableArrayRef<Expr *>(getFinals().end() + 2,

varlist_size

() + 1);

4558

ArrayRef<const Expr *> getUsedExprs()

const

{

4564 void

setPrivates(ArrayRef<Expr *> PL);

4568 void

setInits(ArrayRef<Expr *> IL);

4591 static

OMPLinearClause *

4592 Create

(

const

ASTContext &

C

, SourceLocation StartLoc, SourceLocation LParenLoc,

4594

SourceLocation ColonLoc, SourceLocation StepModifierLoc,

4595

SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> PL,

4596

ArrayRef<Expr *> IL, Expr *Step, Expr *CalcStep, Stmt *PreInit,

4603 static

OMPLinearClause *

CreateEmpty

(

const

ASTContext &

C

,

unsigned

NumVars);

4658 return privates_range

(getPrivates().begin(), getPrivates().end());

4671 return inits_range

(getInits().begin(), getInits().end());

4684 return updates_range

(getUpdates().begin(), getUpdates().end());

4697 return finals_range

(getFinals().begin(), getFinals().end());

4707

llvm::iterator_range<used_expressions_iterator>;

4709

llvm::iterator_range<used_expressions_const_iterator>;

4712 return finals_range

(getUsedExprs().begin(), getUsedExprs().end());

4737 return T

->getClauseKind() == llvm::omp::OMPC_linear;

4751 private

llvm::TrailingObjects<OMPAlignedClause, Expr *> {

4754 friend

TrailingObjects;

4773

LParenLoc, EndLoc, NumVars),

4774

ColonLoc(ColonLoc) {}

4779 explicit

OMPAlignedClause(

unsigned

NumVars)

4780

: OMPVarListClause<OMPAlignedClause>(

llvm

::omp::OMPC_aligned,

4781

SourceLocation(), SourceLocation(),

4782

SourceLocation(), NumVars) {}

4794 static

OMPAlignedClause *

Create

(

const

ASTContext &

C

, SourceLocation StartLoc,

4795

SourceLocation LParenLoc,

4796

SourceLocation ColonLoc,

4797

SourceLocation EndLoc, ArrayRef<Expr *> VL,

4804 static

OMPAlignedClause *

CreateEmpty

(

const

ASTContext &

C

,

unsigned

NumVars);

4836 return T

->getClauseKind() == llvm::omp::OMPC_aligned;

4849 private

llvm::TrailingObjects<OMPCopyinClause, Expr *> {

4865 friend

TrailingObjects;

4876

LParenLoc, EndLoc, N) {}

4889 void

setSourceExprs(ArrayRef<Expr *> SrcExprs);

4892

MutableArrayRef<Expr *> getSourceExprs() {

4895

ArrayRef<const Expr *> getSourceExprs()

const

{

4902 void

setDestinationExprs(ArrayRef<Expr *> DstExprs);

4905

MutableArrayRef<Expr *> getDestinationExprs() {

4906 return

MutableArrayRef<Expr *>(getSourceExprs().end(),

varlist_size

());

4908

ArrayRef<const Expr *> getDestinationExprs()

const

{

4916 void

setAssignmentOps(ArrayRef<Expr *> AssignmentOps);

4919

MutableArrayRef<Expr *> getAssignmentOps() {

4920 return

MutableArrayRef<Expr *>(getDestinationExprs().end(),

varlist_size

());

4922

ArrayRef<const Expr *> getAssignmentOps()

const

{

4948 static

OMPCopyinClause *

4949 Create

(

const

ASTContext &

C

, SourceLocation StartLoc, SourceLocation LParenLoc,

4950

SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> SrcExprs,

4951

ArrayRef<Expr *> DstExprs, ArrayRef<Expr *> AssignmentOps);

4957 static

OMPCopyinClause *

CreateEmpty

(

const

ASTContext &

C

,

unsigned

N);

4963

llvm::iterator_range<helper_expr_const_iterator>;

4967

getSourceExprs().end());

4976

getDestinationExprs().end());

4981

getDestinationExprs().end());

4986

getAssignmentOps().end());

4991

getAssignmentOps().end());

5012 return T

->getClauseKind() == llvm::omp::OMPC_copyin;

5026 private

llvm::TrailingObjects<OMPCopyprivateClause, Expr *> {

5029 friend

TrailingObjects;

5040

StartLoc, LParenLoc, EndLoc, N) {

5054 void

setSourceExprs(ArrayRef<Expr *> SrcExprs);

5057

MutableArrayRef<Expr *> getSourceExprs() {

5060

ArrayRef<const Expr *> getSourceExprs()

const

{

5067 void

setDestinationExprs(ArrayRef<Expr *> DstExprs);

5070

MutableArrayRef<Expr *> getDestinationExprs() {

5071 return

MutableArrayRef<Expr *>(getSourceExprs().end(),

varlist_size

());

5073

ArrayRef<const Expr *> getDestinationExprs()

const

{

5081 void

setAssignmentOps(ArrayRef<Expr *> AssignmentOps);

5084

MutableArrayRef<Expr *> getAssignmentOps() {

5085 return

MutableArrayRef<Expr *>(getDestinationExprs().end(),

varlist_size

());

5087

ArrayRef<const Expr *> getAssignmentOps()

const

{

5112 static

OMPCopyprivateClause *

5113 Create

(

const

ASTContext &

C

, SourceLocation StartLoc, SourceLocation LParenLoc,

5114

SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> SrcExprs,

5115

ArrayRef<Expr *> DstExprs, ArrayRef<Expr *> AssignmentOps);

5121 static

OMPCopyprivateClause *

CreateEmpty

(

const

ASTContext &

C

,

unsigned

N);

5127

llvm::iterator_range<helper_expr_const_iterator>;

5131

getSourceExprs().end());

5140

getDestinationExprs().end());

5145

getDestinationExprs().end());

5150

getAssignmentOps().end());

5155

getAssignmentOps().end());

5176 return T

->getClauseKind() == llvm::omp::OMPC_copyprivate;

5194 private

llvm::TrailingObjects<OMPFlushClause, Expr *> {

5196 friend

TrailingObjects;

5207

LParenLoc, EndLoc, N) {}

5253 return T

->getClauseKind() == llvm::omp::OMPC_flush;

5276 Expr

*Depobj =

nullptr

;

5286

LParenLoc(LParenLoc) {}

5293 void

setDepobj(Expr *

E

) { Depobj =

E

; }

5296 void

setLParenLoc(SourceLocation

Loc

) { LParenLoc =

Loc

; }

5306 static

OMPDepobjClause *

Create

(

const

ASTContext &

C

, SourceLocation StartLoc,

5307

SourceLocation LParenLoc,

5308

SourceLocation EndLoc, Expr *Depobj);

5313 static

OMPDepobjClause *

CreateEmpty

(

const

ASTContext &

C

);

5324 reinterpret_cast<Stmt

**

>

(&Depobj) + 1);

5340 return T

->getClauseKind() == llvm::omp::OMPC_depobj;

5354 private

llvm::TrailingObjects<OMPDependClause, Expr *> {

5357 friend

TrailingObjects;

5379 unsigned

NumLoops = 0;

5392

LParenLoc, EndLoc, N),

5393

NumLoops(NumLoops) {}

5404

NumLoops(NumLoops) {}

5410 void

setDependencyLoc(SourceLocation

Loc

) {

Data

.DepLoc =

Loc

; }

5413 void

setColonLoc(SourceLocation

Loc

) {

Data

.ColonLoc =

Loc

; }

5416 void

setOmpAllMemoryLoc(SourceLocation

Loc

) {

Data

.OmpAllMemoryLoc =

Loc

; }

5419 void

setModifier(Expr *DepModifier);

5432 static

OMPDependClause *

Create

(

const

ASTContext &

C

, SourceLocation StartLoc,

5433

SourceLocation LParenLoc,

5434

SourceLocation EndLoc, DependDataTy Data,

5435

Expr *DepModifier, ArrayRef<Expr *> VL,

5444 static

OMPDependClause *

CreateEmpty

(

const

ASTContext &

C

,

unsigned

N,

5494 return T

->getClauseKind() == llvm::omp::OMPC_depend;

5519 Stmt

*Device =

nullptr

;

5530 void

setModifierLoc(SourceLocation

Loc

) { ModifierLoc =

Loc

; }

5549

ModifierLoc(ModifierLoc),

Device

(

E

) {

5590 return T

->getClauseKind() == llvm::omp::OMPC_device;

5649 return T

->getClauseKind() == llvm::omp::OMPC_simd;

5666

llvm::PointerIntPair<Expr *, 1, bool> AssociatedExpressionNonContiguousPr;

5671 ValueDecl

*AssociatedDeclaration =

nullptr

;

5677 bool

IsNonContiguous)

5678

: AssociatedExpressionNonContiguousPr(AssociatedExpression,

5680

AssociatedDeclaration(

5681

AssociatedDeclaration

5686 return

AssociatedExpressionNonContiguousPr.getPointer();

5690 return

AssociatedExpressionNonContiguousPr.getInt();

5694 return

AssociatedDeclaration;

5748 unsigned

NumUniqueDeclarations;

5751 unsigned

NumComponentLists;

5754 unsigned

NumComponents;

5759 const bool

SupportsMapper;

5793

NumUniqueDeclarations(Sizes.NumUniqueDeclarations),

5794

NumComponentLists(Sizes.NumComponentLists),

5795

NumComponents(Sizes.NumComponents), SupportsMapper(SupportsMapper) {

5796 if

(MapperQualifierLocPtr)

5797

MapperQualifierLoc = *MapperQualifierLocPtr;

5798 if

(MapperIdInfoPtr)

5799

MapperIdInfo = *MapperIdInfoPtr;

5806 static_cast<T

*

>

(

this

)->

template

getTrailingObjects<ValueDecl *>(),

5807

NumUniqueDeclarations);

5814 static_cast<const T

*

>

(

this

)

5815

->

template

getTrailingObjects<ValueDecl *>(),

5816

NumUniqueDeclarations);

5822

assert(UDs.size() == NumUniqueDeclarations &&

5823 "Unexpected amount of unique declarations."

);

5831 static_cast<T

*

>

(

this

)->

template

getTrailingObjects<unsigned>(),

5832

NumUniqueDeclarations);

5839 static_cast<const T

*

>

(

this

)->

template

getTrailingObjects<unsigned>(),

5840

NumUniqueDeclarations);

5846

assert(DNLs.size() == NumUniqueDeclarations &&

5847 "Unexpected amount of list numbers."

);

5855 static_cast<T

*

>

(

this

)->

template

getTrailingObjects<unsigned>() +

5856

NumUniqueDeclarations,

5864 static_cast<const T

*

>

(

this

)->

template

getTrailingObjects<unsigned>() +

5865

NumUniqueDeclarations,

5872

assert(CLSs.size() == NumComponentLists &&

5873 "Unexpected amount of component lists."

);

5880 static_cast<T

*

>

(

this

)

5881

->

template

getTrailingObjects<MappableComponent>(),

5888 static_cast<const T

*

>

(

this

)

5889

->

template

getTrailingObjects<MappableComponent>(),

5898

assert(Components.size() == NumComponents &&

5899 "Unexpected amount of component lists."

);

5900

assert(CLSs.size() == NumComponentLists &&

5901 "Unexpected amount of list sizes."

);

5902

std::copy(Components.begin(), Components.end(),

getComponentsRef

().begin());

5912

NumUniqueDeclarations &&

5913 "Unexpected number of mappable expression info entries!"

);

5915 "Unexpected total number of components!"

);

5916

assert(Declarations.size() == ComponentLists.size() &&

5917 "Declaration and component lists size is not consistent!"

);

5918

assert(Declarations.size() == NumComponentLists &&

5919 "Unexpected declaration and component lists size!"

);

5924

llvm::MapVector<ValueDecl *, SmallVector<MappableExprComponentListRef, 8>>

5927 auto

CI = ComponentLists.begin();

5928 for

(

auto

DI = Declarations.begin(), DE = Declarations.end(); DI != DE;

5930

assert(!CI->empty() &&

"Invalid component list!"

);

5931

ComponentListMap[*DI].push_back(*CI);

5937 auto

UDI = UniqueDeclarations.begin();

5940 auto

DNLI = DeclNumLists.begin();

5943 auto

CLSI = ComponentListSizes.begin();

5946 auto

CI = Components.begin();

5949 unsigned

PrevSize = 0u;

5952 for

(

auto

&M : ComponentListMap) {

5967 for

(

auto C

: CL) {

5969

PrevSize +=

C

.size();

5976

CI = std::copy(

C

.begin(),

C

.end(), CI);

5983

MapperQualifierLoc = NNSL;

5988

MapperIdInfo = MapperId;

5994

assert(SupportsMapper &&

5995 "Must be a clause that is possible to have user-defined mappers"

);

5997 static_cast<T

*

>

(

this

)->

template

getTrailingObjects<Expr *>() +

6005

assert(SupportsMapper &&

6006 "Must be a clause that is possible to have user-defined mappers"

);

6008 static_cast<const T

*

>

(

this

)->

template

getTrailingObjects<Expr *>() +

6017 "Unexpected number of user-defined mappers."

);

6018

assert(SupportsMapper &&

6019 "Must be a clause that is possible to have user-defined mappers"

);

6036 return

MapperQualifierLoc;

6045

:

public

llvm::iterator_adaptor_base<

6046

const_component_lists_iterator,

6047

MappableExprComponentListRef::const_iterator,

6048

std::forward_iterator_tag, MappableComponent, ptrdiff_t,

6049

MappableComponent, MappableComponent> {

6057 const bool

SupportsMapper;

6063 unsigned

RemainingLists = 0;

6067 unsigned

PrevListSize = 0;

6075

MappableExprComponentListRef::const_iterator End;

6085

Components.begin()),

6086

DeclCur(UniqueDecls.begin()), NumListsCur(DeclsListNum.begin()),

6087

SupportsMapper(SupportsMapper),

6088

ListSizeCur(CumulativeListSizes.begin()),

6089

ListSizeEnd(CumulativeListSizes.end()), End(Components.end()) {

6090

assert(UniqueDecls.size() == DeclsListNum.size() &&

6091 "Inconsistent number of declarations and list sizes!"

);

6092 if

(!DeclsListNum.empty())

6093

RemainingLists = *NumListsCur;

6095

MapperCur = Mappers.begin();

6106

CumulativeListSizes, Components,

6107

SupportsMapper, Mappers) {

6111 for

(; DeclCur != UniqueDecls.end(); ++DeclCur, ++NumListsCur) {

6115

assert(*NumListsCur > 0 &&

"No lists associated with declaration??"

);

6119

std::advance(ListSizeCur, *NumListsCur - 1);

6120

PrevListSize = *ListSizeCur;

6129 if

(ListSizeCur == CumulativeListSizes.end()) {

6131

RemainingLists = 0u;

6137

RemainingLists = *NumListsCur;

6140

ListSizeEnd = ListSizeCur;

6141

std::advance(ListSizeEnd, RemainingLists);

6145

std::advance(this->I, PrevListSize);

6153

assert(ListSizeCur != ListSizeEnd &&

"Invalid iterator!"

);

6155 if

(SupportsMapper && *MapperCur)

6156

Mapper = cast<ValueDecl>(cast<DeclRefExpr>(*MapperCur)->getDecl());

6157 return

std::make_tuple(

6170

assert(ListSizeCur != ListSizeEnd && RemainingLists &&

6171 "Invalid iterator!"

);

6175 if

(std::next(ListSizeCur) == ListSizeEnd) {

6179

std::advance(this->I, *ListSizeCur - PrevListSize);

6180

PrevListSize = *ListSizeCur;

6183 if

(!(--RemainingLists)) {

6186

RemainingLists = *NumListsCur;

6187

assert(RemainingLists &&

"No lists in the following declaration??"

);

6199

llvm::iterator_range<const_component_lists_iterator>;

6213

SupportsMapper, {});

6221

const_component_lists_iterator

6247

llvm::iterator_range<const_all_num_lists_iterator>;

6256

llvm::iterator_range<const_all_lists_sizes_iterator>;

6265

llvm::iterator_range<const_all_components_iterator>;

6276

llvm::iterator_range<mapperlist_const_iterator>;

6303 private

llvm::TrailingObjects<

6304

OMPMapClause, Expr *, ValueDecl *, unsigned,

6305

OMPClauseMappableExprCommon::MappableComponent> {

6309 friend

TrailingObjects;

6313 size_t

numTrailingObjects(OverloadToken<Expr *>)

const

{

6318 size_t

numTrailingObjects(OverloadToken<ValueDecl *>)

const

{

6321 size_t

numTrailingObjects(OverloadToken<unsigned>)

const

{

6339 bool

MapTypeIsImplicit =

false

;

6342

SourceLocation MapLoc;

6345

SourceLocation ColonLoc;

6367 explicit

OMPMapClause(ArrayRef<OpenMPMapModifierKind> MapModifiers,

6368

ArrayRef<SourceLocation> MapModifiersLoc,

6369

NestedNameSpecifierLoc MapperQualifierLoc,

6370

DeclarationNameInfo MapperIdInfo,

6372

SourceLocation MapLoc,

const

OMPVarListLocTy &Locs,

6373 const

OMPMappableExprListSizeTy &Sizes)

6374

: OMPMappableExprListClause(

llvm

::omp::OMPC_map, Locs, Sizes,

6375 true

, &MapperQualifierLoc,

6377

MapType(MapType), MapTypeIsImplicit(MapTypeIsImplicit), MapLoc(MapLoc) {

6378

assert(std::size(MapTypeModifiers) == MapModifiers.size() &&

6379 "Unexpected number of map type modifiers."

);

6380

llvm::copy(MapModifiers, std::begin(MapTypeModifiers));

6382

assert(std::size(MapTypeModifiersLoc) == MapModifiersLoc.size() &&

6383 "Unexpected number of map type modifier locations."

);

6384

llvm::copy(MapModifiersLoc, std::begin(MapTypeModifiersLoc));

6394 explicit

OMPMapClause(

const

OMPMappableExprListSizeTy &Sizes)

6395

: OMPMappableExprListClause(

llvm

::omp::OMPC_map, OMPVarListLocTy(), Sizes,

6404 "Unexpected index to store map type modifier, exceeds array size."

);

6405

MapTypeModifiers[I] =

T

;

6412 void

setMapTypeModifierLoc(

unsigned

I, SourceLocation TLoc) {

6414 "Index to store map type modifier location exceeds array size."

);

6415

MapTypeModifiersLoc[I] = TLoc;

6426 void

setMapLoc(SourceLocation TLoc) { MapLoc = TLoc; }

6429 void

setColonLoc(SourceLocation

Loc

) { ColonLoc =

Loc

; }

6432 void

setIteratorModifier(Expr *IteratorModifier) {

6433

getTrailingObjects<Expr *>()[2 *

varlist_size

()] = IteratorModifier;

6457 static

OMPMapClause *

6458 Create

(

const

ASTContext &

C

,

const

OMPVarListLocTy &Locs,

6459

ArrayRef<Expr *> Vars, ArrayRef<ValueDecl *> Declarations,

6461

ArrayRef<Expr *> UDMapperRefs, Expr *IteratorModifier,

6462

ArrayRef<OpenMPMapModifierKind> MapModifiers,

6463

ArrayRef<SourceLocation> MapModifiersLoc,

6464

NestedNameSpecifierLoc UDMQualifierLoc, DeclarationNameInfo MapperId,

6477 static

OMPMapClause *

CreateEmpty

(

const

ASTContext &

C

,

6478 const

OMPMappableExprListSizeTy &Sizes);

6482 return

getTrailingObjects<Expr *>()[2 *

varlist_size

()];

6500 "Requested modifier exceeds the total number of modifiers."

);

6501 return

MapTypeModifiers[Cnt];

6510 "Requested modifier location exceeds total number of modifiers."

);

6511 return

MapTypeModifiersLoc[Cnt];

6542 if

(MapType == OMPC_MAP_to || MapType == OMPC_MAP_tofrom)

6554 return T

->getClauseKind() == llvm::omp::OMPC_map;

6576 private

llvm::TrailingObjects<OMPNumTeamsClause, Expr *> {

6578 friend

TrailingObjects;

6585

:

OMPVarListClause

(llvm::omp::OMPC_num_teams, StartLoc, LParenLoc, EndLoc,

6647 return T

->getClauseKind() == llvm::omp::OMPC_num_teams;

6669 private

llvm::TrailingObjects<OMPThreadLimitClause, Expr *> {

6671 friend

TrailingObjects;

6741 return T

->getClauseKind() == llvm::omp::OMPC_thread_limit;

6815 return T

->getClauseKind() == llvm::omp::OMPC_priority;

6840 Stmt

*Grainsize =

nullptr

;

6843 void

setGrainsize(

Expr

*Size) { Grainsize = Size; }

6849 void

setModifierLoc(SourceLocation

Loc

) { ModifierLoc =

Loc

; }

6867

:

OMPClause

(

llvm

::omp::OMPC_grainsize, StartLoc, EndLoc),

6869

ModifierLoc(ModifierLoc), Grainsize(Size) {

6907 return T

->getClauseKind() == llvm::omp::OMPC_grainsize;

6924

:

OMPClause

(

llvm

::omp::OMPC_nogroup, StartLoc, EndLoc) {}

6947 return T

->getClauseKind() == llvm::omp::OMPC_nogroup;

6972 Stmt

*NumTasks =

nullptr

;

6975 void

setNumTasks(

Expr

*Size) { NumTasks = Size; }

6981 void

setModifierLoc(SourceLocation

Loc

) { ModifierLoc =

Loc

; }

6999

:

OMPClause

(

llvm

::omp::OMPC_num_tasks, StartLoc, EndLoc),

7001

ModifierLoc(ModifierLoc), NumTasks(Size) {

7039 return T

->getClauseKind() == llvm::omp::OMPC_num_tasks;

7057 Stmt

*Hint =

nullptr

;

7060 void

setHint(

Expr

*H) { Hint = H; }

7071

:

OMPClause

(

llvm

::omp::OMPC_hint, StartLoc, EndLoc), LParenLoc(LParenLoc),

7101 return T

->getClauseKind() == llvm::omp::OMPC_hint;

7129 Expr

*ChunkSize =

nullptr

;

7144 void

setDistScheduleKindLoc(SourceLocation KLoc) { KindLoc = KLoc; }

7149 void

setCommaLoc(SourceLocation

Loc

) { CommaLoc =

Loc

; }

7154 void

setChunkSize(Expr *

E

) { ChunkSize =

E

; }

7172 Stmt

*HelperChunkSize)

7173

:

OMPClause

(

llvm

::omp::OMPC_dist_schedule, StartLoc, EndLoc),

7175

KindLoc(KLoc), CommaLoc(CommaLoc), ChunkSize(ChunkSize) {

7205 reinterpret_cast<Stmt

**

>

(&ChunkSize) + 1);

7221 return T

->getClauseKind() == llvm::omp::OMPC_dist_schedule;

7263 void

setDefaultmapModifierLoc(SourceLocation

Loc

) {

7270 void

setLParenLoc(SourceLocation

Loc

) { LParenLoc =

Loc

; }

7275 void

setDefaultmapKindLoc(SourceLocation KLoc) { KindLoc = KLoc; }

7291

:

OMPClause

(

llvm

::omp::OMPC_defaultmap, StartLoc, EndLoc),

7292

LParenLoc(LParenLoc), Modifier(M), ModifierLoc(MLoc),

Kind

(

Kind

),

7335 return T

->getClauseKind() == llvm::omp::OMPC_defaultmap;

7348 private

llvm::TrailingObjects<

7349

OMPToClause, Expr *, ValueDecl *, unsigned,

7350

OMPClauseMappableExprCommon::MappableComponent> {

7354 friend

TrailingObjects;

7388 true

, &MapperQualifierLoc,

7390

assert(std::size(MotionModifiers) == TheMotionModifiers.size() &&

7391 "Unexpected number of motion modifiers."

);

7392

llvm::copy(TheMotionModifiers, std::begin(MotionModifiers));

7394

assert(std::size(MotionModifiersLoc) == TheMotionModifiersLoc.size() &&

7395 "Unexpected number of motion modifier locations."

);

7396

llvm::copy(TheMotionModifiersLoc, std::begin(MotionModifiersLoc));

7406 explicit

OMPToClause(

const

OMPMappableExprListSizeTy &Sizes)

7407

: OMPMappableExprListClause(

llvm

::omp::OMPC_to, OMPVarListLocTy(), Sizes,

7416 "Unexpected index to store motion modifier, exceeds array size."

);

7417

MotionModifiers[I] =

T

;

7424 void

setMotionModifierLoc(

unsigned

I, SourceLocation TLoc) {

7426 "Index to store motion modifier location exceeds array size."

);

7427

MotionModifiersLoc[I] = TLoc;

7431 void

setColonLoc(SourceLocation

Loc

) { ColonLoc =

Loc

; }

7435 size_t

numTrailingObjects(OverloadToken<Expr *>)

const

{

7440 size_t

numTrailingObjects(OverloadToken<ValueDecl *>)

const

{

7443 size_t

numTrailingObjects(OverloadToken<unsigned>)

const

{

7464 static

OMPToClause *

Create

(

const

ASTContext &

C

,

const

OMPVarListLocTy &Locs,

7465

ArrayRef<Expr *> Vars,

7466

ArrayRef<ValueDecl *> Declarations,

7468

ArrayRef<Expr *> UDMapperRefs,

7469

ArrayRef<OpenMPMotionModifierKind> MotionModifiers,

7470

ArrayRef<SourceLocation> MotionModifiersLoc,

7471

NestedNameSpecifierLoc UDMQualifierLoc,

7472

DeclarationNameInfo MapperId);

7482 static

OMPToClause *

CreateEmpty

(

const

ASTContext &

C

,

7483 const

OMPMappableExprListSizeTy &Sizes);

7490 "Requested modifier exceeds the total number of modifiers."

);

7491 return

MotionModifiers[Cnt];

7500 "Requested modifier location exceeds total number of modifiers."

);

7501 return

MotionModifiersLoc[Cnt];

7535 return T

->getClauseKind() == llvm::omp::OMPC_to;

7549 private

llvm::TrailingObjects<

7550

OMPFromClause, Expr *, ValueDecl *, unsigned,

7551

OMPClauseMappableExprCommon::MappableComponent> {

7555 friend

TrailingObjects;

7589 true

, &MapperQualifierLoc,

7591

assert(std::size(MotionModifiers) == TheMotionModifiers.size() &&

7592 "Unexpected number of motion modifiers."

);

7593

llvm::copy(TheMotionModifiers, std::begin(MotionModifiers));

7595

assert(std::size(MotionModifiersLoc) == TheMotionModifiersLoc.size() &&

7596 "Unexpected number of motion modifier locations."

);

7597

llvm::copy(TheMotionModifiersLoc, std::begin(MotionModifiersLoc));

7607 explicit

OMPFromClause(

const

OMPMappableExprListSizeTy &Sizes)

7608

: OMPMappableExprListClause(

llvm

::omp::OMPC_from, OMPVarListLocTy(),

7617 "Unexpected index to store motion modifier, exceeds array size."

);

7618

MotionModifiers[I] =

T

;

7625 void

setMotionModifierLoc(

unsigned

I, SourceLocation TLoc) {

7627 "Index to store motion modifier location exceeds array size."

);

7628

MotionModifiersLoc[I] = TLoc;

7632 void

setColonLoc(SourceLocation

Loc

) { ColonLoc =

Loc

; }

7636 size_t

numTrailingObjects(OverloadToken<Expr *>)

const

{

7641 size_t

numTrailingObjects(OverloadToken<ValueDecl *>)

const

{

7644 size_t

numTrailingObjects(OverloadToken<unsigned>)

const

{

7665 static

OMPFromClause *

7666 Create

(

const

ASTContext &

C

,

const

OMPVarListLocTy &Locs,

7667

ArrayRef<Expr *> Vars, ArrayRef<ValueDecl *> Declarations,

7669

ArrayRef<Expr *> UDMapperRefs,

7670

ArrayRef<OpenMPMotionModifierKind> MotionModifiers,

7671

ArrayRef<SourceLocation> MotionModifiersLoc,

7672

NestedNameSpecifierLoc UDMQualifierLoc, DeclarationNameInfo MapperId);

7682 static

OMPFromClause *

CreateEmpty

(

const

ASTContext &

C

,

7683 const

OMPMappableExprListSizeTy &Sizes);

7690 "Requested modifier exceeds the total number of modifiers."

);

7691 return

MotionModifiers[Cnt];

7700 "Requested modifier location exceeds total number of modifiers."

);

7701 return

MotionModifiersLoc[Cnt];

7735 return T

->getClauseKind() == llvm::omp::OMPC_from;

7749 private

llvm::TrailingObjects<

7750

OMPUseDevicePtrClause, Expr *, ValueDecl *, unsigned,

7751

OMPClauseMappableExprCommon::MappableComponent> {

7755 friend

TrailingObjects;

7785 size_t

numTrailingObjects(OverloadToken<Expr *>)

const

{

7788 size_t

numTrailingObjects(OverloadToken<ValueDecl *>)

const

{

7791 size_t

numTrailingObjects(OverloadToken<unsigned>)

const

{

7798 void

setPrivateCopies(ArrayRef<Expr *> VL);

7802

MutableArrayRef<Expr *> getPrivateCopies() {

7805

ArrayRef<const Expr *> getPrivateCopies()

const

{

7812 void

setInits(ArrayRef<Expr *> VL);

7816

MutableArrayRef<Expr *> getInits() {

7817 return

MutableArrayRef<Expr *>(getPrivateCopies().end(),

varlist_size

());

7819

ArrayRef<const Expr *> getInits()

const

{

7835 static

OMPUseDevicePtrClause *

7836 Create

(

const

ASTContext &

C

,

const

OMPVarListLocTy &Locs,

7837

ArrayRef<Expr *> Vars, ArrayRef<Expr *> PrivateVars,

7838

ArrayRef<Expr *> Inits, ArrayRef<ValueDecl *> Declarations,

7849 static

OMPUseDevicePtrClause *

7850 CreateEmpty

(

const

ASTContext &

C

,

const

OMPMappableExprListSizeTy &Sizes);

7856

llvm::iterator_range<private_copies_const_iterator>;

7860

getPrivateCopies().end());

7865

getPrivateCopies().end());

7874 return inits_range

(getInits().begin(), getInits().end());

7899 return T

->getClauseKind() == llvm::omp::OMPC_use_device_ptr;

7913 private

llvm::TrailingObjects<

7914

OMPUseDeviceAddrClause, Expr *, ValueDecl *, unsigned,

7915

OMPClauseMappableExprCommon::MappableComponent> {

7919 friend

TrailingObjects;

7949 size_t

numTrailingObjects(OverloadToken<Expr *>)

const

{

7952 size_t

numTrailingObjects(OverloadToken<ValueDecl *>)

const

{

7955 size_t

numTrailingObjects(OverloadToken<unsigned>)

const

{

7969 static

OMPUseDeviceAddrClause *

7970 Create

(

const

ASTContext &

C

,

const

OMPVarListLocTy &Locs,

7971

ArrayRef<Expr *> Vars, ArrayRef<ValueDecl *> Declarations,

7982 static

OMPUseDeviceAddrClause *

7983 CreateEmpty

(

const

ASTContext &

C

,

const

OMPMappableExprListSizeTy &Sizes);

8003 return T

->getClauseKind() == llvm::omp::OMPC_use_device_addr;

8017 private

llvm::TrailingObjects<

8018

OMPIsDevicePtrClause, Expr *, ValueDecl *, unsigned,

8019

OMPClauseMappableExprCommon::MappableComponent> {

8023 friend

TrailingObjects;

8052 size_t

numTrailingObjects(OverloadToken<Expr *>)

const

{

8055 size_t

numTrailingObjects(OverloadToken<ValueDecl *>)

const

{

8058 size_t

numTrailingObjects(OverloadToken<unsigned>)

const

{

8072 static

OMPIsDevicePtrClause *

8073 Create

(

const

ASTContext &

C

,

const

OMPVarListLocTy &Locs,

8074

ArrayRef<Expr *> Vars, ArrayRef<ValueDecl *> Declarations,

8085 static

OMPIsDevicePtrClause *

8086 CreateEmpty

(

const

ASTContext &

C

,

const

OMPMappableExprListSizeTy &Sizes);

8106 return T

->getClauseKind() == llvm::omp::OMPC_is_device_ptr;

8120 private

llvm::TrailingObjects<

8121

OMPHasDeviceAddrClause, Expr *, ValueDecl *, unsigned,

8122

OMPClauseMappableExprCommon::MappableComponent> {

8126 friend

TrailingObjects;

8156 size_t

numTrailingObjects(OverloadToken<Expr *>)

const

{

8159 size_t

numTrailingObjects(OverloadToken<ValueDecl *>)

const

{

8162 size_t

numTrailingObjects(OverloadToken<unsigned>)

const

{

8176 static

OMPHasDeviceAddrClause *

8177 Create

(

const

ASTContext &

C

,

const

OMPVarListLocTy &Locs,

8178

ArrayRef<Expr *> Vars, ArrayRef<ValueDecl *> Declarations,

8189 static

OMPHasDeviceAddrClause *

8190 CreateEmpty

(

const

ASTContext &

C

,

const

OMPMappableExprListSizeTy &Sizes);

8210 return T

->getClauseKind() == llvm::omp::OMPC_has_device_addr;

8223 private

llvm::TrailingObjects<OMPNontemporalClause, Expr *> {

8226 friend

TrailingObjects;

8237

StartLoc, LParenLoc, EndLoc, N) {

8250

MutableArrayRef<Expr *> getPrivateRefs() {

8253

ArrayRef<const Expr *> getPrivateRefs()

const

{

8265 static

OMPNontemporalClause *

8266 Create

(

const

ASTContext &

C

, SourceLocation StartLoc, SourceLocation LParenLoc,

8267

SourceLocation EndLoc, ArrayRef<Expr *> VL);

8273 static

OMPNontemporalClause *

CreateEmpty

(

const

ASTContext &

C

,

unsigned

N);

8290 return child_range

(

reinterpret_cast<Stmt

**

>

(getPrivateRefs().begin()),

8291 reinterpret_cast<Stmt

**

>

(getPrivateRefs().end()));

8307 return T

->getClauseKind() == llvm::omp::OMPC_nontemporal;

8354 void

setModifierKwLoc(SourceLocation MLoc) { ModifierKwLoc = MLoc; }

8371

LParenLoc(LParenLoc),

Kind

(A), KindKwLoc(ALoc), Modifier(Modifier),

8372

ModifierKwLoc(MLoc) {}

8412 return T

->getClauseKind() == llvm::omp::OMPC_order;

8423 private

llvm::TrailingObjects<OMPInitClause, Expr *> {

8426 friend

TrailingObjects;

8431 bool

IsTarget =

false

;

8432 bool

IsTargetSync =

false

;

8436 void

setIsTarget(

bool V

) { IsTarget =

V

; }

8438 void

setIsTargetSync(

bool V

) { IsTargetSync =

V

; }

8441 void

setVarLoc(SourceLocation

Loc

) { VarLoc =

Loc

; }

8452

OMPInitClause(

bool

IsTarget,

bool

IsTargetSync, SourceLocation StartLoc,

8453

SourceLocation LParenLoc, SourceLocation VarLoc,

8454

SourceLocation EndLoc,

unsigned

N)

8455

: OMPVarListClause<OMPInitClause>(

llvm

::omp::OMPC_init, StartLoc,

8456

LParenLoc, EndLoc, N),

8457

VarLoc(VarLoc), IsTarget(IsTarget), IsTargetSync(IsTargetSync) {}

8460

OMPInitClause(

unsigned

N)

8461

: OMPVarListClause<OMPInitClause>(

llvm

::omp::OMPC_init, SourceLocation(),

8462

SourceLocation(), SourceLocation(), N) {

8475 static

OMPInitClause *

Create

(

const

ASTContext &

C

, Expr *InteropVar,

8476

OMPInteropInfo &InteropInfo,

8477

SourceLocation StartLoc,

8478

SourceLocation LParenLoc, SourceLocation VarLoc,

8479

SourceLocation EndLoc);

8485 static

OMPInitClause *

CreateEmpty

(

const

ASTContext &

C

,

unsigned

N);

8533 return T

->getClauseKind() == llvm::omp::OMPC_init;

8552 Stmt

*InteropVar =

nullptr

;

8555 void

setInteropVar(

Expr

*

E

) { InteropVar =

E

; }

8561 void

setVarLoc(SourceLocation

Loc

) { VarLoc =

Loc

; }

8574

:

OMPClause

(

llvm

::omp::OMPC_use, StartLoc, EndLoc), LParenLoc(LParenLoc),

8575

VarLoc(VarLoc), InteropVar(InteropVar) {}

8604 return T

->getClauseKind() == llvm::omp::OMPC_use;

8627 Stmt

*InteropVar =

nullptr

;

8630 void

setInteropVar(

Expr

*

E

) { InteropVar =

E

; }

8636 void

setVarLoc(SourceLocation

Loc

) { VarLoc =

Loc

; }

8650

LParenLoc(LParenLoc), VarLoc(VarLoc), InteropVar(InteropVar) {}

8657

:

OMPClause

(

llvm

::omp::OMPC_destroy, StartLoc, EndLoc) {}

8675 return child_range

(&InteropVar, &InteropVar + 1);

8693 return T

->getClauseKind() == llvm::omp::OMPC_destroy;

8710 void

setCondition(

Expr

*Cond) {

setStmt

(Cond); }

8757 void

setCondition(

Expr

*Cond) {

setStmt

(Cond); }

8831 private

llvm::TrailingObjects<OMPInclusiveClause, Expr *> {

8834 friend

TrailingObjects;

8845

StartLoc, LParenLoc, EndLoc, N) {}

8863 static

OMPInclusiveClause *

Create

(

const

ASTContext &

C

,

8864

SourceLocation StartLoc,

8865

SourceLocation LParenLoc,

8866

SourceLocation EndLoc, ArrayRef<Expr *> VL);

8872 static

OMPInclusiveClause *

CreateEmpty

(

const

ASTContext &

C

,

unsigned

N);

8892 return T

->getClauseKind() == llvm::omp::OMPC_inclusive;

8905 private

llvm::TrailingObjects<OMPExclusiveClause, Expr *> {

8908 friend

TrailingObjects;

8919

StartLoc, LParenLoc, EndLoc, N) {}

8937 static

OMPExclusiveClause *

Create

(

const

ASTContext &

C

,

8938

SourceLocation StartLoc,

8939

SourceLocation LParenLoc,

8940

SourceLocation EndLoc, ArrayRef<Expr *> VL);

8946 static

OMPExclusiveClause *

CreateEmpty

(

const

ASTContext &

C

,

unsigned

N);

8966 return T

->getClauseKind() == llvm::omp::OMPC_exclusive;

8980 private

llvm::TrailingObjects<OMPUsesAllocatorsClause, Expr *,

8995 friend

TrailingObjects;

8997 enum class

ExprOffsets {

9003 enum class

ParenLocsOffsets {

9010

SourceLocation LParenLoc;

9012 unsigned

NumOfAllocators = 0;

9020

OMPUsesAllocatorsClause(SourceLocation StartLoc, SourceLocation LParenLoc,

9021

SourceLocation EndLoc,

unsigned

N)

9022

: OMPClause(

llvm

::omp::OMPC_uses_allocators, StartLoc, EndLoc),

9023

LParenLoc(LParenLoc), NumOfAllocators(N) {}

9028 explicit

OMPUsesAllocatorsClause(

unsigned

N)

9029

:

OMPClause

(

llvm

::omp::OMPC_uses_allocators, SourceLocation(),

9031

NumOfAllocators(N) {}

9033 unsigned

numTrailingObjects(OverloadToken<Expr *>)

const

{

9034 return

NumOfAllocators *

static_cast<int>

(ExprOffsets::Total);

9038 void

setLParenLoc(SourceLocation

Loc

) { LParenLoc =

Loc

; }

9041 void

setAllocatorsData(ArrayRef<OMPUsesAllocatorsClause::Data>

Data

);

9051 static

OMPUsesAllocatorsClause *

9052 Create

(

const

ASTContext &

C

, SourceLocation StartLoc, SourceLocation LParenLoc,

9053

SourceLocation EndLoc, ArrayRef<OMPUsesAllocatorsClause::Data>

Data

);

9059 static

OMPUsesAllocatorsClause *

CreateEmpty

(

const

ASTContext &

C

,

unsigned

N);

9072 Stmt

**

Begin

=

reinterpret_cast<Stmt

**

>

(getTrailingObjects<Expr *>());

9074 static_cast<int>

(ExprOffsets::Total));

9078 reinterpret_cast<Stmt

*

const

*

>

(getTrailingObjects<Expr *>());

9080 Begin

,

Begin

+ NumOfAllocators *

static_cast<int>

(ExprOffsets::Total));

9091 return T

->getClauseKind() == llvm::omp::OMPC_uses_allocators;

9106 private

llvm::TrailingObjects<OMPAffinityClause, Expr *> {

9109 friend

TrailingObjects;

9124

LParenLoc, EndLoc, N) {}

9135 void

setModifier(Expr *

E

) {

9140 void

setColonLoc(SourceLocation

Loc

) { ColonLoc =

Loc

; }

9151 static

OMPAffinityClause *

Create

(

const

ASTContext &

C

, SourceLocation StartLoc,

9152

SourceLocation LParenLoc,

9153

SourceLocation ColonLoc,

9154

SourceLocation EndLoc, Expr *Modifier,

9155

ArrayRef<Expr *> Locators);

9161 static

OMPAffinityClause *

CreateEmpty

(

const

ASTContext &

C

,

unsigned

N);

9192 return T

->getClauseKind() == llvm::omp::OMPC_affinity;

9263 void

setBindKindLoc(SourceLocation KLoc) { KindLoc = KLoc; }

9273

SourceLocation StartLoc, SourceLocation LParenLoc,

9274

SourceLocation EndLoc)

9291

SourceLocation KLoc, SourceLocation StartLoc,

9292

SourceLocation LParenLoc, SourceLocation EndLoc);

9297 static

OMPBindClause *

CreateEmpty

(

const

ASTContext &

C

);

9311template

<

class

ImplClass,

template

<

typename

>

class

Ptr,

typename

RetTy>

9314#define PTR(CLASS) Ptr<CLASS> 9315#define DISPATCH(CLASS) \ 9316 return static_cast<ImplClass*>(this)->Visit##CLASS(static_cast<PTR(CLASS)>(S)) 9318#define GEN_CLANG_CLAUSE_CLASS 9319#define CLAUSE_CLASS(Enum, Str, Class) \ 9320 RetTy Visit##Class(PTR(Class) S) { DISPATCH(Class); } 9321#include "llvm/Frontend/OpenMP/OMP.inc" 9325 switch

(S->getClauseKind()) {

9326#define GEN_CLANG_CLAUSE_CLASS 9327#define CLAUSE_CLASS(Enum, Str, Class) \ 9328 case llvm::omp::Clause::Enum: \ 9329 return Visit##Class(static_cast<PTR(Class)>(S)); 9330#define CLAUSE_NO_CLASS(Enum, Str) \ 9331 case llvm::omp::Clause::Enum: \ 9333#include "llvm/Frontend/OpenMP/OMP.inc" 9342template

<

typename

T>

using const_ptr

= std::add_pointer_t<std::add_const_t<T>>;

9344template

<

class

ImplClass,

typename

RetTy =

void

>

9347template

<

class

ImplClass,

typename

RetTy =

void

>

9356 template

<

typename

T>

void

VisitOMPClauseList(

T

*

Node

,

char

StartSym);

9358 template

<

typename

T>

void

VisitOMPMotionClause(

T

*

Node

);

9362

: OS(OS), Policy(Policy) {}

9364#define GEN_CLANG_CLAUSE_CLASS 9365#define CLAUSE_CLASS(Enum, Str, Class) void Visit##Class(Class *S); 9366#include "llvm/Frontend/OpenMP/OMP.inc" 9370

llvm::omp::TraitProperty

Kind

= llvm::omp::TraitProperty::invalid;

9378

llvm::omp::TraitSelector

Kind

= llvm::omp::TraitSelector::invalid;

9382

llvm::omp::TraitSet

Kind

= llvm::omp::TraitSet::invalid;

9404

llvm::function_ref<

bool

(

Expr

*&,

bool

)> Cond) {

9406 return

llvm::any_of(

9408

return Cond(Selector.ScoreOrCondition,

9410

llvm::omp::TraitSelector::user_condition);

9421

llvm::omp::VariantMatchInfo &VMI)

const

;

9429 if

(

Set

.Kind != llvm::omp::TraitSet::implementation)

9432 if

(

Selector

.Kind != llvm::omp::TraitSelector::implementation_extension)

9446

llvm::raw_ostream &

operator<<

(llvm::raw_ostream &OS,

const

OMPTraitInfo &TI);

9447

llvm::raw_ostream &

operator<<

(llvm::raw_ostream &OS,

const

OMPTraitInfo *TI);

9452

std::function<

void

(StringRef)> &&DiagUnknownTrait,

9462

std::function<

bool

(StringRef)> FeatureValidityCheck;

9463

std::function<void(StringRef)> DiagUnknownTrait;

9464

llvm::StringMap<bool> FeatureMap;

9471

:

private

llvm::TrailingObjects<OMPChildren, OMPClause *, Stmt *> {

9472 friend

TrailingObjects;

9478 unsigned

NumClauses = 0;

9480 unsigned

NumChildren = 0;

9482 bool

HasAssociatedStmt =

false

;

9486 size_t

numTrailingObjects(OverloadToken<OMPClause *>)

const

{

9492 OMPChildren

(

unsigned

NumClauses,

unsigned

NumChildren,

bool

HasAssociatedStmt)

9493

: NumClauses(NumClauses), NumChildren(NumChildren),

9494

HasAssociatedStmt(HasAssociatedStmt) {}

9496 static size_t

size(

unsigned

NumClauses,

bool

HasAssociatedStmt,

9497 unsigned

NumChildren);

9499 static

OMPChildren *

Create

(

void

*Mem, ArrayRef<OMPClause *> Clauses);

9500 static

OMPChildren *

Create

(

void

*Mem, ArrayRef<OMPClause *> Clauses, Stmt *S,

9501 unsigned

NumChildren = 0);

9502 static

OMPChildren *CreateEmpty(

void

*Mem,

unsigned

NumClauses,

9503 bool

HasAssociatedStmt =

false

,

9504 unsigned

NumChildren = 0);

9513

getTrailingObjects<Stmt *>()[NumChildren] = S;

9529

assert(HasAssociatedStmt &&

9530 "Expected directive with the associated statement."

);

9531 return

getTrailingObjects<Stmt *>()[NumChildren];

9550

assert(llvm::is_contained(CaptureRegions, RegionKind) &&

9551 "RegionKind not found in OpenMP CaptureRegions."

);

9553 for

(

auto

ThisCaptureRegion : CaptureRegions) {

9554 if

(ThisCaptureRegion == RegionKind)

9556

CS = cast<CapturedStmt>(CS->getCapturedStmt());

9558

llvm_unreachable(

"Incorrect RegionKind specified for directive."

);

9565

assert(!CaptureRegions.empty() &&

9566 "At least one captured statement must be provided."

);

9568 for

(

unsigned

Level = CaptureRegions.size(); Level > 1; --Level)

9569

CS = cast<CapturedStmt>(CS->getCapturedStmt());

9585

assert(HasAssociatedStmt &&

9586 "Expected directive with the associated statement."

);

9590

S = CS->getCapturedStmt();

9591

CS = dyn_cast<CapturedStmt>(S);

9602 if

(!HasAssociatedStmt)

9605

&getTrailingObjects<Stmt *>()[NumChildren + 1]);

9616

:

public OMPOneStmtClause

<llvm::omp::OMPC_ompx_dyn_cgroup_mem, OMPClause>,

9661 private

llvm::TrailingObjects<OMPDoacrossClause, Expr *> {

9664 friend

TrailingObjects;

9676 unsigned

NumLoops = 0;

9688

LParenLoc, EndLoc, N),

9689

NumLoops(NumLoops) {}

9699

NumLoops(NumLoops) {}

9705 void

setDependenceLoc(SourceLocation

Loc

) { DepLoc =

Loc

; }

9708 void

setColonLoc(SourceLocation

Loc

) { ColonLoc =

Loc

; }

9722 static

OMPDoacrossClause *

9723 Create

(

const

ASTContext &

C

, SourceLocation StartLoc, SourceLocation LParenLoc,

9725

SourceLocation DepLoc, SourceLocation ColonLoc, ArrayRef<Expr *> VL,

9733 static

OMPDoacrossClause *

CreateEmpty

(

const

ASTContext &

C

,

unsigned

N,

9773 return T

->getClauseKind() == llvm::omp::OMPC_doacross;

9802

:

OMPNoChildClause

(StartLoc, EndLoc), LParenLoc(LParenLoc), Attrs(Attrs) {

9821

Attrs.append(NewAttrs.begin(), NewAttrs.end());

Forward declaration of all AST node types.

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

static const Decl * getCanonicalDecl(const Decl *D)

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

Defines some OpenMP-specific enums and functions.

Defines the clang::SourceLocation class and associated facilities.

Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...

This captures a statement into a function.

This represents one expression.

Represents a function declaration or definition.

A C++ nested-name-specifier augmented with source location information.

This represents the 'absent' clause in the '#pragma omp assume' directive.

static OMPAbsentClause * CreateEmpty(const ASTContext &C, unsigned NumKinds)

static bool classof(const OMPClause *C)

This represents 'acq_rel' clause in the '#pragma omp atomic|flush' directives.

static bool classof(const OMPClause *T)

OMPAcqRelClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'ack_rel' clause.

const_child_range used_children() const

child_range used_children()

const_child_range children() const

OMPAcqRelClause()

Build an empty clause.

This represents 'acquire' clause in the '#pragma omp atomic|flush' directives.

static bool classof(const OMPClause *T)

const_child_range children() const

OMPAcquireClause()

Build an empty clause.

child_range used_children()

const_child_range used_children() const

OMPAcquireClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'acquire' clause.

This represents clause 'affinity' in the '#pragma omp task'-based directives.

child_range used_children()

Expr * getModifier()

Gets affinity modifier.

const_child_range children() const

static OMPAffinityClause * CreateEmpty(const ASTContext &C, unsigned N)

Creates an empty clause with the place for N locator items.

SourceLocation getColonLoc() const

Gets the location of ':' symbol.

const_child_range used_children() const

static bool classof(const OMPClause *T)

Expr * getModifier() const

This represents the 'align' clause in the '#pragma omp allocate' directive.

Expr * getAlignment() const

Returns alignment.

This represents clause 'aligned' in the '#pragma omp ...' directives.

Expr * getAlignment()

Returns alignment.

const Expr * getAlignment() const

Returns alignment.

void setColonLoc(SourceLocation Loc)

Sets the location of ':'.

const_child_range used_children() const

static OMPAlignedClause * CreateEmpty(const ASTContext &C, unsigned NumVars)

Creates an empty clause with the place for NumVars variables.

const_child_range children() const

SourceLocation getColonLoc() const

Returns the location of ':'.

static bool classof(const OMPClause *T)

child_range used_children()

This represents clause 'allocate' in the '#pragma omp ...' directives.

const_child_range children() const

SourceLocation getAllocatorModifierLoc() const

Return the location of the modifier.

const_child_range used_children() const

OpenMPAllocateClauseModifier getAllocatorModifier() const

Return 'allocate' modifier.

OpenMPAllocateClauseModifier getSecondAllocateModifier() const

Get the second modifier of the clause.

SourceLocation getColonLoc() const

Returns the location of the ':' delimiter.

Expr * getAlignment() const

Returns the alignment expression or nullptr, if no alignment specified.

OpenMPAllocateClauseModifier getFirstAllocateModifier() const

Get the first modifier of the clause.

Expr * getAllocator() const

Returns the allocator expression or nullptr, if no allocator is specified.

SourceLocation getSecondAllocateModifierLoc() const

Get location of second modifier of the clause.

child_range used_children()

SourceLocation getFirstAllocateModifierLoc() const

Get location of first modifier of the clause.

static OMPAllocateClause * CreateEmpty(const ASTContext &C, unsigned N)

Creates an empty clause with the place for N variables.

static bool classof(const OMPClause *T)

This represents 'allocator' clause in the '#pragma omp ...' directive.

OMPAllocatorClause(Expr *A, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Build 'allocator' clause with the given allocator.

OMPAllocatorClause()

Build an empty clause.

Expr * getAllocator() const

Returns allocator.

This represents 'at' clause in the '#pragma omp error' directive.

OMPAtClause(OpenMPAtClauseKind A, SourceLocation ALoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Build 'at' clause with argument A ('compilation' or 'execution').

SourceLocation getAtKindKwLoc() const

Returns location of clause kind.

static bool classof(const OMPClause *T)

OpenMPAtClauseKind getAtKind() const

Returns kind of the clause.

const_child_range used_children() const

child_range used_children()

SourceLocation getLParenLoc() const

Returns the locaiton of '('.

OMPAtClause()

Build an empty clause.

const_child_range children() const

This represents 'atomic_default_mem_order' clause in the '#pragma omp requires' directive.

const_child_range used_children() const

static bool classof(const OMPClause *T)

SourceLocation getLParenLoc() const

Returns the locaiton of '('.

void setLParenLoc(SourceLocation Loc)

Sets the location of '('.

OpenMPAtomicDefaultMemOrderClauseKind getAtomicDefaultMemOrderKind() const

Returns kind of the clause.

OMPAtomicDefaultMemOrderClause(OpenMPAtomicDefaultMemOrderClauseKind A, SourceLocation ALoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Build 'atomic_default_mem_order' clause with argument A ('seq_cst', 'acq_rel' or 'relaxed').

child_range used_children()

const_child_range children() const

OMPAtomicDefaultMemOrderClause()

Build an empty clause.

SourceLocation getAtomicDefaultMemOrderKindKwLoc() const

Returns location of clause kind.

This represents 'bind' clause in the '#pragma omp ...' directives.

OpenMPBindClauseKind getBindKind() const

Returns kind of the clause.

SourceLocation getLParenLoc() const

Returns the location of '('.

SourceLocation getBindKindLoc() const

Returns location of clause kind.

static OMPBindClause * CreateEmpty(const ASTContext &C)

Build an empty 'bind' clause.

This represents 'capture' clause in the '#pragma omp atomic' directive.

OMPCaptureClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'capture' clause.

const_child_range used_children() const

child_range used_children()

const_child_range children() const

static bool classof(const OMPClause *T)

OMPCaptureClause()

Build an empty clause.

Contains data for OpenMP directives: clauses, children expressions/statements (helpers for codegen) a...

unsigned getNumClauses() const

const CapturedStmt * getCapturedStmt(OpenMPDirectiveKind RegionKind, ArrayRef< OpenMPDirectiveKind > CaptureRegions) const

Returns the captured statement associated with the component region within the (combined) directive.

bool hasAssociatedStmt() const

Stmt::child_range getAssociatedStmtAsRange()

void setClauses(ArrayRef< OMPClause * > Clauses)

Sets the list of variables for this clause.

unsigned getNumChildren() const

const Stmt * getAssociatedStmt() const

Returns statement associated with the directive.

Stmt * getAssociatedStmt()

void setChildren(ArrayRef< Stmt * > Children)

ArrayRef< Stmt * > getChildren() const

MutableArrayRef< OMPClause * > getClauses()

Get the clauses storage.

MutableArrayRef< Stmt * > getChildren()

const Stmt * getRawStmt() const

void setAssociatedStmt(Stmt *S)

Set associated statement.

CapturedStmt * getInnermostCapturedStmt(ArrayRef< OpenMPDirectiveKind > CaptureRegions)

Get innermost captured statement for the construct.

ArrayRef< OMPClause * > getClauses() const

const CapturedStmt * getInnermostCapturedStmt(ArrayRef< OpenMPDirectiveKind > CaptureRegions) const

Class that represents a component of a mappable expression.

MappableComponent(Expr *AssociatedExpression, ValueDecl *AssociatedDeclaration, bool IsNonContiguous)

bool isNonContiguous() const

Expr * getAssociatedExpression() const

MappableComponent()=default

ValueDecl * getAssociatedDeclaration() const

Struct that defines common infrastructure to handle mappable expressions used in OpenMP clauses.

ArrayRef< MappableExprComponentList > MappableExprComponentListsRef

static unsigned getUniqueDeclarationsTotalNumber(ArrayRef< const ValueDecl * > Declarations)

static unsigned getComponentsTotalNumber(MappableExprComponentListsRef ComponentLists)

ArrayRef< MappableComponent > MappableExprComponentListRef

OMPClausePrinter(raw_ostream &OS, const PrintingPolicy &Policy)

This class implements a simple visitor for OMPClause subclasses.

RetTy VisitOMPClause(PTR(OMPClause) Node)

RetTy Visit(PTR(OMPClause) S)

Class that handles post-update expression for some clauses, like 'lastprivate', 'reduction' etc.

void setPostUpdateExpr(Expr *S)

Set pre-initialization statement for the clause.

static OMPClauseWithPostUpdate * get(OMPClause *C)

Expr * getPostUpdateExpr()

Get post-update expression for the clause.

OMPClauseWithPostUpdate(const OMPClause *This)

const Expr * getPostUpdateExpr() const

Get post-update expression for the clause.

Class that handles pre-initialization statement for some clauses, like 'schedule',...

const Stmt * getPreInitStmt() const

Get pre-initialization statement for the clause.

OMPClauseWithPreInit(const OMPClause *This)

OpenMPDirectiveKind getCaptureRegion() const

Get capture region for the stmt in the clause.

Stmt * getPreInitStmt()

Get pre-initialization statement for the clause.

static OMPClauseWithPreInit * get(OMPClause *C)

void setPreInitStmt(Stmt *S, OpenMPDirectiveKind ThisRegion=llvm::omp::OMPD_unknown)

Set pre-initialization statement for the clause.

This is a basic class for representing single OpenMP clause.

const_child_range children() const

void setLocStart(SourceLocation Loc)

Sets the starting location of the clause.

static bool classof(const OMPClause *)

SourceLocation getBeginLoc() const

Returns the starting location of the clause.

llvm::iterator_range< const_child_iterator > const_child_range

ConstStmtIterator const_child_iterator

child_range used_children()

Get the iterator range for the expressions used in the clauses.

llvm::iterator_range< child_iterator > child_range

OMPClause(OpenMPClauseKind K, SourceLocation StartLoc, SourceLocation EndLoc)

void setLocEnd(SourceLocation Loc)

Sets the ending location of the clause.

StmtIterator child_iterator

SourceLocation getEndLoc() const

Returns the ending location of the clause.

OpenMPClauseKind getClauseKind() const

Returns kind of OpenMP clause (private, shared, reduction, etc.).

const_child_range used_children() const

This represents 'collapse' clause in the '#pragma omp ...' directive.

OMPCollapseClause()

Build an empty clause.

Expr * getNumForLoops() const

Return the number of associated for-loops.

OMPCollapseClause(Expr *Num, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Build 'collapse' clause.

This represents 'compare' clause in the '#pragma omp atomic' directive.

const_child_range used_children() const

OMPCompareClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'compare' clause.

child_range used_children()

const_child_range children() const

OMPCompareClause()

Build an empty clause.

static bool classof(const OMPClause *T)

This represents the 'contains' clause in the '#pragma omp assume' directive.

static OMPContainsClause * CreateEmpty(const ASTContext &C, unsigned NumKinds)

static bool classof(const OMPClause *C)

This represents clause 'copyin' in the '#pragma omp ...' directives.

helper_expr_range assignment_ops()

MutableArrayRef< Expr * >::iterator helper_expr_iterator

ArrayRef< const Expr * >::iterator helper_expr_const_iterator

llvm::iterator_range< helper_expr_const_iterator > helper_expr_const_range

const_child_range children() const

helper_expr_const_range source_exprs() const

llvm::iterator_range< helper_expr_iterator > helper_expr_range

helper_expr_range source_exprs()

static bool classof(const OMPClause *T)

const_child_range used_children() const

child_range used_children()

helper_expr_const_range destination_exprs() const

helper_expr_range destination_exprs()

helper_expr_const_range assignment_ops() const

static OMPCopyinClause * CreateEmpty(const ASTContext &C, unsigned N)

Creates an empty clause with N variables.

This represents clause 'copyprivate' in the '#pragma omp ...' directives.

helper_expr_range source_exprs()

MutableArrayRef< Expr * >::iterator helper_expr_iterator

llvm::iterator_range< helper_expr_iterator > helper_expr_range

llvm::iterator_range< helper_expr_const_iterator > helper_expr_const_range

child_range used_children()

helper_expr_const_range destination_exprs() const

helper_expr_range destination_exprs()

const_child_range children() const

static bool classof(const OMPClause *T)

const_child_range used_children() const

helper_expr_const_range source_exprs() const

static OMPCopyprivateClause * CreateEmpty(const ASTContext &C, unsigned N)

Creates an empty clause with N variables.

helper_expr_range assignment_ops()

ArrayRef< const Expr * >::iterator helper_expr_const_iterator

helper_expr_const_range assignment_ops() const

This is a basic class for representing single OpenMP declarative directive.

This represents 'default' clause in the '#pragma omp ...' directive.

const_child_range used_children() const

SourceLocation getLParenLoc() const

Returns the location of '('.

llvm::omp::DefaultKind getDefaultKind() const

Returns kind of the clause.

SourceLocation getDefaultKindKwLoc() const

Returns location of clause kind.

OMPDefaultClause(llvm::omp::DefaultKind A, SourceLocation ALoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Build 'default' clause with argument A ('none' or 'shared').

static bool classof(const OMPClause *T)

child_range used_children()

const_child_range children() const

void setLParenLoc(SourceLocation Loc)

Sets the location of '('.

OMPDefaultClause()

Build an empty clause.

This represents 'defaultmap' clause in the '#pragma omp ...' directive.

const_child_range children() const

SourceLocation getDefaultmapKindLoc()

Get kind location.

static bool classof(const OMPClause *T)

OMPDefaultmapClause(SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation MLoc, SourceLocation KLoc, SourceLocation EndLoc, OpenMPDefaultmapClauseKind Kind, OpenMPDefaultmapClauseModifier M)

Build 'defaultmap' clause with defaultmap kind Kind.

child_range used_children()

OpenMPDefaultmapClauseModifier getDefaultmapModifier() const

Get the modifier of the clause.

OMPDefaultmapClause()

Build an empty clause.

SourceLocation getDefaultmapModifierLoc() const

Get the modifier location.

const_child_range used_children() const

SourceLocation getLParenLoc()

Get location of '('.

OpenMPDefaultmapClauseKind getDefaultmapKind() const

Get kind of the clause.

This represents implicit clause 'depend' for the '#pragma omp task' directive.

SourceLocation getDependencyLoc() const

Get dependency type location.

static bool classof(const OMPClause *T)

unsigned getNumLoops() const

Get number of loops associated with the clause.

Expr * getModifier()

Return optional depend modifier.

Expr * getLoopData(unsigned NumLoop)

Get the loop data.

SourceLocation getOmpAllMemoryLoc() const

Get 'omp_all_memory' location.

const_child_range used_children() const

void setLoopData(unsigned NumLoop, Expr *Cnt)

Set the loop data for the depend clauses with 'sink|source' kind of dependency.

const_child_range children() const

static OMPDependClause * CreateEmpty(const ASTContext &C, unsigned N, unsigned NumLoops)

Creates an empty clause with N variables.

const Expr * getModifier() const

child_range used_children()

SourceLocation getColonLoc() const

Get colon location.

OpenMPDependClauseKind getDependencyKind() const

Get dependency type.

This represents implicit clause 'depobj' for the '#pragma omp depobj' directive.

SourceLocation getLParenLoc() const

Returns the location of '('.

static bool classof(const OMPClause *T)

const_child_range used_children() const

const_child_range children() const

static OMPDepobjClause * CreateEmpty(const ASTContext &C)

Creates an empty clause.

Expr * getDepobj()

Returns depobj expression associated with the clause.

child_range used_children()

const Expr * getDepobj() const

This represents 'destroy' clause in the '#pragma omp depobj' directive or the '#pragma omp interop' d...

static bool classof(const OMPClause *T)

SourceLocation getLParenLoc() const

Returns the location of '('.

OMPDestroyClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'destroy' clause.

child_range used_children()

const_child_range children() const

OMPDestroyClause(Expr *InteropVar, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation VarLoc, SourceLocation EndLoc)

Build 'destroy' clause with an interop variable expression InteropVar.

SourceLocation getVarLoc() const

Returns the location of the interop variable.

Expr * getInteropVar() const

Returns the interop variable.

OMPDestroyClause()

Build an empty clause.

const_child_range used_children() const

This represents 'detach' clause in the '#pragma omp task' directive.

OMPDetachClause(Expr *Evt, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Build 'detach' clause with event-handler Evt.

OMPDetachClause()

Build an empty clause.

Expr * getEventHandler() const

Returns event-handler expression.

This represents 'device' clause in the '#pragma omp ...' directive.

OMPDeviceClause()

Build an empty clause.

const_child_range used_children() const

OpenMPDeviceClauseModifier getModifier() const

Gets modifier.

child_range used_children()

void setLParenLoc(SourceLocation Loc)

Sets the location of '('.

const_child_range children() const

Expr * getDevice()

Return device number.

Expr * getDevice() const

Return device number.

OMPDeviceClause(OpenMPDeviceClauseModifier Modifier, Expr *E, Stmt *HelperE, OpenMPDirectiveKind CaptureRegion, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ModifierLoc, SourceLocation EndLoc)

Build 'device' clause.

SourceLocation getModifierLoc() const

Gets modifier location.

static bool classof(const OMPClause *T)

SourceLocation getLParenLoc() const

Returns the location of '('.

Class that represents a list of directive kinds (parallel, target, etc.) as used in absent,...

MutableArrayRef< OpenMPDirectiveKind > getDirectiveKinds()

void setDirectiveKinds(ArrayRef< OpenMPDirectiveKind > DK)

SourceLocation getLParenLoc()

const_child_range children() const

unsigned NumKinds

Number of directive kinds listed in the clause.

void setLParenLoc(SourceLocation S)

const_child_range used_children() const

OMPDirectiveListClause(OpenMPClauseKind K, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc, unsigned NumKinds)

Build a clause with NumKinds directive kinds.

child_range used_children()

This represents 'dist_schedule' clause in the '#pragma omp ...' directive.

OMPDistScheduleClause()

Build an empty clause.

const_child_range used_children() const

SourceLocation getCommaLoc()

Get location of ','.

const_child_range children() const

SourceLocation getDistScheduleKindLoc()

Get kind location.

OMPDistScheduleClause(SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation KLoc, SourceLocation CommaLoc, SourceLocation EndLoc, OpenMPDistScheduleClauseKind Kind, Expr *ChunkSize, Stmt *HelperChunkSize)

Build 'dist_schedule' clause with schedule kind Kind and chunk size expression ChunkSize.

const Expr * getChunkSize() const

Get chunk size.

OpenMPDistScheduleClauseKind getDistScheduleKind() const

Get kind of the clause.

Expr * getChunkSize()

Get chunk size.

SourceLocation getLParenLoc()

Get location of '('.

child_range used_children()

static bool classof(const OMPClause *T)

This represents the 'doacross' clause for the '#pragma omp ordered' directive.

const_child_range children() const

const_child_range used_children() const

child_range used_children()

static bool classof(const OMPClause *T)

void setLoopData(unsigned NumLoop, Expr *Cnt)

Set the loop data.

Expr * getLoopData(unsigned NumLoop)

Get the loop data.

SourceLocation getColonLoc() const

Get colon location.

unsigned getNumLoops() const

Get number of loops associated with the clause.

static OMPDoacrossClause * CreateEmpty(const ASTContext &C, unsigned N, unsigned NumLoops)

Creates an empty clause with N expressions.

OpenMPDoacrossClauseModifier getDependenceType() const

Get dependence type.

SourceLocation getDependenceLoc() const

Get dependence type location.

This represents 'dynamic_allocators' clause in the '#pragma omp requires' directive.

OMPDynamicAllocatorsClause()

Build an empty clause.

OMPDynamicAllocatorsClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'dynamic_allocators' clause.

const_child_range children() const

const_child_range used_children() const

static bool classof(const OMPClause *T)

child_range used_children()

This represents clause 'exclusive' in the '#pragma omp scan' directive.

child_range used_children()

const_child_range used_children() const

static OMPExclusiveClause * CreateEmpty(const ASTContext &C, unsigned N)

Creates an empty clause with the place for N variables.

const_child_range children() const

static bool classof(const OMPClause *T)

This is a basic class for representing single OpenMP executable directive.

This represents 'fail' clause in the '#pragma omp atomic' directive.

OMPFailClause(OpenMPClauseKind FailParameter, SourceLocation FailParameterLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

child_range used_children()

OMPFailClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'fail' clause.

static bool classof(const OMPClause *T)

const_child_range used_children() const

SourceLocation getLParenLoc() const

Gets the location of '(' (for the parameter) in fail clause.

const_child_range children() const

SourceLocation getFailParameterLoc() const

Gets the location of Fail Parameter (type memory-order-clause) in fail clause.

OMPFailClause()

Build an empty clause.

OpenMPClauseKind getFailParameter() const

Gets the parameter (type memory-order-clause) in Fail clause.

This represents 'filter' clause in the '#pragma omp ...' directive.

Expr * getThreadID() const

Return thread identifier.

Expr * getThreadID()

Return thread identifier.

OMPFilterClause(Expr *ThreadID, Stmt *HelperE, OpenMPDirectiveKind CaptureRegion, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Build 'filter' clause with thread-id ThreadID.

OMPFilterClause()

Build an empty clause.

This represents 'final' clause in the '#pragma omp ...' directive.

child_range used_children()

Expr * getCondition() const

Returns condition.

OMPFinalClause(Expr *Cond, Stmt *HelperCond, OpenMPDirectiveKind CaptureRegion, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Build 'final' clause with condition Cond.

OMPFinalClause()

Build an empty clause.

const_child_range used_children() const

This represents clause 'firstprivate' in the '#pragma omp ...' directives.

MutableArrayRef< Expr * >::iterator private_copies_iterator

const_child_range children() const

static bool classof(const OMPClause *T)

inits_const_range inits() const

llvm::iterator_range< inits_const_iterator > inits_const_range

ArrayRef< const Expr * >::iterator inits_const_iterator

child_range used_children()

private_copies_const_range private_copies() const

llvm::iterator_range< inits_iterator > inits_range

llvm::iterator_range< private_copies_iterator > private_copies_range

llvm::iterator_range< private_copies_const_iterator > private_copies_const_range

const_child_range used_children() const

private_copies_range private_copies()

ArrayRef< const Expr * >::iterator private_copies_const_iterator

static OMPFirstprivateClause * CreateEmpty(const ASTContext &C, unsigned N)

Creates an empty clause with the place for N variables.

MutableArrayRef< Expr * >::iterator inits_iterator

This represents implicit clause 'flush' for the '#pragma omp flush' directive.

child_range used_children()

static OMPFlushClause * CreateEmpty(const ASTContext &C, unsigned N)

Creates an empty clause with N variables.

const_child_range children() const

static bool classof(const OMPClause *T)

const_child_range used_children() const

This represents clause 'from' in the '#pragma omp ...' directives.

const_child_range used_children() const

SourceLocation getColonLoc() const

Get colon location.

OpenMPMotionModifierKind getMotionModifier(unsigned Cnt) const LLVM_READONLY

Fetches the motion-modifier at 'Cnt' index of array of modifiers.

ArrayRef< SourceLocation > getMotionModifiersLoc() const LLVM_READONLY

Fetches ArrayRef of location of motion-modifiers.

static bool classof(const OMPClause *T)

static OMPFromClause * CreateEmpty(const ASTContext &C, const OMPMappableExprListSizeTy &Sizes)

Creates an empty clause with the place for NumVars variables.

ArrayRef< OpenMPMotionModifierKind > getMotionModifiers() const LLVM_READONLY

Fetches ArrayRef of motion-modifiers.

child_range used_children()

SourceLocation getMotionModifierLoc(unsigned Cnt) const LLVM_READONLY

Fetches the motion-modifier location at 'Cnt' index of array of modifiers' locations.

const_child_range children() const

Representation of the 'full' clause of the '#pragma omp unroll' directive.

static OMPFullClause * CreateEmpty(const ASTContext &C)

Build an empty 'full' AST node for deserialization.

This represents 'grainsize' clause in the '#pragma omp ...' directive.

const_child_range children() const

Expr * getGrainsize() const

Return safe iteration space distance.

SourceLocation getLParenLoc() const

Returns the location of '('.

child_range used_children()

SourceLocation getModifierLoc() const

Gets modifier location.

OMPGrainsizeClause(OpenMPGrainsizeClauseModifier Modifier, Expr *Size, Stmt *HelperSize, OpenMPDirectiveKind CaptureRegion, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ModifierLoc, SourceLocation EndLoc)

Build 'grainsize' clause.

static bool classof(const OMPClause *T)

const_child_range used_children() const

OMPGrainsizeClause()

Build an empty clause.

void setLParenLoc(SourceLocation Loc)

Sets the location of '('.

OpenMPGrainsizeClauseModifier getModifier() const

Gets modifier.

This represents clause 'has_device_ptr' in the '#pragma omp ...' directives.

const_child_range used_children() const

const_child_range children() const

static bool classof(const OMPClause *T)

static OMPHasDeviceAddrClause * CreateEmpty(const ASTContext &C, const OMPMappableExprListSizeTy &Sizes)

Creates an empty clause with the place for NumVars variables.

child_range used_children()

This represents 'hint' clause in the '#pragma omp ...' directive.

static bool classof(const OMPClause *T)

Expr * getHint() const

Returns number of threads.

const_child_range children() const

OMPHintClause(Expr *Hint, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Build 'hint' clause with expression Hint.

void setLParenLoc(SourceLocation Loc)

Sets the location of '('.

SourceLocation getLParenLoc() const

Returns the location of '('.

const_child_range used_children() const

OMPHintClause()

Build an empty clause.

child_range used_children()

This represents the 'holds' clause in the '#pragma omp assume' directive.

OMPHoldsClause(Expr *E, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Build 'holds' clause.

OMPHoldsClause()

Build an empty clause.

This represents 'if' clause in the '#pragma omp ...' directive.

void setLParenLoc(SourceLocation Loc)

Sets the location of '('.

const_child_range used_children() const

SourceLocation getLParenLoc() const

Returns the location of '('.

SourceLocation getColonLoc() const

Return the location of ':'.

static bool classof(const OMPClause *T)

child_range used_children()

Expr * getCondition() const

Returns condition.

OpenMPDirectiveKind getNameModifier() const

Return directive name modifier associated with the clause.

OMPIfClause()

Build an empty clause.

const_child_range children() const

OMPIfClause(OpenMPDirectiveKind NameModifier, Expr *Cond, Stmt *HelperCond, OpenMPDirectiveKind CaptureRegion, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation NameModifierLoc, SourceLocation ColonLoc, SourceLocation EndLoc)

Build 'if' clause with condition Cond.

SourceLocation getNameModifierLoc() const

Return the location of directive name modifier.

This represents clause 'in_reduction' in the '#pragma omp task' directives.

static OMPInReductionClause * CreateEmpty(const ASTContext &C, unsigned N)

Creates an empty clause with the place for N variables.

static bool classof(const OMPClause *T)

helper_expr_const_range rhs_exprs() const

helper_expr_range taskgroup_descriptors()

MutableArrayRef< Expr * >::iterator helper_expr_iterator

NestedNameSpecifierLoc getQualifierLoc() const

Gets the nested name specifier.

ArrayRef< const Expr * >::iterator helper_expr_const_iterator

llvm::iterator_range< helper_expr_iterator > helper_expr_range

llvm::iterator_range< helper_expr_const_iterator > helper_expr_const_range

helper_expr_const_range lhs_exprs() const

helper_expr_const_range reduction_ops() const

helper_expr_const_range privates() const

SourceLocation getColonLoc() const

Gets location of ':' symbol in clause.

helper_expr_const_range taskgroup_descriptors() const

child_range used_children()

const DeclarationNameInfo & getNameInfo() const

Gets the name info for specified reduction identifier.

helper_expr_range reduction_ops()

const_child_range used_children() const

helper_expr_range rhs_exprs()

const_child_range children() const

helper_expr_range lhs_exprs()

helper_expr_range privates()

This represents clause 'inclusive' in the '#pragma omp scan' directive.

const_child_range children() const

static bool classof(const OMPClause *T)

child_range used_children()

static OMPInclusiveClause * CreateEmpty(const ASTContext &C, unsigned N)

Creates an empty clause with the place for N variables.

const_child_range used_children() const

This represents the 'init' clause in '#pragma omp ...' directives.

bool getIsTarget() const

Returns true is interop-type 'target' is used.

child_range used_children()

const_child_range children() const

const_prefs_range prefs() const

llvm::iterator_range< prefs_iterator > prefs_range

const Expr * getInteropVar() const

static bool classof(const OMPClause *T)

ArrayRef< const Expr * >::iterator const_prefs_iterator

SourceLocation getVarLoc() const

Returns the location of the interop variable.

bool getIsTargetSync() const

Returns true is interop-type 'targetsync' is used.

static OMPInitClause * CreateEmpty(const ASTContext &C, unsigned N)

Creates an empty clause with N expressions.

MutableArrayRef< Expr * >::iterator prefs_iterator

const_child_range used_children() const

Expr * getInteropVar()

Returns the interop variable.

llvm::iterator_range< const_prefs_iterator > const_prefs_range

This represents clause 'is_device_ptr' in the '#pragma omp ...' directives.

const_child_range used_children() const

const_child_range children() const

child_range used_children()

static bool classof(const OMPClause *T)

static OMPIsDevicePtrClause * CreateEmpty(const ASTContext &C, const OMPMappableExprListSizeTy &Sizes)

Creates an empty clause with the place for NumVars variables.

This represents clause 'lastprivate' in the '#pragma omp ...' directives.

static OMPLastprivateClause * CreateEmpty(const ASTContext &C, unsigned N)

Creates an empty clause with the place for N variables.

helper_expr_range assignment_ops()

void setPrivateCopies(ArrayRef< Expr * > PrivateCopies)

Set list of helper expressions, required for generation of private copies of original lastprivate var...

SourceLocation getKindLoc() const

Returns the location of the lastprivate kind.

const_child_range used_children() const

helper_expr_const_range destination_exprs() const

helper_expr_const_range source_exprs() const

helper_expr_range destination_exprs()

llvm::iterator_range< helper_expr_const_iterator > helper_expr_const_range

static bool classof(const OMPClause *T)

helper_expr_range source_exprs()

const_child_range children() const

helper_expr_const_range assignment_ops() const

helper_expr_range private_copies()

MutableArrayRef< Expr * >::iterator helper_expr_iterator

SourceLocation getColonLoc() const

Returns the location of the ':' symbol, if any.

OpenMPLastprivateModifier getKind() const

Lastprivate kind.

ArrayRef< const Expr * >::iterator helper_expr_const_iterator

child_range used_children()

llvm::iterator_range< helper_expr_iterator > helper_expr_range

helper_expr_const_range private_copies() const

This represents clause 'linear' in the '#pragma omp ...' directives.

static bool classof(const OMPClause *T)

void setStepModifierLoc(SourceLocation Loc)

Sets the location of 'step' modifier.

updates_const_range updates() const

child_range used_children()

SourceLocation getModifierLoc() const

Return modifier location.

static OMPLinearClause * CreateEmpty(const ASTContext &C, unsigned NumVars)

Creates an empty clause with the place for NumVars variables.

Expr * getStep()

Returns linear step.

void setUpdates(ArrayRef< Expr * > UL)

Sets the list of update expressions for linear variables.

privates_range privates()

void setFinals(ArrayRef< Expr * > FL)

Sets the list of final update expressions for linear variables.

privates_const_range privates() const

void setUsedExprs(ArrayRef< Expr * > UE)

Sets the list of used expressions for the linear clause.

const Expr * getStep() const

Returns linear step.

ArrayRef< const Expr * >::iterator used_expressions_const_iterator

llvm::iterator_range< finals_iterator > finals_range

llvm::iterator_range< updates_iterator > updates_range

MutableArrayRef< Expr * >::iterator inits_iterator

ArrayRef< const Expr * >::iterator finals_const_iterator

void setModifierLoc(SourceLocation Loc)

Set modifier location.

MutableArrayRef< Expr * >::iterator used_expressions_iterator

llvm::iterator_range< finals_const_iterator > finals_const_range

llvm::iterator_range< privates_iterator > privates_range

inits_const_range inits() const

const_child_range children() const

Expr * getCalcStep()

Returns expression to calculate linear step.

MutableArrayRef< Expr * >::iterator finals_iterator

llvm::iterator_range< used_expressions_const_iterator > used_expressions_const_range

ArrayRef< const Expr * >::iterator updates_const_iterator

void setColonLoc(SourceLocation Loc)

Sets the location of ':'.

const Expr * getCalcStep() const

Returns expression to calculate linear step.

ArrayRef< const Expr * >::iterator inits_const_iterator

llvm::iterator_range< updates_const_iterator > updates_const_range

SourceLocation getStepModifierLoc() const

Returns the location of 'step' modifier.

used_expressions_const_range used_expressions() const

llvm::iterator_range< used_expressions_iterator > used_expressions_range

used_expressions_range used_expressions()

llvm::iterator_range< privates_const_iterator > privates_const_range

finals_const_range finals() const

const_child_range used_children() const

void setModifier(OpenMPLinearClauseKind Kind)

Set modifier.

llvm::iterator_range< inits_const_iterator > inits_const_range

MutableArrayRef< Expr * >::iterator updates_iterator

llvm::iterator_range< inits_iterator > inits_range

ArrayRef< const Expr * >::iterator privates_const_iterator

OpenMPLinearClauseKind getModifier() const

Return modifier.

SourceLocation getColonLoc() const

Returns the location of ':'.

MutableArrayRef< Expr * >::iterator privates_iterator

This represents clause 'map' in the '#pragma omp ...' directives.

OpenMPMapClauseKind getMapType() const LLVM_READONLY

Fetches mapping kind for the clause.

ArrayRef< SourceLocation > getMapTypeModifiersLoc() const LLVM_READONLY

Fetches ArrayRef of location of map-type-modifiers.

Expr * getIteratorModifier()

Fetches Expr * of iterator modifier.

child_range used_children()

bool isImplicitMapType() const LLVM_READONLY

Is this an implicit map type? We have to capture 'IsMapTypeImplicit' from the parser for more informa...

static bool classof(const OMPClause *T)

SourceLocation getMapTypeModifierLoc(unsigned Cnt) const LLVM_READONLY

Fetches the map-type-modifier location at 'Cnt' index of array of modifiers' locations.

const_child_range children() const

ArrayRef< OpenMPMapModifierKind > getMapTypeModifiers() const LLVM_READONLY

Fetches ArrayRef of map-type-modifiers.

SourceLocation getColonLoc() const

Get colon location.

const_child_range used_children() const

SourceLocation getMapLoc() const LLVM_READONLY

Fetches location of clause mapping kind.

static OMPMapClause * CreateEmpty(const ASTContext &C, const OMPMappableExprListSizeTy &Sizes)

Creates an empty clause with the place for NumVars original expressions, NumUniqueDeclarations declar...

OpenMPMapModifierKind getMapTypeModifier(unsigned Cnt) const LLVM_READONLY

Fetches the map-type-modifier at 'Cnt' index of array of modifiers.

Iterator that browse the components by lists.

const_component_lists_iterator & operator++()

std::tuple< const ValueDecl *, MappableExprComponentListRef, const ValueDecl * > operator->() const

std::tuple< const ValueDecl *, MappableExprComponentListRef, const ValueDecl * > operator*() const

const_component_lists_iterator(ArrayRef< ValueDecl * > UniqueDecls, ArrayRef< unsigned > DeclsListNum, ArrayRef< unsigned > CumulativeListSizes, MappableExprComponentListRef Components, bool SupportsMapper, ArrayRef< Expr * > Mappers)

Construct an iterator that scans all lists.

const_component_lists_iterator(const ValueDecl *Declaration, ArrayRef< ValueDecl * > UniqueDecls, ArrayRef< unsigned > DeclsListNum, ArrayRef< unsigned > CumulativeListSizes, MappableExprComponentListRef Components, bool SupportsMapper, ArrayRef< Expr * > Mappers)

Construct an iterator that scan lists for a given declaration Declaration.

This represents clauses with a list of expressions that are mappable.

const_component_lists_range component_lists() const

ArrayRef< MappableComponent > getComponentsRef() const

Get the components that are in the trailing objects of the class.

OMPMappableExprListClause(OpenMPClauseKind K, const OMPVarListLocTy &Locs, const OMPMappableExprListSizeTy &Sizes, bool SupportsMapper=false, NestedNameSpecifierLoc *MapperQualifierLocPtr=nullptr, DeclarationNameInfo *MapperIdInfoPtr=nullptr)

Build a clause for NumUniqueDeclarations declarations, NumComponentLists total component lists,...

llvm::iterator_range< const_component_lists_iterator > const_component_lists_range

llvm::iterator_range< mapperlist_iterator > mapperlist_range

MutableArrayRef< ValueDecl * > getUniqueDeclsRef()

Get the unique declarations that are in the trailing objects of the class.

MutableArrayRef< MappableComponent > getComponentsRef()

Get the components that are in the trailing objects of the class.

void setUDMapperRefs(ArrayRef< Expr * > DMDs)

Set the user-defined mappers that are in the trailing objects of the class.

ArrayRef< unsigned >::iterator const_all_lists_sizes_iterator

mapperlist_iterator mapperlist_end()

const_all_decls_range all_decls() const

mapperlist_const_range mapperlists() const

void setDeclNumLists(ArrayRef< unsigned > DNLs)

Set the number of lists per declaration that are in the trailing objects of the class.

const_component_lists_iterator decl_component_lists_begin(const ValueDecl *VD) const

Iterators for component lists associated with the provided declaration.

void setMapperQualifierLoc(NestedNameSpecifierLoc NNSL)

Set the nested name specifier of associated user-defined mapper.

unsigned getTotalComponentsNum() const

Return the total number of components in all lists derived from the clause.

MutableArrayRef< unsigned > getComponentListSizesRef()

Get the cumulative component lists sizes that are in the trailing objects of the class.

ArrayRef< Expr * > getUDMapperRefs() const

Get the user-defined mappers references that are in the trailing objects of the class.

unsigned getUniqueDeclarationsNum() const

Return the number of unique base declarations in this clause.

llvm::iterator_range< const_all_lists_sizes_iterator > const_all_lists_sizes_range

ArrayRef< unsigned > getComponentListSizesRef() const

Get the cumulative component lists sizes that are in the trailing objects of the class.

ArrayRef< unsigned > getDeclNumListsRef() const

Get the number of lists per declaration that are in the trailing objects of the class.

const_all_lists_sizes_range all_lists_sizes() const

llvm::iterator_range< const_all_num_lists_iterator > const_all_num_lists_range

void setUniqueDecls(ArrayRef< ValueDecl * > UDs)

Set the unique declarations that are in the trailing objects of the class.

llvm::iterator_range< const_all_decls_iterator > const_all_decls_range

llvm::iterator_range< mapperlist_const_iterator > mapperlist_const_range

const DeclarationNameInfo & getMapperIdInfo() const

Gets the name info for associated user-defined mapper.

const_component_lists_iterator decl_component_lists_end() const

mapperlist_iterator mapperlist_begin()

ArrayRef< unsigned >::iterator const_all_num_lists_iterator

void setComponents(ArrayRef< MappableComponent > Components, ArrayRef< unsigned > CLSs)

Set the components that are in the trailing objects of the class.

MutableArrayRef< Expr * >::iterator mapperlist_iterator

MutableArrayRef< Expr * > getUDMapperRefs()

Get the user-defined mapper references that are in the trailing objects of the class.

mapperlist_const_iterator mapperlist_begin() const

ArrayRef< const Expr * >::iterator mapperlist_const_iterator

const_all_num_lists_range all_num_lists() const

void setClauseInfo(ArrayRef< ValueDecl * > Declarations, MappableExprComponentListsRef ComponentLists)

Fill the clause information from the list of declarations and associated component lists.

unsigned getTotalComponentListNum() const

Return the number of lists derived from the clause expressions.

const_component_lists_range decl_component_lists(const ValueDecl *VD) const

void setComponentListSizes(ArrayRef< unsigned > CLSs)

Set the cumulative component lists sizes that are in the trailing objects of the class.

NestedNameSpecifierLoc getMapperQualifierLoc() const

Gets the nested name specifier for associated user-defined mapper.

ArrayRef< ValueDecl * > getUniqueDeclsRef() const

Get the unique declarations that are in the trailing objects of the class.

mapperlist_range mapperlists()

MutableArrayRef< unsigned > getDeclNumListsRef()

Get the number of lists per declaration that are in the trailing objects of the class.

const_component_lists_iterator component_lists_end() const

const_component_lists_iterator component_lists_begin() const

Iterators for all component lists.

llvm::iterator_range< const_all_components_iterator > const_all_components_range

ArrayRef< MappableComponent >::iterator const_all_components_iterator

mapperlist_const_iterator mapperlist_end() const

const_all_components_range all_components() const

void setMapperIdInfo(DeclarationNameInfo MapperId)

Set the name of associated user-defined mapper.

ArrayRef< ValueDecl * >::iterator const_all_decls_iterator

Iterators to access all the declarations, number of lists, list sizes, and components.

This represents 'mergeable' clause in the '#pragma omp ...' directive.

OMPMergeableClause()

Build an empty clause.

OMPMergeableClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'mergeable' clause.

const_child_range children() const

const_child_range used_children() const

static bool classof(const OMPClause *T)

child_range used_children()

This represents 'message' clause in the '#pragma omp error' directive.

SourceLocation getLParenLoc() const

Returns the locaiton of '('.

Expr * getMessageString() const

Returns message string of the clause.

OMPMessageClause(Expr *MS, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Build 'message' clause with message string argument.

static bool classof(const OMPClause *T)

const_child_range children() const

child_range used_children()

OMPMessageClause()

Build an empty clause.

const_child_range used_children() const

This represents the 'no_openmp' clause in the '#pragma omp assume' directive.

OMPNoOpenMPClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'no_openmp' clause.

OMPNoOpenMPClause()

Build an empty clause.

This represents the 'no_openmp_routines' clause in the '#pragma omp assume' directive.

OMPNoOpenMPRoutinesClause()

Build an empty clause.

OMPNoOpenMPRoutinesClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'no_openmp_routines' clause.

This represents the 'no_parallelism' clause in the '#pragma omp assume' directive.

OMPNoParallelismClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'no_parallelism' clause.

OMPNoParallelismClause()

Build an empty clause.

This represents 'nocontext' clause in the '#pragma omp ...' directive.

OMPNocontextClause(Expr *Cond, Stmt *HelperCond, OpenMPDirectiveKind CaptureRegion, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Build 'nocontext' clause with condition Cond.

const_child_range used_children() const

OMPNocontextClause()

Build an empty clause.

Expr * getCondition() const

Returns condition.

child_range used_children()

This represents 'nogroup' clause in the '#pragma omp ...' directive.

OMPNogroupClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'nogroup' clause.

static bool classof(const OMPClause *T)

OMPNogroupClause()

Build an empty clause.

const_child_range children() const

child_range used_children()

const_child_range used_children() const

This represents clause 'nontemporal' in the '#pragma omp ...' directives.

static OMPNontemporalClause * CreateEmpty(const ASTContext &C, unsigned N)

Creates an empty clause with the place for N variables.

const_child_range private_refs() const

static bool classof(const OMPClause *T)

child_range private_refs()

child_range used_children()

void setPrivateRefs(ArrayRef< Expr * > VL)

Sets the list of references to private copies created in private clauses.

const_child_range children() const

const_child_range used_children() const

This represents 'novariants' clause in the '#pragma omp ...' directive.

const_child_range used_children() const

OMPNovariantsClause()

Build an empty clause.

child_range used_children()

OMPNovariantsClause(Expr *Cond, Stmt *HelperCond, OpenMPDirectiveKind CaptureRegion, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Build 'novariants' clause with condition Cond.

Expr * getCondition() const

Returns condition.

This represents 'nowait' clause in the '#pragma omp ...' directive.

OMPNowaitClause(SourceLocation StartLoc=SourceLocation(), SourceLocation EndLoc=SourceLocation())

Build 'nowait' clause.

This represents 'num_tasks' clause in the '#pragma omp ...' directive.

const_child_range children() const

Expr * getNumTasks() const

Return safe iteration space distance.

SourceLocation getModifierLoc() const

Gets modifier location.

SourceLocation getLParenLoc() const

Returns the location of '('.

OMPNumTasksClause(OpenMPNumTasksClauseModifier Modifier, Expr *Size, Stmt *HelperSize, OpenMPDirectiveKind CaptureRegion, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ModifierLoc, SourceLocation EndLoc)

Build 'num_tasks' clause.

static bool classof(const OMPClause *T)

const_child_range used_children() const

OMPNumTasksClause()

Build an empty clause.

void setLParenLoc(SourceLocation Loc)

Sets the location of '('.

child_range used_children()

OpenMPNumTasksClauseModifier getModifier() const

Gets modifier.

This represents 'num_teams' clause in the '#pragma omp ...' directive.

SourceLocation getLParenLoc() const

Returns the location of '('.

const_child_range children() const

const_child_range used_children() const

static bool classof(const OMPClause *T)

child_range used_children()

void setLParenLoc(SourceLocation Loc)

Sets the location of '('.

ArrayRef< Expr * > getNumTeams() const

Return NumTeams expressions.

static OMPNumTeamsClause * CreateEmpty(const ASTContext &C, unsigned N)

Creates an empty clause with N variables.

ArrayRef< Expr * > getNumTeams()

Return NumTeams expressions.

This represents 'num_threads' clause in the '#pragma omp ...' directive.

OMPNumThreadsClause()

Build an empty clause.

OMPNumThreadsClause(Expr *NumThreads, Stmt *HelperNumThreads, OpenMPDirectiveKind CaptureRegion, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Build 'num_threads' clause with condition NumThreads.

Expr * getNumThreads() const

Returns number of threads.

const_child_range used_children() const

child_range used_children()

void setLParenLoc(SourceLocation Loc)

Sets the location of '('.

OMPOneStmtClause(Stmt *S, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

static bool classof(const OMPClause *T)

ConstStmtIterator const_child_iterator

const_child_range children() const

StmtIterator child_iterator

llvm::iterator_range< child_iterator > child_range

SourceLocation getLParenLoc() const

Returns the location of '('.

llvm::iterator_range< const_child_iterator > const_child_range

T * getStmtAs() const

Return the associated statement, potentially casted to T.

This represents 'order' clause in the '#pragma omp ...' directive.

OMPOrderClause(OpenMPOrderClauseKind A, SourceLocation ALoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc, OpenMPOrderClauseModifier Modifier, SourceLocation MLoc)

Build 'order' clause with argument A ('concurrent').

SourceLocation getLParenLoc() const

Returns the location of '('.

const_child_range children() const

const_child_range used_children() const

SourceLocation getKindKwLoc() const

Returns location of clause kind.

static bool classof(const OMPClause *T)

SourceLocation getModifierKwLoc() const

Returns location of clause modifier.

OpenMPOrderClauseKind getKind() const

Returns kind of the clause.

child_range used_children()

OMPOrderClause()

Build an empty clause.

OpenMPOrderClauseModifier getModifier() const

Returns Modifier of the clause.

void setLParenLoc(SourceLocation Loc)

Sets the location of '('.

This represents 'ordered' clause in the '#pragma omp ...' directive.

const_child_range children() const

void setLoopCounter(unsigned NumLoop, Expr *Counter)

Set loop counter for the specified loop.

static bool classof(const OMPClause *T)

void setLParenLoc(SourceLocation Loc)

Sets the location of '('.

Expr * getNumForLoops() const

Return the number of associated for-loops.

void setLoopNumIterations(unsigned NumLoop, Expr *NumIterations)

Set number of iterations for the specified loop.

SourceLocation getLParenLoc() const

Returns the location of '('.

const_child_range used_children() const

ArrayRef< Expr * > getLoopNumIterations() const

Get number of iterations for all the loops.

child_range used_children()

static OMPOrderedClause * CreateEmpty(const ASTContext &C, unsigned NumLoops)

Build an empty clause.

Expr * getLoopCounter(unsigned NumLoop)

Get loops counter for the specified loop.

Representation of the 'partial' clause of the '#pragma omp unroll' directive.

child_range used_children()

static OMPPartialClause * CreateEmpty(const ASTContext &C)

Build an empty 'partial' AST node for deserialization.

const_child_range used_children() const

SourceLocation getLParenLoc() const

Returns the location of '('.

const_child_range children() const

static bool classof(const OMPClause *T)

Expr * getFactor() const

Returns the argument of the clause or nullptr if not set.

This class represents the 'permutation' clause in the '#pragma omp interchange' directive.

static bool classof(const OMPClause *T)

ArrayRef< Expr * > getArgsRefs() const

unsigned getNumLoops() const

Returns the number of list items.

void setLParenLoc(SourceLocation Loc)

Sets the location of '('.

SourceLocation getLParenLoc() const

Returns the location of '('.

child_range used_children()

MutableArrayRef< Expr * > getArgsRefs()

Returns the permutation index expressions.

static OMPPermutationClause * CreateEmpty(const ASTContext &C, unsigned NumLoops)

Build an empty 'permutation' AST node for deserialization.

const_child_range used_children() const

const_child_range children() const

This represents 'priority' clause in the '#pragma omp ...' directive.

OMPPriorityClause(Expr *Priority, Stmt *HelperPriority, OpenMPDirectiveKind CaptureRegion, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Build 'priority' clause.

Expr * getPriority() const

Return Priority number.

const_child_range used_children() const

static bool classof(const OMPClause *T)

const_child_range children() const

child_range used_children()

OMPPriorityClause()

Build an empty clause.

SourceLocation getLParenLoc() const

Returns the location of '('.

void setLParenLoc(SourceLocation Loc)

Sets the location of '('.

Expr * getPriority()

Return Priority number.

This represents clause 'private' in the '#pragma omp ...' directives.

const_child_range children() const

private_copies_range private_copies()

static bool classof(const OMPClause *T)

const_child_range used_children() const

child_range used_children()

llvm::iterator_range< private_copies_iterator > private_copies_range

ArrayRef< const Expr * >::iterator private_copies_const_iterator

private_copies_const_range private_copies() const

llvm::iterator_range< private_copies_const_iterator > private_copies_const_range

MutableArrayRef< Expr * >::iterator private_copies_iterator

static OMPPrivateClause * CreateEmpty(const ASTContext &C, unsigned N)

Creates an empty clause with the place for N variables.

This represents 'proc_bind' clause in the '#pragma omp ...' directive.

child_range used_children()

const_child_range used_children() const

SourceLocation getProcBindKindKwLoc() const

Returns location of clause kind.

const_child_range children() const

SourceLocation getLParenLoc() const

Returns the location of '('.

OMPProcBindClause()

Build an empty clause.

void setLParenLoc(SourceLocation Loc)

Sets the location of '('.

OMPProcBindClause(llvm::omp::ProcBindKind A, SourceLocation ALoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Build 'proc_bind' clause with argument A ('master', 'close' or 'spread').

llvm::omp::ProcBindKind getProcBindKind() const

Returns kind of the clause.

static bool classof(const OMPClause *T)

This represents 'read' clause in the '#pragma omp atomic' directive.

static bool classof(const OMPClause *T)

child_range used_children()

const_child_range children() const

const_child_range used_children() const

OMPReadClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'read' clause.

OMPReadClause()

Build an empty clause.

This represents clause 'reduction' in the '#pragma omp ...' directives.

child_range used_children()

MutableArrayRef< Expr * >::iterator helper_expr_iterator

const DeclarationNameInfo & getNameInfo() const

Gets the name info for specified reduction identifier.

helper_expr_const_range rhs_exprs() const

llvm::iterator_range< helper_expr_iterator > helper_expr_range

helper_expr_const_range lhs_exprs() const

helper_expr_range copy_array_temps()

static OMPReductionClause * CreateEmpty(const ASTContext &C, unsigned N, OpenMPReductionClauseModifier Modifier)

Creates an empty clause with the place for N variables.

helper_expr_range rhs_exprs()

helper_expr_range copy_array_elems()

helper_expr_range lhs_exprs()

helper_expr_const_range copy_array_temps() const

const_child_range used_children() const

helper_expr_const_range reduction_ops() const

helper_expr_range privates()

ArrayRef< const Expr * >::iterator helper_expr_const_iterator

helper_expr_const_range privates() const

llvm::iterator_range< helper_expr_const_iterator > helper_expr_const_range

NestedNameSpecifierLoc getQualifierLoc() const

Gets the nested name specifier.

static bool classof(const OMPClause *T)

helper_expr_const_range copy_array_elems() const

helper_expr_const_range copy_ops() const

OpenMPReductionClauseModifier getModifier() const

Returns modifier.

SourceLocation getModifierLoc() const

Returns modifier location.

helper_expr_range copy_ops()

const_child_range children() const

SourceLocation getColonLoc() const

Gets location of ':' symbol in clause.

helper_expr_range reduction_ops()

This represents 'relaxed' clause in the '#pragma omp atomic' directives.

static bool classof(const OMPClause *T)

const_child_range used_children() const

child_range used_children()

OMPRelaxedClause()

Build an empty clause.

const_child_range children() const

OMPRelaxedClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'relaxed' clause.

This represents 'release' clause in the '#pragma omp atomic|flush' directives.

const_child_range children() const

child_range used_children()

OMPReleaseClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'release' clause.

OMPReleaseClause()

Build an empty clause.

static bool classof(const OMPClause *T)

const_child_range used_children() const

This represents 'reverse_offload' clause in the '#pragma omp requires' directive.

const_child_range children() const

const_child_range used_children() const

OMPReverseOffloadClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'reverse_offload' clause.

static bool classof(const OMPClause *T)

OMPReverseOffloadClause()

Build an empty clause.

child_range used_children()

This represents 'simd' clause in the '#pragma omp ...' directive.

OMPSIMDClause()

Build an empty clause.

const_child_range children() const

const_child_range used_children() const

child_range used_children()

static bool classof(const OMPClause *T)

OMPSIMDClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'simd' clause.

This represents 'safelen' clause in the '#pragma omp ...' directive.

OMPSafelenClause(Expr *Len, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Build 'safelen' clause.

Expr * getSafelen() const

Return safe iteration space distance.

OMPSafelenClause()

Build an empty clause.

This represents 'schedule' clause in the '#pragma omp ...' directive.

static bool classof(const OMPClause *T)

SourceLocation getFirstScheduleModifierLoc() const

Get the first modifier location.

OMPScheduleClause(SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation KLoc, SourceLocation CommaLoc, SourceLocation EndLoc, OpenMPScheduleClauseKind Kind, Expr *ChunkSize, Stmt *HelperChunkSize, OpenMPScheduleClauseModifier M1, SourceLocation M1Loc, OpenMPScheduleClauseModifier M2, SourceLocation M2Loc)

Build 'schedule' clause with schedule kind Kind and chunk size expression ChunkSize.

SourceLocation getScheduleKindLoc()

Get kind location.

OpenMPScheduleClauseKind getScheduleKind() const

Get kind of the clause.

SourceLocation getLParenLoc()

Get location of '('.

const Expr * getChunkSize() const

Get chunk size.

OMPScheduleClause()

Build an empty clause.

OpenMPScheduleClauseModifier getSecondScheduleModifier() const

Get the second modifier of the clause.

SourceLocation getCommaLoc()

Get location of ','.

OpenMPScheduleClauseModifier getFirstScheduleModifier() const

Get the first modifier of the clause.

child_range used_children()

SourceLocation getSecondScheduleModifierLoc() const

Get the second modifier location.

const_child_range children() const

const_child_range used_children() const

Expr * getChunkSize()

Get chunk size.

This represents 'seq_cst' clause in the '#pragma omp atomic|flush' directives.

OMPSeqCstClause()

Build an empty clause.

const_child_range used_children() const

OMPSeqCstClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'seq_cst' clause.

child_range used_children()

const_child_range children() const

static bool classof(const OMPClause *T)

This represents 'severity' clause in the '#pragma omp error' directive.

child_range used_children()

SourceLocation getLParenLoc() const

Returns the locaiton of '('.

const_child_range children() const

static bool classof(const OMPClause *T)

OMPSeverityClause()

Build an empty clause.

OMPSeverityClause(OpenMPSeverityClauseKind A, SourceLocation ALoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Build 'severity' clause with argument A ('fatal' or 'warning').

OpenMPSeverityClauseKind getSeverityKind() const

Returns kind of the clause.

const_child_range used_children() const

SourceLocation getSeverityKindKwLoc() const

Returns location of clause kind.

This represents 'simdlen' clause in the '#pragma omp ...' directive.

OMPSimdlenClause(Expr *Len, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Build 'simdlen' clause.

Expr * getSimdlen() const

Return safe iteration space distance.

OMPSimdlenClause()

Build an empty clause.

This represents the 'sizes' clause in the '#pragma omp tile' directive.

SourceLocation getLParenLoc() const

Returns the location of '('.

void setLParenLoc(SourceLocation Loc)

Sets the location of '('.

static bool classof(const OMPClause *T)

const_child_range used_children() const

void setSizesRefs(ArrayRef< Expr * > VL)

Sets the tile size expressions.

unsigned getNumSizes() const

Returns the number of list items.

child_range used_children()

MutableArrayRef< Expr * > getSizesRefs()

Returns the tile size expressions.

ArrayRef< Expr * > getSizesRefs() const

const_child_range children() const

static OMPSizesClause * CreateEmpty(const ASTContext &C, unsigned NumSizes)

Build an empty 'sizes' AST node for deserialization.

This represents clause 'task_reduction' in the '#pragma omp taskgroup' directives.

helper_expr_const_range rhs_exprs() const

llvm::iterator_range< helper_expr_iterator > helper_expr_range

NestedNameSpecifierLoc getQualifierLoc() const

Gets the nested name specifier.

llvm::iterator_range< helper_expr_const_iterator > helper_expr_const_range

helper_expr_const_range lhs_exprs() const

const_child_range used_children() const

helper_expr_const_range reduction_ops() const

helper_expr_range privates()

const_child_range children() const

SourceLocation getColonLoc() const

Gets location of ':' symbol in clause.

const DeclarationNameInfo & getNameInfo() const

Gets the name info for specified reduction identifier.

ArrayRef< const Expr * >::iterator helper_expr_const_iterator

MutableArrayRef< Expr * >::iterator helper_expr_iterator

helper_expr_range rhs_exprs()

helper_expr_range lhs_exprs()

helper_expr_range reduction_ops()

helper_expr_const_range privates() const

static OMPTaskReductionClause * CreateEmpty(const ASTContext &C, unsigned N)

Creates an empty clause with the place for N variables.

static bool classof(const OMPClause *T)

child_range used_children()

This represents 'thread_limit' clause in the '#pragma omp ...' directive.

void setLParenLoc(SourceLocation Loc)

Sets the location of '('.

ArrayRef< Expr * > getThreadLimit()

Return ThreadLimit expressions.

const_child_range children() const

ArrayRef< Expr * > getThreadLimit() const

Return ThreadLimit expressions.

SourceLocation getLParenLoc() const

Returns the location of '('.

static OMPThreadLimitClause * CreateEmpty(const ASTContext &C, unsigned N)

Creates an empty clause with N variables.

child_range used_children()

const_child_range used_children() const

static bool classof(const OMPClause *T)

This represents 'threads' clause in the '#pragma omp ...' directive.

OMPThreadsClause()

Build an empty clause.

OMPThreadsClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'threads' clause.

This represents clause 'to' in the '#pragma omp ...' directives.

static OMPToClause * CreateEmpty(const ASTContext &C, const OMPMappableExprListSizeTy &Sizes)

Creates an empty clause with the place for NumVars variables.

const_child_range used_children() const

SourceLocation getMotionModifierLoc(unsigned Cnt) const LLVM_READONLY

Fetches the motion-modifier location at 'Cnt' index of array of modifiers' locations.

ArrayRef< OpenMPMotionModifierKind > getMotionModifiers() const LLVM_READONLY

Fetches ArrayRef of motion-modifiers.

ArrayRef< SourceLocation > getMotionModifiersLoc() const LLVM_READONLY

Fetches ArrayRef of location of motion-modifiers.

const_child_range children() const

SourceLocation getColonLoc() const

Get colon location.

static bool classof(const OMPClause *T)

child_range used_children()

OpenMPMotionModifierKind getMotionModifier(unsigned Cnt) const LLVM_READONLY

Fetches the motion-modifier at 'Cnt' index of array of modifiers.

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

bool isExtensionActive(llvm::omp::TraitProperty TP)

Check the extension trait TP is active.

bool anyScoreOrCondition(llvm::function_ref< bool(Expr *&, bool)> Cond)

std::string getMangledName() const

Return a string representation identifying this context selector.

void print(llvm::raw_ostream &OS, const PrintingPolicy &Policy) const

Print a human readable representation into OS.

void getAsVariantMatchInfo(ASTContext &ASTCtx, llvm::omp::VariantMatchInfo &VMI) const

Create a variant match info object from this trait info object.

llvm::SmallVector< OMPTraitSet, 2 > Sets

The outermost level of selector sets.

This represents 'unified_address' clause in the '#pragma omp requires' directive.

OMPUnifiedAddressClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'unified_address' clause.

OMPUnifiedAddressClause()

Build an empty clause.

This represents 'untied' clause in the '#pragma omp ...' directive.

child_range used_children()

OMPUntiedClause()

Build an empty clause.

OMPUntiedClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'untied' clause.

static bool classof(const OMPClause *T)

const_child_range used_children() const

const_child_range children() const

This represents 'update' clause in the '#pragma omp atomic' directive.

const_child_range used_children() const

const_child_range children() const

OpenMPDependClauseKind getDependencyKind() const

Gets the dependence kind in clause for 'depobj' directive.

static OMPUpdateClause * CreateEmpty(const ASTContext &C, bool IsExtended)

Creates an empty clause with the place for N variables.

child_range used_children()

static bool classof(const OMPClause *T)

SourceLocation getLParenLoc() const

Gets the location of '(' in clause for 'depobj' directive.

SourceLocation getArgumentLoc() const

Gets the location of argument in clause for 'depobj' directive.

bool isExtended() const

Checks if the clause is the extended clauses for 'depobj' directive.

This represents the 'use' clause in '#pragma omp ...' directives.

child_range used_children()

SourceLocation getVarLoc() const

Returns the location of the interop variable.

OMPUseClause()

Build an empty clause.

const_child_range used_children() const

const_child_range children() const

OMPUseClause(Expr *InteropVar, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation VarLoc, SourceLocation EndLoc)

Build 'use' clause with and interop variable expression InteropVar.

static bool classof(const OMPClause *T)

SourceLocation getLParenLoc() const

Returns the location of '('.

Expr * getInteropVar() const

Returns the interop variable.

This represents clause 'use_device_addr' in the '#pragma omp ...' directives.

const_child_range used_children() const

static bool classof(const OMPClause *T)

child_range used_children()

const_child_range children() const

static OMPUseDeviceAddrClause * CreateEmpty(const ASTContext &C, const OMPMappableExprListSizeTy &Sizes)

Creates an empty clause with the place for NumVars variables.

This represents clause 'use_device_ptr' in the '#pragma omp ...' directives.

ArrayRef< const Expr * >::iterator private_copies_const_iterator

private_copies_const_range private_copies() const

llvm::iterator_range< private_copies_const_iterator > private_copies_const_range

const_child_range used_children() const

const_child_range children() const

llvm::iterator_range< inits_iterator > inits_range

MutableArrayRef< Expr * >::iterator inits_iterator

inits_const_range inits() const

static OMPUseDevicePtrClause * CreateEmpty(const ASTContext &C, const OMPMappableExprListSizeTy &Sizes)

Creates an empty clause with the place for NumVars variables.

child_range used_children()

ArrayRef< const Expr * >::iterator inits_const_iterator

static bool classof(const OMPClause *T)

MutableArrayRef< Expr * >::iterator private_copies_iterator

private_copies_range private_copies()

llvm::iterator_range< inits_const_iterator > inits_const_range

llvm::iterator_range< private_copies_iterator > private_copies_range

This represents clause 'uses_allocators' in the '#pragma omp target'-based directives.

static bool classof(const OMPClause *T)

SourceLocation getLParenLoc() const

Returns the location of '('.

child_range used_children()

const_child_range children() const

OMPUsesAllocatorsClause::Data getAllocatorData(unsigned I) const

Returns data for the specified allocator.

static OMPUsesAllocatorsClause * CreateEmpty(const ASTContext &C, unsigned N)

Creates an empty clause with the place for N allocators.

unsigned getNumberOfAllocators() const

Returns number of allocators associated with the clause.

const_child_range used_children() const

This represents clauses with the list of variables like 'private', 'firstprivate',...

varlist_const_range varlist() const

void setLParenLoc(SourceLocation Loc)

Sets the location of '('.

ArrayRef< const Expr * > getVarRefs() const

Fetches list of all variables in the clause.

OMPVarListClause(OpenMPClauseKind K, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc, unsigned N)

Build a clause with N variables.

MutableArrayRef< Expr * > getVarRefs()

Fetches list of variables associated with this clause.

varlist_const_iterator varlist_end() const

varlist_iterator varlist_end()

llvm::iterator_range< varlist_const_iterator > varlist_const_range

MutableArrayRef< Expr * >::iterator varlist_iterator

varlist_iterator varlist_begin()

ArrayRef< const Expr * >::iterator varlist_const_iterator

SourceLocation getLParenLoc() const

Returns the location of '('.

bool varlist_empty() const

unsigned varlist_size() const

varlist_const_iterator varlist_begin() const

llvm::iterator_range< varlist_iterator > varlist_range

void setVarRefs(ArrayRef< Expr * > VL)

Sets the list of variables for this clause.

This represents 'weak' clause in the '#pragma omp atomic' directives.

const_child_range used_children() const

OMPWeakClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'weak' clause.

static bool classof(const OMPClause *T)

child_range used_children()

OMPWeakClause()

Build an empty clause.

const_child_range children() const

This represents 'write' clause in the '#pragma omp atomic' directive.

OMPWriteClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'write' clause.

const_child_range used_children() const

child_range used_children()

static bool classof(const OMPClause *T)

const_child_range children() const

OMPWriteClause()

Build an empty clause.

This represents 'ompx_attribute' clause in a directive that might generate an outlined function.

ArrayRef< const Attr * > getAttrs() const

Returned the attributes parsed from this clause.

OMPXAttributeClause()

Build an empty clause.

void setLParenLoc(SourceLocation Loc)

Sets the location of '('.

SourceLocation getLParenLoc() const

Returns the location of '('.

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

Build 'ompx_attribute' clause.

This represents 'ompx_bare' clause in the '#pragma omp target teams ...' directive.

OMPXBareClause()=default

Build an empty clause.

OMPXBareClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'ompx_bare' clause.

This represents 'ompx_dyn_cgroup_mem' clause in the '#pragma omp target ...' directive.

OMPXDynCGroupMemClause(Expr *Size, Stmt *HelperSize, OpenMPDirectiveKind CaptureRegion, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Build 'ompx_dyn_cgroup_mem' clause.

Expr * getSize()

Return the size expression.

Expr * getSize() const

Return the size expression.

OMPXDynCGroupMemClause()

Build an empty clause.

Smart pointer class that efficiently represents Objective-C method names.

Encodes a location in the source.

Stmt - This represents one statement.

llvm::iterator_range< child_iterator > child_range

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

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

bool checkFailClauseParameter(OpenMPClauseKind FailClauseParameter)

Checks if the parameter to the fail clause in "#pragma atomic compare fail" is restricted only to mem...

llvm::omp::Directive OpenMPDirectiveKind

OpenMP directives.

OpenMPDefaultmapClauseModifier

OpenMP modifiers for 'defaultmap' clause.

@ OMPC_DEFAULTMAP_MODIFIER_unknown

OpenMPOrderClauseModifier

OpenMP modifiers for 'order' clause.

@ OMPC_ORDER_MODIFIER_unknown

std::add_pointer_t< std::add_const_t< T > > const_ptr

OpenMPAtClauseKind

OpenMP attributes for 'at' clause.

OpenMPReductionClauseModifier

OpenMP modifiers for 'reduction' clause.

@ Create

'create' clause, allowed on Compute and Combined constructs, plus 'data', 'enter data',...

OpenMPScheduleClauseModifier

OpenMP modifiers for 'schedule' clause.

@ OMPC_SCHEDULE_MODIFIER_unknown

llvm::omp::Clause OpenMPClauseKind

OpenMP clauses.

OpenMPDistScheduleClauseKind

OpenMP attributes for 'dist_schedule' clause.

@ OMPC_DIST_SCHEDULE_unknown

OpenMPDoacrossClauseModifier

OpenMP dependence types for 'doacross' clause.

const StreamingDiagnostic & operator<<(const StreamingDiagnostic &DB, const ASTContext::SectionInfo &Section)

Insertion operator for diagnostics.

static constexpr unsigned NumberOfOMPMapClauseModifiers

Number of allowed map-type-modifiers.

@ Property

The type of a property.

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.

static constexpr unsigned NumberOfOMPMotionModifiers

Number of allowed motion-modifiers.

OpenMPMotionModifierKind

OpenMP modifier kind for 'to' or 'from' clause.

@ OMPC_MOTION_MODIFIER_unknown

OpenMPDefaultmapClauseKind

OpenMP attributes for 'defaultmap' clause.

@ OMPC_DEFAULTMAP_unknown

OpenMPAllocateClauseModifier

OpenMP modifiers for 'allocate' clause.

OpenMPLinearClauseKind

OpenMP attributes for 'linear' clause.

const FunctionProtoType * T

OpenMPAtomicDefaultMemOrderClauseKind

OpenMP attributes for 'atomic_default_mem_order' clause.

@ OMPC_ATOMIC_DEFAULT_MEM_ORDER_unknown

U cast(CodeGen::Address addr)

OpenMPDeviceClauseModifier

OpenMP modifiers for 'device' clause.

OpenMPMapModifierKind

OpenMP modifier kind for 'map' clause.

@ OMPC_MAP_MODIFIER_unknown

OpenMPOrderClauseKind

OpenMP attributes for 'order' clause.

OpenMPScheduleClauseKind

OpenMP attributes for 'schedule' clause.

OpenMPMapClauseKind

OpenMP mapping kind for 'map' clause.

Diagnostic wrappers for TextAPI types for error reporting.

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

SourceLocation OmpAllMemoryLoc

Location of 'omp_all_memory'.

SourceLocation ColonLoc

Colon location.

OpenMPDependClauseKind DepKind

Dependency type (one of in, out, inout).

SourceLocation DepLoc

Dependency type location.

This structure contains all sizes needed for by an OMPMappableExprListClause.

unsigned NumComponentLists

Number of component lists.

OMPMappableExprListSizeTy(unsigned NumVars, unsigned NumUniqueDeclarations, unsigned NumComponentLists, unsigned NumComponents)

unsigned NumVars

Number of expressions listed.

OMPMappableExprListSizeTy()=default

unsigned NumUniqueDeclarations

Number of unique base declarations.

unsigned NumComponents

Total number of expression components.

const_child_range used_children() const

static bool classof(const OMPClause *T)

OMPNoChildClause(SourceLocation StartLoc, SourceLocation EndLoc)

Build 'ClauseKind' clause.

child_range used_children()

OMPNoChildClause()

Build an empty clause.

const_child_range children() const

llvm::omp::TraitProperty Kind

StringRef RawString

The raw string as we parsed it.

llvm::omp::TraitSelector Kind

llvm::SmallVector< OMPTraitProperty, 1 > Properties

llvm::SmallVector< OMPTraitSelector, 2 > Selectors

Data for list of allocators.

SourceLocation LParenLoc

Locations of '(' and ')' symbols.

Expr * AllocatorTraits

Allocator traits.

Expr * Allocator

Allocator.

This structure contains most locations needed for by an OMPVarListClause.

SourceLocation StartLoc

Starting location of the clause (the clause keyword).

SourceLocation LParenLoc

Location of '('.

SourceLocation EndLoc

Ending location of the clause.

OMPVarListLocTy()=default

OMPVarListLocTy(SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)

Describes how types, statements, expressions, and declarations should be printed.

Clang specific specialization of the OMPContext to lookup target features.

bool matchesISATrait(StringRef RawString) const override

See llvm::omp::OMPContext::matchesISATrait.

virtual ~TargetOMPContext()=default


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4