|
@@ -3033,6 +3033,8 @@ public:
|
|
|
///
|
|
|
class OMPDistributeParallelForDirective : public OMPLoopDirective {
|
|
|
friend class ASTStmtReader;
|
|
|
+ /// true if the construct has inner cancel directive.
|
|
|
+ bool HasCancel = false;
|
|
|
|
|
|
/// \brief Build directive with the given start and end location.
|
|
|
///
|
|
@@ -3046,7 +3048,7 @@ class OMPDistributeParallelForDirective : public OMPLoopDirective {
|
|
|
unsigned CollapsedNum, unsigned NumClauses)
|
|
|
: OMPLoopDirective(this, OMPDistributeParallelForDirectiveClass,
|
|
|
OMPD_distribute_parallel_for, StartLoc, EndLoc,
|
|
|
- CollapsedNum, NumClauses) {}
|
|
|
+ CollapsedNum, NumClauses), HasCancel(false) {}
|
|
|
|
|
|
/// \brief Build an empty directive.
|
|
|
///
|
|
@@ -3057,7 +3059,11 @@ class OMPDistributeParallelForDirective : public OMPLoopDirective {
|
|
|
unsigned NumClauses)
|
|
|
: OMPLoopDirective(this, OMPDistributeParallelForDirectiveClass,
|
|
|
OMPD_distribute_parallel_for, SourceLocation(),
|
|
|
- SourceLocation(), CollapsedNum, NumClauses) {}
|
|
|
+ SourceLocation(), CollapsedNum, NumClauses),
|
|
|
+ HasCancel(false) {}
|
|
|
+
|
|
|
+ /// Set cancel state.
|
|
|
+ void setHasCancel(bool Has) { HasCancel = Has; }
|
|
|
|
|
|
public:
|
|
|
/// \brief Creates directive with a list of \a Clauses.
|
|
@@ -3069,11 +3075,12 @@ public:
|
|
|
/// \param Clauses List of clauses.
|
|
|
/// \param AssociatedStmt Statement, associated with the directive.
|
|
|
/// \param Exprs Helper expressions for CodeGen.
|
|
|
+ /// \param HasCancel true if this directive has inner cancel directive.
|
|
|
///
|
|
|
static OMPDistributeParallelForDirective *
|
|
|
Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc,
|
|
|
unsigned CollapsedNum, ArrayRef<OMPClause *> Clauses,
|
|
|
- Stmt *AssociatedStmt, const HelperExprs &Exprs);
|
|
|
+ Stmt *AssociatedStmt, const HelperExprs &Exprs, bool HasCancel);
|
|
|
|
|
|
/// \brief Creates an empty directive with the place
|
|
|
/// for \a NumClauses clauses.
|
|
@@ -3087,6 +3094,9 @@ public:
|
|
|
unsigned CollapsedNum,
|
|
|
EmptyShell);
|
|
|
|
|
|
+ /// Return true if current directive has inner cancel directive.
|
|
|
+ bool hasCancel() const { return HasCancel; }
|
|
|
+
|
|
|
static bool classof(const Stmt *T) {
|
|
|
return T->getStmtClass() == OMPDistributeParallelForDirectiveClass;
|
|
|
}
|
|
@@ -3583,6 +3593,8 @@ public:
|
|
|
///
|
|
|
class OMPTeamsDistributeParallelForDirective final : public OMPLoopDirective {
|
|
|
friend class ASTStmtReader;
|
|
|
+ /// true if the construct has inner cancel directive.
|
|
|
+ bool HasCancel = false;
|
|
|
|
|
|
/// Build directive with the given start and end location.
|
|
|
///
|
|
@@ -3597,7 +3609,7 @@ class OMPTeamsDistributeParallelForDirective final : public OMPLoopDirective {
|
|
|
unsigned NumClauses)
|
|
|
: OMPLoopDirective(this, OMPTeamsDistributeParallelForDirectiveClass,
|
|
|
OMPD_teams_distribute_parallel_for, StartLoc, EndLoc,
|
|
|
- CollapsedNum, NumClauses) {}
|
|
|
+ CollapsedNum, NumClauses), HasCancel(false) {}
|
|
|
|
|
|
/// Build an empty directive.
|
|
|
///
|
|
@@ -3608,7 +3620,11 @@ class OMPTeamsDistributeParallelForDirective final : public OMPLoopDirective {
|
|
|
unsigned NumClauses)
|
|
|
: OMPLoopDirective(this, OMPTeamsDistributeParallelForDirectiveClass,
|
|
|
OMPD_teams_distribute_parallel_for, SourceLocation(),
|
|
|
- SourceLocation(), CollapsedNum, NumClauses) {}
|
|
|
+ SourceLocation(), CollapsedNum, NumClauses),
|
|
|
+ HasCancel(false) {}
|
|
|
+
|
|
|
+ /// Set cancel state.
|
|
|
+ void setHasCancel(bool Has) { HasCancel = Has; }
|
|
|
|
|
|
public:
|
|
|
/// Creates directive with a list of \a Clauses.
|
|
@@ -3620,11 +3636,12 @@ public:
|
|
|
/// \param Clauses List of clauses.
|
|
|
/// \param AssociatedStmt Statement, associated with the directive.
|
|
|
/// \param Exprs Helper expressions for CodeGen.
|
|
|
+ /// \param HasCancel true if this directive has inner cancel directive.
|
|
|
///
|
|
|
static OMPTeamsDistributeParallelForDirective *
|
|
|
Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc,
|
|
|
unsigned CollapsedNum, ArrayRef<OMPClause *> Clauses,
|
|
|
- Stmt *AssociatedStmt, const HelperExprs &Exprs);
|
|
|
+ Stmt *AssociatedStmt, const HelperExprs &Exprs, bool HasCancel);
|
|
|
|
|
|
/// Creates an empty directive with the place for \a NumClauses clauses.
|
|
|
///
|
|
@@ -3636,6 +3653,9 @@ public:
|
|
|
CreateEmpty(const ASTContext &C, unsigned NumClauses, unsigned CollapsedNum,
|
|
|
EmptyShell);
|
|
|
|
|
|
+ /// Return true if current directive has inner cancel directive.
|
|
|
+ bool hasCancel() const { return HasCancel; }
|
|
|
+
|
|
|
static bool classof(const Stmt *T) {
|
|
|
return T->getStmtClass() == OMPTeamsDistributeParallelForDirectiveClass;
|
|
|
}
|