16 #ifndef LLVM_CLANG_AST_OPENMPCLAUSE_H
17 #define LLVM_CLANG_AST_OPENMPCLAUSE_H
42 : StartLoc(StartLoc), EndLoc(EndLoc),
Kind(K) {}
87 static_cast<T *
>(
this)->
template getTrailingObjects<Expr *>(), NumVars);
92 assert(VL.size() == NumVars &&
93 "Number of variables is not the same as the preallocated buffer");
94 std::copy(VL.begin(), VL.end(),
95 static_cast<T *
>(
this)->
template getTrailingObjects<Expr *>());
108 :
OMPClause(K, StartLoc, EndLoc), LParenLoc(LParenLoc), NumVars(N) {}
138 return llvm::makeArrayRef(
139 static_cast<const T *>(
this)->
template getTrailingObjects<Expr *>(),
167 void setCondition(
Expr *Cond) { Condition = Cond; }
173 void setNameModifierLoc(SourceLocation Loc) { NameModifierLoc = Loc; }
193 :
OMPClause(OMPC_if, StartLoc, EndLoc), LParenLoc(LParenLoc),
194 Condition(Cond), ColonLoc(ColonLoc), NameModifier(NameModifier),
195 NameModifierLoc(NameModifierLoc) {}
244 void setCondition(
Expr *Cond) { Condition = Cond; }
256 :
OMPClause(OMPC_final, StartLoc, EndLoc), LParenLoc(LParenLoc),
262 :
OMPClause(OMPC_final, SourceLocation(), SourceLocation()),
263 LParenLoc(SourceLocation()), Condition(nullptr) {}
298 void setNumThreads(Expr *NThreads) { NumThreads = NThreads; }
310 :
OMPClause(OMPC_num_threads, StartLoc, EndLoc), LParenLoc(LParenLoc),
311 NumThreads(NumThreads) {}
355 void setSafelen(
Expr *Len) { Safelen = Len; }
366 :
OMPClause(OMPC_safelen, StartLoc, EndLoc), LParenLoc(LParenLoc),
410 void setSimdlen(
Expr *Len) { Simdlen = Len; }
421 :
OMPClause(OMPC_simdlen, StartLoc, EndLoc), LParenLoc(LParenLoc),
465 void setNumForLoops(
Expr *Num) { NumForLoops = Num; }
477 :
OMPClause(OMPC_collapse, StartLoc, EndLoc), LParenLoc(LParenLoc),
528 void setDefaultKindKwLoc(
SourceLocation KLoc) { KindKwLoc = KLoc; }
542 :
OMPClause(OMPC_default, StartLoc, EndLoc), LParenLoc(LParenLoc),
543 Kind(A), KindKwLoc(ALoc) {}
600 void setProcBindKindKwLoc(
SourceLocation KLoc) { KindKwLoc = KLoc; }
615 :
OMPClause(OMPC_proc_bind, StartLoc, EndLoc), LParenLoc(LParenLoc),
616 Kind(A), KindKwLoc(ALoc) {}
660 enum {FIRST, SECOND, NUM_MODIFIERS};
670 enum { CHUNK_SIZE, HELPER_CHUNK_SIZE, NUM_EXPRS };
671 Stmt *ChunkSizes[NUM_EXPRS];
683 Modifiers[FIRST] = M;
690 Modifiers[SECOND] = M;
694 void setFirstScheduleModifierLoc(SourceLocation Loc) {
695 ModifiersLoc[FIRST] = Loc;
699 void setSecondScheduleModifierLoc(SourceLocation Loc) {
700 ModifiersLoc[SECOND] = Loc;
708 Modifiers[FIRST] = M;
711 Modifiers[SECOND] = M;
718 void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
723 void setScheduleKindLoc(SourceLocation KLoc) { KindLoc = KLoc; }
728 void setCommaLoc(SourceLocation Loc) { CommaLoc = Loc; }
733 void setChunkSize(Expr *
E) { ChunkSizes[CHUNK_SIZE] =
E; }
738 void setHelperChunkSize(Expr *
E) { ChunkSizes[HELPER_CHUNK_SIZE] =
E; }
760 Expr *ChunkSize,
Expr *HelperChunkSize,
763 :
OMPClause(OMPC_schedule, StartLoc, EndLoc), LParenLoc(LParenLoc),
764 Kind(Kind), KindLoc(KLoc), CommaLoc(CommaLoc) {
765 ChunkSizes[CHUNK_SIZE] = ChunkSize;
766 ChunkSizes[HELPER_CHUNK_SIZE] = HelperChunkSize;
767 Modifiers[FIRST] = M1;
768 Modifiers[SECOND] = M2;
769 ModifiersLoc[FIRST] = M1Loc;
770 ModifiersLoc[SECOND] = M2Loc;
778 ChunkSizes[CHUNK_SIZE] =
nullptr;
779 ChunkSizes[HELPER_CHUNK_SIZE] =
nullptr;
790 return Modifiers[FIRST];
795 return Modifiers[SECOND];
806 return ModifiersLoc[FIRST];
811 return ModifiersLoc[SECOND];
822 return dyn_cast_or_null<Expr>(ChunkSizes[CHUNK_SIZE]);
827 return dyn_cast_or_null<Expr>(ChunkSizes[HELPER_CHUNK_SIZE]);
832 return dyn_cast_or_null<Expr>(ChunkSizes[HELPER_CHUNK_SIZE]);
840 return child_range(&ChunkSizes[CHUNK_SIZE], &ChunkSizes[CHUNK_SIZE] + 1);
860 void setNumForLoops(
Expr *Num) { NumForLoops = Num; }
872 :
OMPClause(OMPC_ordered, StartLoc, EndLoc), LParenLoc(LParenLoc),
911 :
OMPClause(OMPC_nowait, StartLoc, EndLoc) {}
942 :
OMPClause(OMPC_untied, StartLoc, EndLoc) {}
974 :
OMPClause(OMPC_mergeable, StartLoc, EndLoc) {}
1005 :
OMPClause(OMPC_read, StartLoc, EndLoc) {}
1035 :
OMPClause(OMPC_write, StartLoc, EndLoc) {}
1067 :
OMPClause(OMPC_update, StartLoc, EndLoc) {}
1099 :
OMPClause(OMPC_capture, StartLoc, EndLoc) {}
1131 :
OMPClause(OMPC_seq_cst, StartLoc, EndLoc) {}
1158 friend TrailingObjects;
1185 void setPrivateCopies(ArrayRef<Expr *> VL);
1189 MutableArrayRef<Expr *> getPrivateCopies() {
1192 ArrayRef<const Expr *> getPrivateCopies()
const {
1207 SourceLocation LParenLoc,
1208 SourceLocation EndLoc, ArrayRef<Expr *> VL,
1209 ArrayRef<Expr *> PrivateVL);
1220 typedef llvm::iterator_range<private_copies_const_iterator>
1225 getPrivateCopies().
end());
1229 getPrivateCopies().
end());
1254 friend TrailingObjects;
1268 LParenLoc, EndLoc, N) {}
1281 void setPrivateCopies(ArrayRef<Expr *> VL);
1285 MutableArrayRef<Expr *> getPrivateCopies() {
1288 ArrayRef<const Expr *> getPrivateCopies()
const {
1295 void setInits(ArrayRef<Expr *> VL);
1299 MutableArrayRef<Expr *>
getInits() {
1300 return MutableArrayRef<Expr *>(getPrivateCopies().end(),
varlist_size());
1302 ArrayRef<const Expr *>
getInits()
const {
1319 static OMPFirstprivateClause *
1321 SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> PrivateVL,
1322 ArrayRef<Expr *> InitVL);
1333 typedef llvm::iterator_range<private_copies_const_iterator>
1338 getPrivateCopies().
end());
1342 getPrivateCopies().
end());
1395 friend TrailingObjects;
1409 LParenLoc, EndLoc, N) {}
1422 MutableArrayRef<Expr *> getPrivateCopies() {
1425 ArrayRef<const Expr *> getPrivateCopies()
const {
1433 void setSourceExprs(ArrayRef<Expr *> SrcExprs);
1436 MutableArrayRef<Expr *> getSourceExprs() {
1437 return MutableArrayRef<Expr *>(getPrivateCopies().end(),
varlist_size());
1439 ArrayRef<const Expr *> getSourceExprs()
const {
1447 void setDestinationExprs(ArrayRef<Expr *> DstExprs);
1450 MutableArrayRef<Expr *> getDestinationExprs() {
1451 return MutableArrayRef<Expr *>(getSourceExprs().end(),
varlist_size());
1453 ArrayRef<const Expr *> getDestinationExprs()
const {
1460 void setAssignmentOps(ArrayRef<Expr *> AssignmentOps);
1463 MutableArrayRef<Expr *> getAssignmentOps() {
1464 return MutableArrayRef<Expr *>(getDestinationExprs().end(),
varlist_size());
1466 ArrayRef<const Expr *> getAssignmentOps()
const {
1467 return llvm::makeArrayRef(getDestinationExprs().
end(),
varlist_size());
1493 static OMPLastprivateClause *
1495 SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> SrcExprs,
1496 ArrayRef<Expr *> DstExprs, ArrayRef<Expr *> AssignmentOps);
1507 typedef llvm::iterator_range<helper_expr_const_iterator>
1516 getPrivateCopies().
end());
1520 getPrivateCopies().
end());
1524 getSourceExprs().
end());
1531 getDestinationExprs().
end());
1535 getDestinationExprs().
end());
1539 getAssignmentOps().
end());
1543 getAssignmentOps().
end());
1567 friend TrailingObjects;
1631 friend TrailingObjects;
1656 LParenLoc, EndLoc, N),
1657 ColonLoc(ColonLoc), QualifierLoc(QualifierLoc), NameInfo(NameInfo) {}
1667 ColonLoc(), QualifierLoc(), NameInfo() {}
1672 void setNameInfo(DeclarationNameInfo DNI) { NameInfo = DNI; }
1674 void setQualifierLoc(NestedNameSpecifierLoc NSL) { QualifierLoc = NSL; }
1692 void setLHSExprs(ArrayRef<Expr *> LHSExprs);
1695 MutableArrayRef<Expr *> getLHSExprs() {
1698 ArrayRef<const Expr *> getLHSExprs()
const {
1707 void setRHSExprs(ArrayRef<Expr *> RHSExprs);
1710 MutableArrayRef<Expr *> getRHSExprs() {
1711 return MutableArrayRef<Expr *>(getLHSExprs().end(),
varlist_size());
1713 ArrayRef<const Expr *> getRHSExprs()
const {
1721 void setReductionOps(ArrayRef<Expr *> ReductionOps);
1724 MutableArrayRef<Expr *> getReductionOps() {
1725 return MutableArrayRef<Expr *>(getRHSExprs().end(),
varlist_size());
1727 ArrayRef<const Expr *> getReductionOps()
const {
1761 static OMPReductionClause *
1763 SourceLocation
ColonLoc, SourceLocation EndLoc, ArrayRef<Expr *> VL,
1764 NestedNameSpecifierLoc QualifierLoc,
1765 const DeclarationNameInfo &NameInfo, ArrayRef<Expr *>
Privates,
1766 ArrayRef<Expr *> LHSExprs, ArrayRef<Expr *> RHSExprs,
1767 ArrayRef<Expr *> ReductionOps);
1785 typedef llvm::iterator_range<helper_expr_const_iterator>
1808 getReductionOps().
end());
1812 getReductionOps().
end());
1837 friend TrailingObjects;
1863 SourceLocation
ColonLoc, SourceLocation EndLoc,
1867 Modifier(Modifier), ModifierLoc(ModifierLoc), ColonLoc(ColonLoc) {}
1875 SourceLocation(), SourceLocation(),
1902 ArrayRef<const Expr *>
getInits()
const {
1918 ArrayRef<const Expr *>
getFinals()
const {
1928 void setInits(ArrayRef<Expr *> IL);
1949 SourceLocation
ColonLoc, SourceLocation EndLoc, ArrayRef<Expr *> VL,
1950 ArrayRef<Expr *> PL, ArrayRef<Expr *> IL, Expr *Step, Expr *CalcStep);
2068 void setAlignment(Expr *A) { *varlist_end() = A; }
2079 SourceLocation
ColonLoc, SourceLocation EndLoc,
2083 ColonLoc(ColonLoc) {}
2091 SourceLocation(), SourceLocation(),
2106 SourceLocation LParenLoc,
2108 SourceLocation EndLoc, ArrayRef<Expr *> VL,
2129 return child_range(reinterpret_cast<Stmt **>(varlist_begin()),
2130 reinterpret_cast<Stmt **>(varlist_end()));
2134 return T->getClauseKind() == OMPC_aligned;
2173 SourceLocation EndLoc,
unsigned N)
2183 SourceLocation(), SourceLocation(),
2189 void setSourceExprs(ArrayRef<Expr *> SrcExprs);
2192 MutableArrayRef<Expr *> getSourceExprs() {
2193 return MutableArrayRef<Expr *>(varlist_end(), varlist_size());
2195 ArrayRef<const Expr *> getSourceExprs()
const {
2196 return llvm::makeArrayRef(varlist_end(), varlist_size());
2202 void setDestinationExprs(ArrayRef<Expr *> DstExprs);
2205 MutableArrayRef<Expr *> getDestinationExprs() {
2206 return MutableArrayRef<Expr *>(getSourceExprs().end(), varlist_size());
2208 ArrayRef<const Expr *> getDestinationExprs()
const {
2209 return llvm::makeArrayRef(getSourceExprs().
end(), varlist_size());
2216 void setAssignmentOps(ArrayRef<Expr *> AssignmentOps);
2219 MutableArrayRef<Expr *> getAssignmentOps() {
2220 return MutableArrayRef<Expr *>(getDestinationExprs().end(), varlist_size());
2222 ArrayRef<const Expr *> getAssignmentOps()
const {
2223 return llvm::makeArrayRef(getDestinationExprs().
end(), varlist_size());
2251 SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> SrcExprs,
2252 ArrayRef<Expr *> DstExprs, ArrayRef<Expr *> AssignmentOps);
2263 typedef llvm::iterator_range<helper_expr_const_iterator>
2268 getSourceExprs().
end());
2275 getDestinationExprs().
end());
2279 getDestinationExprs().
end());
2283 getAssignmentOps().
end());
2287 getAssignmentOps().
end());
2291 return child_range(reinterpret_cast<Stmt **>(varlist_begin()),
2292 reinterpret_cast<Stmt **>(varlist_end()));
2296 return T->getClauseKind() == OMPC_copyin;
2323 SourceLocation EndLoc,
unsigned N)
2325 LParenLoc, EndLoc, N) {}
2333 OMPC_copyprivate, SourceLocation(), SourceLocation(),
2334 SourceLocation(), N) {}
2339 void setSourceExprs(ArrayRef<Expr *> SrcExprs);
2342 MutableArrayRef<Expr *> getSourceExprs() {
2343 return MutableArrayRef<Expr *>(varlist_end(), varlist_size());
2345 ArrayRef<const Expr *> getSourceExprs()
const {
2346 return llvm::makeArrayRef(varlist_end(), varlist_size());
2352 void setDestinationExprs(ArrayRef<Expr *> DstExprs);
2355 MutableArrayRef<Expr *> getDestinationExprs() {
2356 return MutableArrayRef<Expr *>(getSourceExprs().end(), varlist_size());
2358 ArrayRef<const Expr *> getDestinationExprs()
const {
2359 return llvm::makeArrayRef(getSourceExprs().
end(), varlist_size());
2366 void setAssignmentOps(ArrayRef<Expr *> AssignmentOps);
2369 MutableArrayRef<Expr *> getAssignmentOps() {
2370 return MutableArrayRef<Expr *>(getDestinationExprs().end(), varlist_size());
2372 ArrayRef<const Expr *> getAssignmentOps()
const {
2373 return llvm::makeArrayRef(getDestinationExprs().
end(), varlist_size());
2400 SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> SrcExprs,
2401 ArrayRef<Expr *> DstExprs, ArrayRef<Expr *> AssignmentOps);
2412 typedef llvm::iterator_range<helper_expr_const_iterator>
2417 getSourceExprs().
end());
2424 getDestinationExprs().
end());
2428 getDestinationExprs().
end());
2432 getAssignmentOps().
end());
2436 getAssignmentOps().
end());
2440 return child_range(reinterpret_cast<Stmt **>(varlist_begin()),
2441 reinterpret_cast<Stmt **>(varlist_end()));
2445 return T->getClauseKind() == OMPC_copyprivate;
2474 OMPFlushClause(SourceLocation StartLoc, SourceLocation LParenLoc,
2475 SourceLocation EndLoc,
unsigned N)
2485 SourceLocation(), SourceLocation(),
2498 SourceLocation LParenLoc, SourceLocation EndLoc,
2499 ArrayRef<Expr *> VL);
2508 return child_range(reinterpret_cast<Stmt **>(varlist_begin()),
2509 reinterpret_cast<Stmt **>(varlist_end()));
2513 return T->getClauseKind() == OMPC_flush;
2535 SourceLocation DepLoc;
2546 SourceLocation EndLoc,
unsigned N)
2557 SourceLocation(), SourceLocation(),
2564 void setDependencyLoc(SourceLocation Loc) { DepLoc = Loc; }
2584 SourceLocation DepLoc, SourceLocation
ColonLoc, ArrayRef<Expr *> VL);
2600 return child_range(reinterpret_cast<Stmt **>(varlist_begin()),
2601 reinterpret_cast<Stmt **>(varlist_end()));
2605 return T->getClauseKind() == OMPC_depend;
2621 SourceLocation LParenLoc;
2628 void setDevice(Expr *
E) { Device =
E; }
2639 SourceLocation EndLoc)
2640 :
OMPClause(OMPC_device, StartLoc, EndLoc), LParenLoc(LParenLoc),
2646 :
OMPClause(OMPC_device, SourceLocation(), SourceLocation()),
2647 LParenLoc(SourceLocation()), Device(nullptr) {}
2658 return T->getClauseKind() == OMPC_device;
2661 child_range
children() {
return child_range(&Device, &Device + 1); }
2679 :
OMPClause(OMPC_threads, StartLoc, EndLoc) {}
2684 :
OMPClause(OMPC_threads, SourceLocation(), SourceLocation()) {}
2687 return T->getClauseKind() == OMPC_threads;
2691 return child_range(child_iterator(), child_iterator());
2710 :
OMPClause(OMPC_simd, StartLoc, EndLoc) {}
2717 return T->getClauseKind() == OMPC_simd;
2721 return child_range(child_iterator(), child_iterator());
2745 SourceLocation MapLoc;
2765 void setMapLoc(SourceLocation TLoc) { MapLoc = TLoc; }
2781 SourceLocation StartLoc, SourceLocation LParenLoc,
2782 SourceLocation EndLoc,
unsigned N)
2784 MapTypeModifier(MapTypeModifier), MapType(MapType), MapLoc(MapLoc) {}
2792 SourceLocation(), SourceLocation(), N),
2807 SourceLocation LParenLoc,
2808 SourceLocation EndLoc, ArrayRef<Expr *> VL,
2823 return MapTypeModifier;
2827 SourceLocation
getMapLoc() const LLVM_READONLY {
return MapLoc; }
2833 return T->getClauseKind() == OMPC_map;
2838 reinterpret_cast<Stmt **>(varlist_begin()),
2839 reinterpret_cast<Stmt **>(varlist_end()));
2855 SourceLocation LParenLoc;
2862 void setNumTeams(Expr *
E) { NumTeams =
E; }
2873 SourceLocation EndLoc)
2874 :
OMPClause(OMPC_num_teams, StartLoc, EndLoc), LParenLoc(LParenLoc),
2880 :
OMPClause(OMPC_num_teams, SourceLocation(), SourceLocation()),
2881 LParenLoc(SourceLocation()), NumTeams(nullptr) {}
2892 return T->getClauseKind() == OMPC_num_teams;
2895 child_range
children() {
return child_range(&NumTeams, &NumTeams + 1); }
2910 SourceLocation LParenLoc;
2917 void setThreadLimit(Expr *
E) { ThreadLimit =
E; }
2928 SourceLocation LParenLoc, SourceLocation EndLoc)
2929 :
OMPClause(OMPC_thread_limit, StartLoc, EndLoc), LParenLoc(LParenLoc),
2935 :
OMPClause(OMPC_thread_limit, SourceLocation(), SourceLocation()),
2936 LParenLoc(SourceLocation()), ThreadLimit(nullptr) {}
2947 return T->getClauseKind() == OMPC_thread_limit;
2950 child_range
children() {
return child_range(&ThreadLimit, &ThreadLimit + 1); }
2965 SourceLocation LParenLoc;
2972 void setPriority(Expr *
E) { Priority =
E; }
2983 SourceLocation EndLoc)
2984 :
OMPClause(OMPC_priority, StartLoc, EndLoc), LParenLoc(LParenLoc),
2990 :
OMPClause(OMPC_priority, SourceLocation(), SourceLocation()),
2991 LParenLoc(SourceLocation()), Priority(nullptr) {}
3002 return T->getClauseKind() == OMPC_priority;
3005 child_range
children() {
return child_range(&Priority, &Priority + 1); }
3020 SourceLocation LParenLoc;
3025 void setGrainsize(Expr *Size) { Grainsize = Size; }
3035 SourceLocation LParenLoc, SourceLocation EndLoc)
3036 :
OMPClause(OMPC_grainsize, StartLoc, EndLoc), LParenLoc(LParenLoc),
3042 :
OMPClause(OMPC_grainsize, SourceLocation(), SourceLocation()),
3043 LParenLoc(SourceLocation()), Grainsize(nullptr) {}
3054 return T->getClauseKind() == OMPC_grainsize;
3057 child_range
children() {
return child_range(&Grainsize, &Grainsize + 1); }
3075 :
OMPClause(OMPC_nogroup, StartLoc, EndLoc) {}
3080 :
OMPClause(OMPC_nogroup, SourceLocation(), SourceLocation()) {}
3083 return T->getClauseKind() == OMPC_nogroup;
3087 return child_range(child_iterator(), child_iterator());
3103 SourceLocation LParenLoc;
3108 void setNumTasks(Expr *Size) { NumTasks = Size; }
3118 SourceLocation LParenLoc, SourceLocation EndLoc)
3119 :
OMPClause(OMPC_num_tasks, StartLoc, EndLoc), LParenLoc(LParenLoc),
3125 :
OMPClause(OMPC_num_tasks, SourceLocation(), SourceLocation()),
3126 LParenLoc(SourceLocation()), NumTasks(nullptr) {}
3137 return T->getClauseKind() == OMPC_num_tasks;
3140 child_range
children() {
return child_range(&NumTasks, &NumTasks + 1); }
3154 SourceLocation LParenLoc;
3160 void setHint(Expr *H) { Hint = H; }
3171 SourceLocation EndLoc)
3172 :
OMPClause(OMPC_hint, StartLoc, EndLoc), LParenLoc(LParenLoc),
3178 :
OMPClause(OMPC_hint, SourceLocation(), SourceLocation()),
3179 LParenLoc(SourceLocation()), Hint(nullptr) {}
3187 Expr *
getHint()
const {
return cast_or_null<Expr>(Hint); }
3190 return T->getClauseKind() == OMPC_hint;
3193 child_range
children() {
return child_range(&Hint, &Hint + 1); }
3198 #endif // LLVM_CLANG_AST_OPENMPCLAUSE_H
static OMPPrivateClause * Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc, ArrayRef< Expr * > VL, ArrayRef< Expr * > PrivateVL)
Creates clause with a list of variables VL.
OMPCaptureClause(SourceLocation StartLoc, SourceLocation EndLoc)
Build 'capture' clause.
private_copies_const_range private_copies() const
varlist_const_range varlists() const
helper_expr_range source_exprs()
OMPHintClause()
Build an empty clause.
OMPUntiedClause(SourceLocation StartLoc, SourceLocation EndLoc)
Build 'untied' clause.
OpenMPScheduleClauseModifier getSecondScheduleModifier() const
Get the second modifier of the clause.
llvm::iterator_range< private_copies_iterator > private_copies_range
This represents 'thread_limit' clause in the '#pragma omp ...' directive.
void setLParenLoc(SourceLocation Loc)
Sets the location of '('.
OMPSeqCstClause()
Build an empty clause.
SourceLocation getLParenLoc() const
Returns the location of '('.
This represents clause 'copyin' in the '#pragma omp ...' directives.
helper_expr_range source_exprs()
SourceLocation getColonLoc() const
Get colon location.
helper_expr_const_range source_exprs() const
static bool classof(const OMPClause *T)
MutableArrayRef< Expr * >::iterator inits_iterator
SourceLocation getCommaLoc()
Get location of ','.
helper_expr_range privates()
Expr * getSimdlen() const
Return safe iteration space distance.
private_copies_range private_copies()
static bool classof(const OMPClause *T)
static bool classof(const OMPClause *T)
OMPUpdateClause(SourceLocation StartLoc, SourceLocation EndLoc)
Build 'update' clause.
SourceLocation getLParenLoc() const
Returns the location of '('.
OpenMPProcBindClauseKind getProcBindKind() const
Returns kind of the clause.
SourceLocation getLParenLoc() const
Returns the location of '('.
static OMPFirstprivateClause * CreateEmpty(const ASTContext &C, unsigned N)
Creates an empty clause with the place for N variables.
This represents 'grainsize' clause in the '#pragma omp ...' directive.
static bool classof(const OMPClause *T)
void setLParenLoc(SourceLocation Loc)
Sets the location of '('.
llvm::iterator_range< child_iterator > child_range
This represents 'if' clause in the '#pragma omp ...' directive.
OMPSIMDClause(SourceLocation StartLoc, SourceLocation EndLoc)
Build 'simd' clause.
This represents 'priority' clause in the '#pragma omp ...' directive.
void setLParenLoc(SourceLocation Loc)
Sets the location of '('.
SourceLocation getColonLoc() const
Returns the location of ':'.
This represents 'update' clause in the '#pragma omp atomic' directive.
void setLParenLoc(SourceLocation Loc)
Sets the location of '('.
SourceLocation getLParenLoc() const
Returns the location of '('.
SourceLocation getColonLoc() const
Get colon location.
ArrayRef< const Expr * > getVarRefs() const
Fetches list of all variables in the clause.
void setLParenLoc(SourceLocation Loc)
Sets the location of '('.
Expr * getAlignment()
Returns alignment.
OMPOrderedClause(Expr *Num, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
Build 'ordered' clause.
static OMPReductionClause * CreateEmpty(const ASTContext &C, unsigned N)
Creates an empty clause with the place for N variables.
Expr * getHelperChunkSize() const
Get helper chunk size.
void setLParenLoc(SourceLocation Loc)
Sets the location of '('.
static bool classof(const OMPClause *T)
This represents 'read' clause in the '#pragma omp atomic' directive.
OMPFinalClause()
Build an empty clause.
Expr * getNumTeams() const
Return NumTeams number.
helper_expr_range source_exprs()
This represents clause 'private' in the '#pragma omp ...' directives.
static bool classof(const OMPClause *T)
static bool classof(const OMPClause *T)
ArrayRef< const Expr * >::iterator private_copies_const_iterator
This represents 'num_threads' clause in the '#pragma omp ...' directive.
MutableArrayRef< Expr * >::iterator privates_iterator
bool varlist_empty() const
This represents implicit clause 'flush' for the '#pragma omp flush' directive.
OMPIfClause(OpenMPDirectiveKind NameModifier, Expr *Cond, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation NameModifierLoc, SourceLocation ColonLoc, SourceLocation EndLoc)
Build 'if' clause with condition Cond.
static bool classof(const OMPClause *T)
OMPNumTasksClause(Expr *Size, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
Build 'num_tasks' clause.
OMPNogroupClause(SourceLocation StartLoc, SourceLocation EndLoc)
Build 'nogroup' clause.
Expr * getNumForLoops() const
Return the number of associated for-loops.
llvm::iterator_range< private_copies_iterator > private_copies_range
OMPThreadLimitClause(Expr *E, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
Build 'thread_limit' clause.
This represents 'nogroup' clause in the '#pragma omp ...' directive.
This represents 'safelen' clause in the '#pragma omp ...' directive.
static bool classof(const OMPClause *T)
OMPHintClause(Expr *Hint, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
Build 'hint' clause with expression Hint.
SourceLocation getLParenLoc() const
Returns the location of '('.
Expr * getNumThreads() const
Returns number of threads.
This represents clauses with the list of variables like 'private', 'firstprivate', 'copyin', 'shared', or 'reduction' clauses in the '#pragma omp ...' directives.
OMPProcBindClause()
Build an empty clause.
SourceLocation getLParenLoc() const
Returns the location of '('.
static OMPSharedClause * Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc, ArrayRef< Expr * > VL)
Creates clause with a list of variables VL.
llvm::iterator_range< helper_expr_const_iterator > helper_expr_const_range
ArrayRef< const Expr * >::iterator updates_const_iterator
static OMPFirstprivateClause * Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc, ArrayRef< Expr * > VL, ArrayRef< Expr * > PrivateVL, ArrayRef< Expr * > InitVL)
Creates clause with a list of variables VL.
clang::OMPLinearClause OMPVarListClause, llvm::TrailingObjects getPrivates()
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
A C++ nested-name-specifier augmented with source location information.
llvm::iterator_range< helper_expr_const_iterator > helper_expr_const_range
ArrayRef< const Expr * >::iterator finals_const_iterator
This represents 'simd' clause in the '#pragma omp ...' directive.
OpenMPScheduleClauseModifier getFirstScheduleModifier() const
Get the first modifier of the clause.
static bool classof(const OMPClause *T)
OpenMPLinearClauseKind
OpenMP attributes for 'linear' clause.
static bool classof(const OMPClause *T)
helper_expr_range assignment_ops()
This represents clause 'lastprivate' in the '#pragma omp ...' directives.
OMPSIMDClause()
Build an empty clause.
void setUpdates(ArrayRef< Expr * > UL)
Sets the list of update expressions for linear variables.
OMPPriorityClause(Expr *E, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
Build 'priority' clause.
SourceLocation getLocStart() const
Returns the starting location of the clause.
ArrayRef< const Expr * >::iterator helper_expr_const_iterator
OMPVarListClause(OpenMPClauseKind K, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc, unsigned N)
Build a clause with N variables.
varlist_iterator varlist_begin()
This represents clause 'map' in the '#pragma omp ...' directives.
void setLParenLoc(SourceLocation Loc)
Sets the location of '('.
void setColonLoc(SourceLocation Loc)
Sets the location of ':'.
ArrayRef< const Expr * >::iterator private_copies_const_iterator
private_copies_const_range private_copies() const
Defines some OpenMP-specific enums and functions.
OMPPriorityClause()
Build an empty clause.
llvm::iterator_range< varlist_const_iterator > varlist_const_range
const DeclarationNameInfo & getNameInfo() const
Gets the name info for specified reduction identifier.
Expr * getNumTeams()
Return NumTeams number.
void setLParenLoc(SourceLocation Loc)
Sets the location of '('.
llvm::iterator_range< updates_iterator > updates_range
llvm::iterator_range< private_copies_const_iterator > private_copies_const_range
OMPSafelenClause()
Build an empty clause.
llvm::iterator_range< varlist_iterator > varlist_range
This represents clause 'copyprivate' in the '#pragma omp ...' directives.
SourceLocation getFirstScheduleModifierLoc() const
Get the first modifier location.
void setModifierLoc(SourceLocation Loc)
Set modifier location.
void setCalcStep(Expr *CalcStep)
Sets the expression to calculate linear step for clause.
OpenMPLinearClauseKind getModifier() const
Return modifier.
helper_expr_range destination_exprs()
helper_expr_const_range private_copies() const
void setFinals(ArrayRef< Expr * > FL)
Sets the list of final update expressions for linear variables.
llvm::iterator_range< privates_const_iterator > privates_const_range
helper_expr_const_range source_exprs() const
OpenMPScheduleClauseKind getScheduleKind() const
Get kind of the clause.
void setLParenLoc(SourceLocation Loc)
Sets the location of '('.
Expr * getThreadLimit() const
Return ThreadLimit number.
static bool classof(const OMPClause *T)
Expr * getChunkSize() const
Get chunk size.
This represents 'default' clause in the '#pragma omp ...' directive.
OMPProcBindClause(OpenMPProcBindClauseKind A, SourceLocation ALoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
Build 'proc_bind' clause with argument A ('master', 'close' or 'spread').
OMPWriteClause(SourceLocation StartLoc, SourceLocation EndLoc)
Build 'write' clause.
This represents 'final' clause in the '#pragma omp ...' directive.
This represents 'mergeable' clause in the '#pragma omp ...' directive.
MutableArrayRef< Expr * > getFinals()
Sets the list of final update expressions for linear variables.
SourceLocation getSecondScheduleModifierLoc() const
Get the second modifier location.
void setLParenLoc(SourceLocation Loc)
Sets the location of '('.
llvm::iterator_range< helper_expr_iterator > helper_expr_range
This represents clause 'reduction' in the '#pragma omp ...' directives.
OMPNogroupClause()
Build an empty clause.
void setColonLoc(SourceLocation Loc)
Sets the location of ':'.
static bool classof(const OMPClause *T)
Expr * getHint() const
Returns number of threads.
static bool classof(const OMPClause *T)
llvm::iterator_range< finals_const_iterator > finals_const_range
OMPSeqCstClause(SourceLocation StartLoc, SourceLocation EndLoc)
Build 'seq_cst' clause.
void setModifier(OpenMPLinearClauseKind Kind)
Set modifier.
static bool classof(const OMPClause *T)
OMPScheduleClause()
Build an empty clause.
ArrayRef< const Expr * >::iterator helper_expr_const_iterator
OMPGrainsizeClause(Expr *Size, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
Build 'grainsize' clause.
OpenMPDefaultClauseKind getDefaultKind() const
Returns kind of the clause.
OpenMPClauseKind getClauseKind() const
Returns kind of OpenMP clause (private, shared, reduction, etc.).
OpenMPDependClauseKind getDependencyKind() const
Get dependency type.
OMPCollapseClause(Expr *Num, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
Build 'collapse' clause.
SourceLocation getLocEnd() const
Returns the ending location of the clause.
static bool classof(const OMPClause *)
static bool classof(const OMPClause *T)
llvm::iterator_range< inits_const_iterator > inits_const_range
OMPLinearClause(SourceLocation StartLoc, SourceLocation LParenLoc, OpenMPLinearClauseKind Modifier, SourceLocation ModifierLoc, SourceLocation ColonLoc, SourceLocation EndLoc, unsigned NumVars)
Build 'linear' clause with given number of variables NumVars.
This represents 'threads' clause in the '#pragma omp ...' directive.
const_child_range children() const
friend class OMPClauseReader
helper_expr_range assignment_ops()
SourceLocation getDefaultKindKwLoc() const
Returns location of clause kind.
OMPNowaitClause(SourceLocation StartLoc, SourceLocation EndLoc)
Build 'nowait' clause.
This represents clause 'aligned' in the '#pragma omp ...' directives.
static bool classof(const OMPClause *T)
void setLocEnd(SourceLocation Loc)
Sets the ending location of the clause.
OMPWriteClause()
Build an empty clause.
MutableArrayRef< Expr * >::iterator varlist_iterator
static bool classof(const OMPClause *T)
OMPCaptureClause()
Build an empty clause.
static bool classof(const OMPClause *T)
OMPSafelenClause(Expr *Len, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
Build 'safelen' clause.
varlist_const_iterator varlist_end() const
static bool classof(const OMPClause *T)
helper_expr_range assignment_ops()
This represents implicit clause 'depend' for the '#pragma omp task' directive.
Expr * getStep()
Returns linear step.
SourceLocation getLParenLoc() const
Returns the location of '('.
SourceLocation getColonLoc() const
Gets location of ':' symbol in clause.
This represents 'proc_bind' clause in the '#pragma omp ...' directive.
This represents 'capture' clause in the '#pragma omp atomic' directive.
Expr - This represents one expression.
SourceLocation getMapLoc() const LLVM_READONLY
Fetches location of clause mapping kind.
llvm::iterator_range< inits_iterator > inits_range
helper_expr_const_range assignment_ops() const
This represents 'simdlen' clause in the '#pragma omp ...' directive.
MutableArrayRef< Expr * > getUpdates()
Sets the list of update expressions for linear variables.
SourceLocation getScheduleKindLoc()
Get kind location.
Expr * getCondition() const
Returns condition.
MutableArrayRef< Expr * > getVarRefs()
Fetches list of variables associated with this clause.
const Expr * getAlignment() const
Returns alignment.
void setInits(ArrayRef< Expr * > IL)
Sets the list of the initial values for linear variables.
OpenMPClauseKind
OpenMP clauses.
void setLParenLoc(SourceLocation Loc)
Sets the location of '('.
MutableArrayRef< Expr * >::iterator private_copies_iterator
SourceLocation getLParenLoc() const
Returns the location of '('.
OpenMPDirectiveKind getNameModifier() const
Return directive name modifier associated with the clause.
static bool classof(const OMPClause *T)
llvm::iterator_range< const_child_iterator > const_child_range
static OMPReductionClause * Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc, ArrayRef< Expr * > VL, NestedNameSpecifierLoc QualifierLoc, const DeclarationNameInfo &NameInfo, ArrayRef< Expr * > Privates, ArrayRef< Expr * > LHSExprs, ArrayRef< Expr * > RHSExprs, ArrayRef< Expr * > ReductionOps)
Creates clause with a list of variables VL.
void setLParenLoc(SourceLocation Loc)
Sets the location of '('.
This represents 'ordered' clause in the '#pragma omp ...' directive.
Expr * getCalcStep()
Returns expression to calculate linear step.
SourceLocation getColonLoc() const
Return the location of ':'.
ArrayRef< const Expr * >::iterator varlist_const_iterator
static bool classof(const OMPClause *T)
SourceLocation getLParenLoc() const
Returns the location of '('.
static OMPLinearClause * CreateEmpty(const ASTContext &C, unsigned NumVars)
Creates an empty clause with the place for NumVars variables.
static bool classof(const OMPClause *T)
static bool classof(const OMPClause *T)
void setPrivateCopies(ArrayRef< Expr * > PrivateCopies)
Set list of helper expressions, required for generation of private copies of original lastprivate var...
inits_const_range inits() const
static OMPLinearClause * Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation LParenLoc, OpenMPLinearClauseKind Modifier, SourceLocation ModifierLoc, SourceLocation ColonLoc, SourceLocation EndLoc, ArrayRef< Expr * > VL, ArrayRef< Expr * > PL, ArrayRef< Expr * > IL, Expr *Step, Expr *CalcStep)
Creates clause with a list of variables VL and a linear step Step.
Expr * getDevice()
Return device number.
static OMPPrivateClause * CreateEmpty(const ASTContext &C, unsigned N)
Creates an empty clause with the place for N variables.
SourceLocation getLParenLoc() const
Returns the location of '('.
This represents 'collapse' clause in the '#pragma omp ...' directive.
This represents clause 'firstprivate' in the '#pragma omp ...' directives.
llvm::iterator_range< helper_expr_iterator > helper_expr_range
MutableArrayRef< Expr * >::iterator helper_expr_iterator
SourceLocation getProcBindKindKwLoc() const
Returns location of clause kind.
NestedNameSpecifierLoc getQualifierLoc() const
Gets the nested name specifier.
OpenMPProcBindClauseKind
OpenMP attributes for 'proc_bind' clause.
llvm::iterator_range< inits_const_iterator > inits_const_range
OMPThreadLimitClause()
Build an empty clause.
helper_expr_const_range privates() const
helper_expr_range destination_exprs()
helper_expr_const_range destination_exprs() const
This represents 'seq_cst' clause in the '#pragma omp atomic' directive.
This represents 'untied' clause in the '#pragma omp ...' directive.
SourceLocation getLParenLoc() const
Returns the location of '('.
helper_expr_range lhs_exprs()
static bool classof(const OMPClause *T)
ArrayRef< const Expr * >::iterator inits_const_iterator
OMPMergeableClause(SourceLocation StartLoc, SourceLocation EndLoc)
Build 'mergeable' clause.
static bool classof(const OMPClause *T)
static bool classof(const OMPClause *T)
SourceLocation getLParenLoc()
Get location of '('.
helper_expr_range destination_exprs()
OMPNumThreadsClause(Expr *NumThreads, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
Build 'num_threads' clause with condition NumThreads.
This represents 'num_teams' clause in the '#pragma omp ...' directive.
OMPSimdlenClause(Expr *Len, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
Build 'simdlen' clause.
helper_expr_range private_copies()
ArrayRef< const Expr * >::iterator inits_const_iterator
OMPCollapseClause()
Build an empty clause.
static bool classof(const OMPClause *T)
OMPThreadsClause(SourceLocation StartLoc, SourceLocation EndLoc)
Build 'threads' clause.
Expr * getNumForLoops() const
Return the number of associated for-loops.
Encodes a location in the source.
StmtIterator child_iterator
This represents 'hint' clause in the '#pragma omp ...' directive.
OpenMPDependClauseKind
OpenMP attributes for 'depend' clause.
helper_expr_const_range reduction_ops() const
MutableArrayRef< Expr * > getInits()
const TemplateArgument * iterator
helper_expr_range rhs_exprs()
SourceLocation getLParenLoc() const
Returns the location of '('.
private_copies_range private_copies()
void setVarRefs(ArrayRef< Expr * > VL)
Sets the list of variables for this clause.
Expr * getCondition() const
Returns condition.
helper_expr_const_range lhs_exprs() const
This represents 'schedule' clause in the '#pragma omp ...' directive.
OMPMergeableClause()
Build an empty clause.
void setLParenLoc(SourceLocation Loc)
Sets the location of '('.
OpenMPDirectiveKind
OpenMP directives.
This represents clause 'shared' in the '#pragma omp ...' directives.
OMPNumTeamsClause()
Build an empty clause.
varlist_const_iterator varlist_begin() const
Expr * getPriority()
Return Priority number.
MutableArrayRef< Expr * >::iterator helper_expr_iterator
OpenMPLinearClauseKind Modifier
Modifier of 'linear' clause.
OpenMPMapClauseKind getMapType() const LLVM_READONLY
Fetches mapping kind for the clause.
static bool classof(const OMPClause *T)
llvm::iterator_range< helper_expr_const_iterator > helper_expr_const_range
This is a basic class for representing single OpenMP clause.
ArrayRef< const Expr * >::iterator helper_expr_const_iterator
OMPDeviceClause(Expr *E, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
Build 'device' clause.
OpenMPMapClauseKind getMapTypeModifier() const LLVM_READONLY
Fetches the map type modifier for the clause.
static bool classof(const OMPClause *T)
SourceLocation getLParenLoc() const
Returns the location of '('.
ArrayRef< const Expr * >::iterator privates_const_iterator
SourceLocation getDependencyLoc() const
Get dependency type location.
OMPNumTeamsClause(Expr *E, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
Build 'num_teams' clause.
helper_expr_range reduction_ops()
llvm::iterator_range< private_copies_const_iterator > private_copies_const_range
static bool classof(const OMPClause *T)
llvm::iterator_range< helper_expr_iterator > helper_expr_range
Expr * getGrainsize() const
Return safe iteration space distance.
void setStep(Expr *Step)
Sets the linear step for clause.
void setLParenLoc(SourceLocation Loc)
Sets the location of '('.
OpenMPScheduleClauseModifier
OpenMP modifiers for 'schedule' clause.
This represents 'device' clause in the '#pragma omp ...' directive.
helper_expr_const_range rhs_exprs() const
OMPThreadsClause()
Build an empty clause.
void setLParenLoc(SourceLocation Loc)
Sets the location of '('.
SourceLocation ModifierLoc
Location of linear modifier if any.
Expr * getDevice() const
Return device number.
static bool classof(const OMPClause *T)
static bool classof(const OMPClause *T)
OMPNumThreadsClause()
Build an empty clause.
Expr * getNumTasks() const
Return safe iteration space distance.
This represents clause 'linear' in the '#pragma omp ...' directives.
static bool classof(const OMPClause *T)
detail::InMemoryDirectory::const_iterator E
SourceLocation getColonLoc() const
Returns the location of ':'.
static bool classof(const OMPClause *T)
DeclarationNameInfo - A collector data type for bundling together a DeclarationName and the correspnd...
llvm::iterator_range< privates_iterator > privates_range
void setLocStart(SourceLocation Loc)
Sets the starting location of the clause.
static OMPSharedClause * CreateEmpty(const ASTContext &C, unsigned N)
Creates an empty clause with N variables.
static bool classof(const OMPClause *T)
llvm::iterator_range< inits_iterator > inits_range
llvm::iterator_range< helper_expr_iterator > helper_expr_range
Expr * getSafelen() const
Return safe iteration space distance.
Expr * getPriority() const
Return Priority number.
OMPDefaultClause(OpenMPDefaultClauseKind A, SourceLocation ALoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
Build 'default' clause with argument A ('none' or 'shared').
MutableArrayRef< Expr * >::iterator helper_expr_iterator
ConstStmtIterator const_child_iterator
OMPReadClause()
Build an empty clause.
SourceLocation getLParenLoc() const
Returns the location of '('.
SourceLocation getLParenLoc() const
Returns the location of '('.
OMPUntiedClause()
Build an empty clause.
OpenMPScheduleClauseKind
OpenMP attributes for 'schedule' clause.
OMPFinalClause(Expr *Cond, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
Build 'final' clause with condition Cond.
OpenMPDefaultClauseKind
OpenMP attributes for 'default' clause.
OMPDeviceClause()
Build an empty clause.
OMPScheduleClause(SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation KLoc, SourceLocation CommaLoc, SourceLocation EndLoc, OpenMPScheduleClauseKind Kind, Expr *ChunkSize, Expr *HelperChunkSize, OpenMPScheduleClauseModifier M1, SourceLocation M1Loc, OpenMPScheduleClauseModifier M2, SourceLocation M2Loc)
Build 'schedule' clause with schedule kind Kind and chunk size expression ChunkSize.
OMPNowaitClause()
Build an empty clause.
privates_range privates()
MutableArrayRef< Expr * >::iterator helper_expr_iterator
This represents 'write' clause in the '#pragma omp atomic' directive.
MutableArrayRef< Expr * >::iterator inits_iterator
OMPNumTasksClause()
Build an empty clause.
MutableArrayRef< Expr * >::iterator private_copies_iterator
SourceLocation getLParenLoc() const
Returns the location of '('.
helper_expr_const_range destination_exprs() const
Defines the clang::SourceLocation class and associated facilities.
This represents 'nowait' clause in the '#pragma omp ...' directive.
varlist_iterator varlist_end()
This represents 'num_tasks' clause in the '#pragma omp ...' directive.
MutableArrayRef< Expr * >::iterator finals_iterator
Privates[]
Gets the list of initial values for linear variables.
OpenMPMapClauseKind
OpenMP mapping kind for 'map' clause.
MutableArrayRef< Expr * >::iterator updates_iterator
OMPClause(OpenMPClauseKind K, SourceLocation StartLoc, SourceLocation EndLoc)
OMPSimdlenClause()
Build an empty clause.
llvm::iterator_range< helper_expr_const_iterator > helper_expr_const_range
helper_expr_const_range assignment_ops() const
Expr * getThreadLimit()
Return ThreadLimit number.
OMPIfClause()
Build an empty clause.
void setLParenLoc(SourceLocation Loc)
Sets the location of '('.
OMPUpdateClause()
Build an empty clause.
Expr * getHelperChunkSize()
Get helper chunk size.
void setPrivates(ArrayRef< Expr * > PL)
Sets the list of the copies of original linear variables.
llvm::iterator_range< updates_const_iterator > updates_const_range
OMPGrainsizeClause()
Build an empty clause.
SourceLocation getLParenLoc() const
Returns the location of '('.
static bool classof(const OMPClause *T)
Expr * getChunkSize()
Get chunk size.
llvm::iterator_range< finals_iterator > finals_range
OMPReadClause(SourceLocation StartLoc, SourceLocation EndLoc)
Build 'read' clause.
helper_expr_const_range destination_exprs() const
SourceLocation getModifierLoc() const
Return modifier location.
ArrayRef< const Expr * >::iterator helper_expr_const_iterator
static bool classof(const OMPClause *T)
static OMPLastprivateClause * CreateEmpty(const ASTContext &C, unsigned N)
Creates an empty clause with the place for N variables.
SourceLocation getNameModifierLoc() const
Return the location of directive name modifier.
SourceLocation ColonLoc
Location of ':'.
void setLParenLoc(SourceLocation Loc)
Sets the location of '('.
unsigned varlist_size() const
OMPOrderedClause()
Build an empty clause.
OMPDefaultClause()
Build an empty clause.
static bool classof(const OMPClause *T)
helper_expr_const_range assignment_ops() const
helper_expr_const_range source_exprs() const
static OMPLastprivateClause * Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc, ArrayRef< Expr * > VL, ArrayRef< Expr * > SrcExprs, ArrayRef< Expr * > DstExprs, ArrayRef< Expr * > AssignmentOps)
Creates clause with a list of variables VL.