Coverage Report

Created: 2022-07-16 07:03

/Users/buildslave/jenkins/workspace/coverage/llvm-project/clang/include/clang/AST/StmtOpenMP.h
Line
Count
Source (jump to first uncovered line)
1
//===- StmtOpenMP.h - Classes for OpenMP directives  ------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
/// \file
9
/// This file defines OpenMP AST classes for executable directives and
10
/// clauses.
11
///
12
//===----------------------------------------------------------------------===//
13
14
#ifndef LLVM_CLANG_AST_STMTOPENMP_H
15
#define LLVM_CLANG_AST_STMTOPENMP_H
16
17
#include "clang/AST/ASTContext.h"
18
#include "clang/AST/Expr.h"
19
#include "clang/AST/OpenMPClause.h"
20
#include "clang/AST/Stmt.h"
21
#include "clang/AST/StmtCXX.h"
22
#include "clang/Basic/OpenMPKinds.h"
23
#include "clang/Basic/SourceLocation.h"
24
25
namespace clang {
26
27
//===----------------------------------------------------------------------===//
28
// AST classes for directives.
29
//===----------------------------------------------------------------------===//
30
31
/// Representation of an OpenMP canonical loop.
32
///
33
/// OpenMP 1.0 C/C++, section 2.4.1 for Construct; canonical-shape
34
/// OpenMP 2.0 C/C++, section 2.4.1 for Construct; canonical-shape
35
/// OpenMP 2.5, section 2.5.1 Loop Construct; canonical form
36
/// OpenMP 3.1, section 2.5.1 Loop Construct; canonical form
37
/// OpenMP 4.0, section 2.6 Canonical Loop Form
38
/// OpenMP 4.5, section 2.6 Canonical Loop Form
39
/// OpenMP 5.0, section 2.9.1 Canonical Loop Form
40
/// OpenMP 5.1, section 2.11.1 Canonical Loop Nest Form
41
///
42
/// An OpenMP canonical loop is a for-statement or range-based for-statement
43
/// with additional requirements that ensure that the number of iterations is
44
/// known before entering the loop and allow skipping to an arbitrary iteration.
45
/// The OMPCanonicalLoop AST node wraps a ForStmt or CXXForRangeStmt that is
46
/// known to fulfill OpenMP's canonical loop requirements because of being
47
/// associated to an OMPLoopBasedDirective. That is, the general structure is:
48
///
49
///  OMPLoopBasedDirective
50
/// [`- CapturedStmt   ]
51
/// [   `- CapturedDecl]
52
///        ` OMPCanonicalLoop
53
///          `- ForStmt/CXXForRangeStmt
54
///             `- Stmt
55
///
56
/// One or multiple CapturedStmt/CapturedDecl pairs may be inserted by some
57
/// directives such as OMPParallelForDirective, but others do not need them
58
/// (such as OMPTileDirective). In  The OMPCanonicalLoop and
59
/// ForStmt/CXXForRangeStmt pair is repeated for loop associated with the
60
/// directive. A OMPCanonicalLoop must not appear in the AST unless associated
61
/// with a OMPLoopBasedDirective. In an imperfectly nested loop nest, the
62
/// OMPCanonicalLoop may also be wrapped in a CompoundStmt:
63
///
64
/// [...]
65
///  ` OMPCanonicalLoop
66
///    `- ForStmt/CXXForRangeStmt
67
///       `- CompoundStmt
68
///          |- Leading in-between code (if any)
69
///          |- OMPCanonicalLoop
70
///          |  `- ForStmt/CXXForRangeStmt
71
///          |     `- ...
72
///          `- Trailing in-between code (if any)
73
///
74
/// The leading/trailing in-between code must not itself be a OMPCanonicalLoop
75
/// to avoid confusion which loop belongs to the nesting.
76
///
77
/// There are three different kinds of iteration variables for different
78
/// purposes:
79
/// * Loop user variable: The user-accessible variable with different value for
80
///   each iteration.
81
/// * Loop iteration variable: The variable used to identify a loop iteration;
82
///   for range-based for-statement, this is the hidden iterator '__begin'. For
83
///   other loops, it is identical to the loop user variable. Must be a
84
///   random-access iterator, pointer or integer type.
85
/// * Logical iteration counter: Normalized loop counter starting at 0 and
86
///   incrementing by one at each iteration. Allows abstracting over the type
87
///   of the loop iteration variable and is always an unsigned integer type
88
///   appropriate to represent the range of the loop iteration variable. Its
89
///   value corresponds to the logical iteration number in the OpenMP
90
///   specification.
91
///
92
/// This AST node provides two captured statements:
93
/// * The distance function which computes the number of iterations.
94
/// * The loop user variable function that computes the loop user variable when
95
///   given a logical iteration number.
96
///
97
/// These captured statements provide the link between C/C++ semantics and the
98
/// logical iteration counters used by the OpenMPIRBuilder which is
99
/// language-agnostic and therefore does not know e.g. how to advance a
100
/// random-access iterator. The OpenMPIRBuilder will use this information to
101
/// apply simd, workshare-loop, distribute, taskloop and loop directives to the
102
/// loop. For compatibility with the non-OpenMPIRBuilder codegen path, an
103
/// OMPCanonicalLoop can itself also be wrapped into the CapturedStmts of an
104
/// OMPLoopDirective and skipped when searching for the associated syntactical
105
/// loop.
106
///
107
/// Example:
108
/// <code>
109
///   std::vector<std::string> Container{1,2,3};
110
///   for (std::string Str : Container)
111
///      Body(Str);
112
/// </code>
113
/// which is syntactic sugar for approximately:
114
/// <code>
115
///   auto &&__range = Container;
116
///   auto __begin = std::begin(__range);
117
///   auto __end = std::end(__range);
118
///   for (; __begin != __end; ++__begin) {
119
///     std::String Str = *__begin;
120
///     Body(Str);
121
///   }
122
/// </code>
123
/// In this example, the loop user variable is `Str`, the loop iteration
124
/// variable is `__begin` of type `std::vector<std::string>::iterator` and the
125
/// logical iteration number type is `size_t` (unsigned version of
126
/// `std::vector<std::string>::iterator::difference_type` aka `ptrdiff_t`).
127
/// Therefore, the distance function will be
128
/// <code>
129
///   [&](size_t &Result) { Result = __end - __begin; }
130
/// </code>
131
/// and the loop variable function is
132
/// <code>
133
///   [&,__begin](std::vector<std::string>::iterator &Result, size_t Logical) {
134
///     Result = __begin + Logical;
135
///   }
136
/// </code>
137
/// The variable `__begin`, aka the loop iteration variable, is captured by
138
/// value because it is modified in the loop body, but both functions require
139
/// the initial value. The OpenMP specification explicitly leaves unspecified
140
/// when the loop expressions are evaluated such that a capture by reference is
141
/// sufficient.
142
class OMPCanonicalLoop : public Stmt {
143
  friend class ASTStmtReader;
144
  friend class ASTStmtWriter;
145
146
  /// Children of this AST node.
147
  enum {
148
    LOOP_STMT,
149
    DISTANCE_FUNC,
150
    LOOPVAR_FUNC,
151
    LOOPVAR_REF,
152
    LastSubStmt = LOOPVAR_REF
153
  };
154
155
private:
156
  /// This AST node's children.
157
  Stmt *SubStmts[LastSubStmt + 1] = {};
158
159
114
  OMPCanonicalLoop() : Stmt(StmtClass::OMPCanonicalLoopClass) {}
160
161
public:
162
  /// Create a new OMPCanonicalLoop.
163
  static OMPCanonicalLoop *create(const ASTContext &Ctx, Stmt *LoopStmt,
164
                                  CapturedStmt *DistanceFunc,
165
                                  CapturedStmt *LoopVarFunc,
166
92
                                  DeclRefExpr *LoopVarRef) {
167
92
    OMPCanonicalLoop *S = new (Ctx) OMPCanonicalLoop();
168
92
    S->setLoopStmt(LoopStmt);
169
92
    S->setDistanceFunc(DistanceFunc);
170
92
    S->setLoopVarFunc(LoopVarFunc);
171
92
    S->setLoopVarRef(LoopVarRef);
172
92
    return S;
173
92
  }
174
175
  /// Create an empty OMPCanonicalLoop for deserialization.
176
22
  static OMPCanonicalLoop *createEmpty(const ASTContext &Ctx) {
177
22
    return new (Ctx) OMPCanonicalLoop();
178
22
  }
179
180
391k
  static bool classof(const Stmt *S) {
181
391k
    return S->getStmtClass() == StmtClass::OMPCanonicalLoopClass;
182
391k
  }
183
184
295
  SourceLocation getBeginLoc() const { return getLoopStmt()->getBeginLoc(); }
185
48
  SourceLocation getEndLoc() const { return getLoopStmt()->getEndLoc(); }
186
187
  /// Return this AST node's children.
188
  /// @{
189
87
  child_range children() {
190
87
    return child_range(&SubStmts[0], &SubStmts[0] + LastSubStmt + 1);
191
87
  }
192
0
  const_child_range children() const {
193
0
    return const_child_range(&SubStmts[0], &SubStmts[0] + LastSubStmt + 1);
194
0
  }
195
  /// @}
196
197
  /// The wrapped syntactic loop statement (ForStmt or CXXForRangeStmt).
198
  /// @{
199
140
  Stmt *getLoopStmt() { return SubStmts[LOOP_STMT]; }
200
439
  const Stmt *getLoopStmt() const { return SubStmts[LOOP_STMT]; }
201
92
  void setLoopStmt(Stmt *S) {
202
92
    assert((isa<ForStmt>(S) || isa<CXXForRangeStmt>(S)) &&
203
92
           "Canonical loop must be a for loop (range-based or otherwise)");
204
0
    SubStmts[LOOP_STMT] = S;
205
92
  }
206
  /// @}
207
208
  /// The function that computes the number of loop iterations. Can be evaluated
209
  /// before entering the loop but after the syntactical loop's init
210
  /// statement(s).
211
  ///
212
  /// Function signature: void(LogicalTy &Result)
213
  /// Any values necessary to compute the distance are captures of the closure.
214
  /// @{
215
0
  CapturedStmt *getDistanceFunc() {
216
0
    return cast<CapturedStmt>(SubStmts[DISTANCE_FUNC]);
217
0
  }
218
42
  const CapturedStmt *getDistanceFunc() const {
219
42
    return cast<CapturedStmt>(SubStmts[DISTANCE_FUNC]);
220
42
  }
221
92
  void setDistanceFunc(CapturedStmt *S) {
222
92
    assert(S && "Expected non-null captured statement");
223
0
    SubStmts[DISTANCE_FUNC] = S;
224
92
  }
225
  /// @}
226
227
  /// The function that computes the loop user variable from a logical iteration
228
  /// counter. Can be evaluated as first statement in the loop.
229
  ///
230
  /// Function signature: void(LoopVarTy &Result, LogicalTy Number)
231
  /// Any other values required to compute the loop user variable (such as start
232
  /// value, step size) are captured by the closure. In particular, the initial
233
  /// value of loop iteration variable is captured by value to be unaffected by
234
  /// previous iterations.
235
  /// @{
236
0
  CapturedStmt *getLoopVarFunc() {
237
0
    return cast<CapturedStmt>(SubStmts[LOOPVAR_FUNC]);
238
0
  }
239
42
  const CapturedStmt *getLoopVarFunc() const {
240
42
    return cast<CapturedStmt>(SubStmts[LOOPVAR_FUNC]);
241
42
  }
242
92
  void setLoopVarFunc(CapturedStmt *S) {
243
92
    assert(S && "Expected non-null captured statement");
244
0
    SubStmts[LOOPVAR_FUNC] = S;
245
92
  }
246
  /// @}
247
248
  /// Reference to the loop user variable as accessed in the loop body.
249
  /// @{
250
0
  DeclRefExpr *getLoopVarRef() {
251
0
    return cast<DeclRefExpr>(SubStmts[LOOPVAR_REF]);
252
0
  }
253
42
  const DeclRefExpr *getLoopVarRef() const {
254
42
    return cast<DeclRefExpr>(SubStmts[LOOPVAR_REF]);
255
42
  }
256
92
  void setLoopVarRef(DeclRefExpr *E) {
257
92
    assert(E && "Expected non-null loop variable");
258
0
    SubStmts[LOOPVAR_REF] = E;
259
92
  }
260
  /// @}
261
};
262
263
/// This is a basic class for representing single OpenMP executable
264
/// directive.
265
///
266
class OMPExecutableDirective : public Stmt {
267
  friend class ASTStmtReader;
268
  friend class ASTStmtWriter;
269
270
  /// Kind of the directive.
271
  OpenMPDirectiveKind Kind = llvm::omp::OMPD_unknown;
272
  /// Starting location of the directive (directive keyword).
273
  SourceLocation StartLoc;
274
  /// Ending location of the directive.
275
  SourceLocation EndLoc;
276
277
  /// Get the clauses storage.
278
0
  MutableArrayRef<OMPClause *> getClauses() {
279
0
    if (!Data)
280
0
      return llvm::None;
281
0
    return Data->getClauses();
282
0
  }
283
284
protected:
285
  /// Data, associated with the directive.
286
  OMPChildren *Data = nullptr;
287
288
  /// Build instance of directive of class \a K.
289
  ///
290
  /// \param SC Statement class.
291
  /// \param K Kind of OpenMP directive.
292
  /// \param StartLoc Starting location of the directive (directive keyword).
293
  /// \param EndLoc Ending location of the directive.
294
  ///
295
  OMPExecutableDirective(StmtClass SC, OpenMPDirectiveKind K,
296
                         SourceLocation StartLoc, SourceLocation EndLoc)
297
      : Stmt(SC), Kind(K), StartLoc(std::move(StartLoc)),
298
355k
        EndLoc(std::move(EndLoc)) {}
299
300
  template <typename T, typename... Params>
301
  static T *createDirective(const ASTContext &C, ArrayRef<OMPClause *> Clauses,
302
                            Stmt *AssociatedStmt, unsigned NumChildren,
303
331k
                            Params &&... P) {
304
331k
    void *Mem =
305
331k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
331k
                                                 NumChildren),
307
331k
                   alignof(T));
308
309
331k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
331k
                                     AssociatedStmt, NumChildren);
311
331k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
331k
    Inst->Data = Data;
313
331k
    return Inst;
314
331k
  }
Unexecuted instantiation: clang::OMPMetaDirective* clang::OMPExecutableDirective::createDirective<clang::OMPMetaDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
clang::OMPParallelDirective* clang::OMPExecutableDirective::createDirective<clang::OMPParallelDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
27.9k
                            Params &&... P) {
304
27.9k
    void *Mem =
305
27.9k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
27.9k
                                                 NumChildren),
307
27.9k
                   alignof(T));
308
309
27.9k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
27.9k
                                     AssociatedStmt, NumChildren);
311
27.9k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
27.9k
    Inst->Data = Data;
313
27.9k
    return Inst;
314
27.9k
  }
clang::OMPSimdDirective* clang::OMPExecutableDirective::createDirective<clang::OMPSimdDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
5.98k
                            Params &&... P) {
304
5.98k
    void *Mem =
305
5.98k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
5.98k
                                                 NumChildren),
307
5.98k
                   alignof(T));
308
309
5.98k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
5.98k
                                     AssociatedStmt, NumChildren);
311
5.98k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
5.98k
    Inst->Data = Data;
313
5.98k
    return Inst;
314
5.98k
  }
clang::OMPForDirective* clang::OMPExecutableDirective::createDirective<clang::OMPForDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
6.78k
                            Params &&... P) {
304
6.78k
    void *Mem =
305
6.78k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
6.78k
                                                 NumChildren),
307
6.78k
                   alignof(T));
308
309
6.78k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
6.78k
                                     AssociatedStmt, NumChildren);
311
6.78k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
6.78k
    Inst->Data = Data;
313
6.78k
    return Inst;
314
6.78k
  }
clang::OMPTileDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTileDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
72
                            Params &&... P) {
304
72
    void *Mem =
305
72
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
72
                                                 NumChildren),
307
72
                   alignof(T));
308
309
72
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
72
                                     AssociatedStmt, NumChildren);
311
72
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
72
    Inst->Data = Data;
313
72
    return Inst;
314
72
  }
clang::OMPUnrollDirective* clang::OMPExecutableDirective::createDirective<clang::OMPUnrollDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
95
                            Params &&... P) {
304
95
    void *Mem =
305
95
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
95
                                                 NumChildren),
307
95
                   alignof(T));
308
309
95
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
95
                                     AssociatedStmt, NumChildren);
311
95
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
95
    Inst->Data = Data;
313
95
    return Inst;
314
95
  }
clang::OMPForSimdDirective* clang::OMPExecutableDirective::createDirective<clang::OMPForSimdDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
5.49k
                            Params &&... P) {
304
5.49k
    void *Mem =
305
5.49k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
5.49k
                                                 NumChildren),
307
5.49k
                   alignof(T));
308
309
5.49k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
5.49k
                                     AssociatedStmt, NumChildren);
311
5.49k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
5.49k
    Inst->Data = Data;
313
5.49k
    return Inst;
314
5.49k
  }
clang::OMPSectionsDirective* clang::OMPExecutableDirective::createDirective<clang::OMPSectionsDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
3.78k
                            Params &&... P) {
304
3.78k
    void *Mem =
305
3.78k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
3.78k
                                                 NumChildren),
307
3.78k
                   alignof(T));
308
309
3.78k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
3.78k
                                     AssociatedStmt, NumChildren);
311
3.78k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
3.78k
    Inst->Data = Data;
313
3.78k
    return Inst;
314
3.78k
  }
clang::OMPSectionDirective* clang::OMPExecutableDirective::createDirective<clang::OMPSectionDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
981
                            Params &&... P) {
304
981
    void *Mem =
305
981
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
981
                                                 NumChildren),
307
981
                   alignof(T));
308
309
981
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
981
                                     AssociatedStmt, NumChildren);
311
981
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
981
    Inst->Data = Data;
313
981
    return Inst;
314
981
  }
clang::OMPSingleDirective* clang::OMPExecutableDirective::createDirective<clang::OMPSingleDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
2.02k
                            Params &&... P) {
304
2.02k
    void *Mem =
305
2.02k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
2.02k
                                                 NumChildren),
307
2.02k
                   alignof(T));
308
309
2.02k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
2.02k
                                     AssociatedStmt, NumChildren);
311
2.02k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
2.02k
    Inst->Data = Data;
313
2.02k
    return Inst;
314
2.02k
  }
clang::OMPMasterDirective* clang::OMPExecutableDirective::createDirective<clang::OMPMasterDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
1.27k
                            Params &&... P) {
304
1.27k
    void *Mem =
305
1.27k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
1.27k
                                                 NumChildren),
307
1.27k
                   alignof(T));
308
309
1.27k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
1.27k
                                     AssociatedStmt, NumChildren);
311
1.27k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
1.27k
    Inst->Data = Data;
313
1.27k
    return Inst;
314
1.27k
  }
clang::OMPCriticalDirective* clang::OMPExecutableDirective::createDirective<clang::OMPCriticalDirective, clang::DeclarationNameInfo const&, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::DeclarationNameInfo const&, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
1.89k
                            Params &&... P) {
304
1.89k
    void *Mem =
305
1.89k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
1.89k
                                                 NumChildren),
307
1.89k
                   alignof(T));
308
309
1.89k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
1.89k
                                     AssociatedStmt, NumChildren);
311
1.89k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
1.89k
    Inst->Data = Data;
313
1.89k
    return Inst;
314
1.89k
  }
clang::OMPParallelForDirective* clang::OMPExecutableDirective::createDirective<clang::OMPParallelForDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
4.73k
                            Params &&... P) {
304
4.73k
    void *Mem =
305
4.73k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
4.73k
                                                 NumChildren),
307
4.73k
                   alignof(T));
308
309
4.73k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
4.73k
                                     AssociatedStmt, NumChildren);
311
4.73k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
4.73k
    Inst->Data = Data;
313
4.73k
    return Inst;
314
4.73k
  }
clang::OMPParallelForSimdDirective* clang::OMPExecutableDirective::createDirective<clang::OMPParallelForSimdDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
5.88k
                            Params &&... P) {
304
5.88k
    void *Mem =
305
5.88k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
5.88k
                                                 NumChildren),
307
5.88k
                   alignof(T));
308
309
5.88k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
5.88k
                                     AssociatedStmt, NumChildren);
311
5.88k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
5.88k
    Inst->Data = Data;
313
5.88k
    return Inst;
314
5.88k
  }
clang::OMPParallelMasterDirective* clang::OMPExecutableDirective::createDirective<clang::OMPParallelMasterDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
3.45k
                            Params &&... P) {
304
3.45k
    void *Mem =
305
3.45k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
3.45k
                                                 NumChildren),
307
3.45k
                   alignof(T));
308
309
3.45k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
3.45k
                                     AssociatedStmt, NumChildren);
311
3.45k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
3.45k
    Inst->Data = Data;
313
3.45k
    return Inst;
314
3.45k
  }
clang::OMPParallelMaskedDirective* clang::OMPExecutableDirective::createDirective<clang::OMPParallelMaskedDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
2.33k
                            Params &&... P) {
304
2.33k
    void *Mem =
305
2.33k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
2.33k
                                                 NumChildren),
307
2.33k
                   alignof(T));
308
309
2.33k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
2.33k
                                     AssociatedStmt, NumChildren);
311
2.33k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
2.33k
    Inst->Data = Data;
313
2.33k
    return Inst;
314
2.33k
  }
clang::OMPParallelSectionsDirective* clang::OMPExecutableDirective::createDirective<clang::OMPParallelSectionsDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
3.49k
                            Params &&... P) {
304
3.49k
    void *Mem =
305
3.49k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
3.49k
                                                 NumChildren),
307
3.49k
                   alignof(T));
308
309
3.49k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
3.49k
                                     AssociatedStmt, NumChildren);
311
3.49k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
3.49k
    Inst->Data = Data;
313
3.49k
    return Inst;
314
3.49k
  }
clang::OMPTaskDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTaskDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
4.02k
                            Params &&... P) {
304
4.02k
    void *Mem =
305
4.02k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
4.02k
                                                 NumChildren),
307
4.02k
                   alignof(T));
308
309
4.02k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
4.02k
                                     AssociatedStmt, NumChildren);
311
4.02k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
4.02k
    Inst->Data = Data;
313
4.02k
    return Inst;
314
4.02k
  }
clang::OMPTaskwaitDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTaskwaitDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
796
                            Params &&... P) {
304
796
    void *Mem =
305
796
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
796
                                                 NumChildren),
307
796
                   alignof(T));
308
309
796
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
796
                                     AssociatedStmt, NumChildren);
311
796
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
796
    Inst->Data = Data;
313
796
    return Inst;
314
796
  }
clang::OMPTaskgroupDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTaskgroupDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
3.24k
                            Params &&... P) {
304
3.24k
    void *Mem =
305
3.24k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
3.24k
                                                 NumChildren),
307
3.24k
                   alignof(T));
308
309
3.24k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
3.24k
                                     AssociatedStmt, NumChildren);
311
3.24k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
3.24k
    Inst->Data = Data;
313
3.24k
    return Inst;
314
3.24k
  }
clang::OMPCancelDirective* clang::OMPExecutableDirective::createDirective<clang::OMPCancelDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
662
                            Params &&... P) {
304
662
    void *Mem =
305
662
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
662
                                                 NumChildren),
307
662
                   alignof(T));
308
309
662
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
662
                                     AssociatedStmt, NumChildren);
311
662
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
662
    Inst->Data = Data;
313
662
    return Inst;
314
662
  }
clang::OMPFlushDirective* clang::OMPExecutableDirective::createDirective<clang::OMPFlushDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
995
                            Params &&... P) {
304
995
    void *Mem =
305
995
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
995
                                                 NumChildren),
307
995
                   alignof(T));
308
309
995
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
995
                                     AssociatedStmt, NumChildren);
311
995
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
995
    Inst->Data = Data;
313
995
    return Inst;
314
995
  }
clang::OMPDepobjDirective* clang::OMPExecutableDirective::createDirective<clang::OMPDepobjDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
392
                            Params &&... P) {
304
392
    void *Mem =
305
392
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
392
                                                 NumChildren),
307
392
                   alignof(T));
308
309
392
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
392
                                     AssociatedStmt, NumChildren);
311
392
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
392
    Inst->Data = Data;
313
392
    return Inst;
314
392
  }
clang::OMPScanDirective* clang::OMPExecutableDirective::createDirective<clang::OMPScanDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
98
                            Params &&... P) {
304
98
    void *Mem =
305
98
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
98
                                                 NumChildren),
307
98
                   alignof(T));
308
309
98
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
98
                                     AssociatedStmt, NumChildren);
311
98
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
98
    Inst->Data = Data;
313
98
    return Inst;
314
98
  }
clang::OMPOrderedDirective* clang::OMPExecutableDirective::createDirective<clang::OMPOrderedDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
1.33k
                            Params &&... P) {
304
1.33k
    void *Mem =
305
1.33k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
1.33k
                                                 NumChildren),
307
1.33k
                   alignof(T));
308
309
1.33k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
1.33k
                                     AssociatedStmt, NumChildren);
311
1.33k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
1.33k
    Inst->Data = Data;
313
1.33k
    return Inst;
314
1.33k
  }
clang::OMPAtomicDirective* clang::OMPExecutableDirective::createDirective<clang::OMPAtomicDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
13.8k
                            Params &&... P) {
304
13.8k
    void *Mem =
305
13.8k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
13.8k
                                                 NumChildren),
307
13.8k
                   alignof(T));
308
309
13.8k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
13.8k
                                     AssociatedStmt, NumChildren);
311
13.8k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
13.8k
    Inst->Data = Data;
313
13.8k
    return Inst;
314
13.8k
  }
clang::OMPTargetDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTargetDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
56.1k
                            Params &&... P) {
304
56.1k
    void *Mem =
305
56.1k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
56.1k
                                                 NumChildren),
307
56.1k
                   alignof(T));
308
309
56.1k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
56.1k
                                     AssociatedStmt, NumChildren);
311
56.1k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
56.1k
    Inst->Data = Data;
313
56.1k
    return Inst;
314
56.1k
  }
clang::OMPTargetParallelDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTargetParallelDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
7.67k
                            Params &&... P) {
304
7.67k
    void *Mem =
305
7.67k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
7.67k
                                                 NumChildren),
307
7.67k
                   alignof(T));
308
309
7.67k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
7.67k
                                     AssociatedStmt, NumChildren);
311
7.67k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
7.67k
    Inst->Data = Data;
313
7.67k
    return Inst;
314
7.67k
  }
clang::OMPTargetParallelForDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTargetParallelForDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
7.71k
                            Params &&... P) {
304
7.71k
    void *Mem =
305
7.71k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
7.71k
                                                 NumChildren),
307
7.71k
                   alignof(T));
308
309
7.71k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
7.71k
                                     AssociatedStmt, NumChildren);
311
7.71k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
7.71k
    Inst->Data = Data;
313
7.71k
    return Inst;
314
7.71k
  }
clang::OMPTargetDataDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTargetDataDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
5.43k
                            Params &&... P) {
304
5.43k
    void *Mem =
305
5.43k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
5.43k
                                                 NumChildren),
307
5.43k
                   alignof(T));
308
309
5.43k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
5.43k
                                     AssociatedStmt, NumChildren);
311
5.43k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
5.43k
    Inst->Data = Data;
313
5.43k
    return Inst;
314
5.43k
  }
clang::OMPTargetEnterDataDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTargetEnterDataDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
2.03k
                            Params &&... P) {
304
2.03k
    void *Mem =
305
2.03k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
2.03k
                                                 NumChildren),
307
2.03k
                   alignof(T));
308
309
2.03k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
2.03k
                                     AssociatedStmt, NumChildren);
311
2.03k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
2.03k
    Inst->Data = Data;
313
2.03k
    return Inst;
314
2.03k
  }
clang::OMPTargetExitDataDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTargetExitDataDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
2.00k
                            Params &&... P) {
304
2.00k
    void *Mem =
305
2.00k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
2.00k
                                                 NumChildren),
307
2.00k
                   alignof(T));
308
309
2.00k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
2.00k
                                     AssociatedStmt, NumChildren);
311
2.00k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
2.00k
    Inst->Data = Data;
313
2.00k
    return Inst;
314
2.00k
  }
clang::OMPTeamsDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTeamsDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
18.8k
                            Params &&... P) {
304
18.8k
    void *Mem =
305
18.8k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
18.8k
                                                 NumChildren),
307
18.8k
                   alignof(T));
308
309
18.8k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
18.8k
                                     AssociatedStmt, NumChildren);
311
18.8k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
18.8k
    Inst->Data = Data;
313
18.8k
    return Inst;
314
18.8k
  }
clang::OMPTaskLoopDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTaskLoopDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
5.04k
                            Params &&... P) {
304
5.04k
    void *Mem =
305
5.04k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
5.04k
                                                 NumChildren),
307
5.04k
                   alignof(T));
308
309
5.04k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
5.04k
                                     AssociatedStmt, NumChildren);
311
5.04k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
5.04k
    Inst->Data = Data;
313
5.04k
    return Inst;
314
5.04k
  }
clang::OMPTaskLoopSimdDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTaskLoopSimdDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
4.30k
                            Params &&... P) {
304
4.30k
    void *Mem =
305
4.30k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
4.30k
                                                 NumChildren),
307
4.30k
                   alignof(T));
308
309
4.30k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
4.30k
                                     AssociatedStmt, NumChildren);
311
4.30k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
4.30k
    Inst->Data = Data;
313
4.30k
    return Inst;
314
4.30k
  }
clang::OMPMasterTaskLoopDirective* clang::OMPExecutableDirective::createDirective<clang::OMPMasterTaskLoopDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
3.39k
                            Params &&... P) {
304
3.39k
    void *Mem =
305
3.39k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
3.39k
                                                 NumChildren),
307
3.39k
                   alignof(T));
308
309
3.39k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
3.39k
                                     AssociatedStmt, NumChildren);
311
3.39k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
3.39k
    Inst->Data = Data;
313
3.39k
    return Inst;
314
3.39k
  }
clang::OMPMaskedTaskLoopDirective* clang::OMPExecutableDirective::createDirective<clang::OMPMaskedTaskLoopDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
1.86k
                            Params &&... P) {
304
1.86k
    void *Mem =
305
1.86k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
1.86k
                                                 NumChildren),
307
1.86k
                   alignof(T));
308
309
1.86k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
1.86k
                                     AssociatedStmt, NumChildren);
311
1.86k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
1.86k
    Inst->Data = Data;
313
1.86k
    return Inst;
314
1.86k
  }
clang::OMPMasterTaskLoopSimdDirective* clang::OMPExecutableDirective::createDirective<clang::OMPMasterTaskLoopSimdDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
4.44k
                            Params &&... P) {
304
4.44k
    void *Mem =
305
4.44k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
4.44k
                                                 NumChildren),
307
4.44k
                   alignof(T));
308
309
4.44k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
4.44k
                                     AssociatedStmt, NumChildren);
311
4.44k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
4.44k
    Inst->Data = Data;
313
4.44k
    return Inst;
314
4.44k
  }
clang::OMPMaskedTaskLoopSimdDirective* clang::OMPExecutableDirective::createDirective<clang::OMPMaskedTaskLoopSimdDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
3.74k
                            Params &&... P) {
304
3.74k
    void *Mem =
305
3.74k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
3.74k
                                                 NumChildren),
307
3.74k
                   alignof(T));
308
309
3.74k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
3.74k
                                     AssociatedStmt, NumChildren);
311
3.74k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
3.74k
    Inst->Data = Data;
313
3.74k
    return Inst;
314
3.74k
  }
clang::OMPParallelMasterTaskLoopDirective* clang::OMPExecutableDirective::createDirective<clang::OMPParallelMasterTaskLoopDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
2.75k
                            Params &&... P) {
304
2.75k
    void *Mem =
305
2.75k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
2.75k
                                                 NumChildren),
307
2.75k
                   alignof(T));
308
309
2.75k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
2.75k
                                     AssociatedStmt, NumChildren);
311
2.75k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
2.75k
    Inst->Data = Data;
313
2.75k
    return Inst;
314
2.75k
  }
clang::OMPParallelMaskedTaskLoopDirective* clang::OMPExecutableDirective::createDirective<clang::OMPParallelMaskedTaskLoopDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
2.53k
                            Params &&... P) {
304
2.53k
    void *Mem =
305
2.53k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
2.53k
                                                 NumChildren),
307
2.53k
                   alignof(T));
308
309
2.53k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
2.53k
                                     AssociatedStmt, NumChildren);
311
2.53k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
2.53k
    Inst->Data = Data;
313
2.53k
    return Inst;
314
2.53k
  }
clang::OMPParallelMasterTaskLoopSimdDirective* clang::OMPExecutableDirective::createDirective<clang::OMPParallelMasterTaskLoopSimdDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
3.64k
                            Params &&... P) {
304
3.64k
    void *Mem =
305
3.64k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
3.64k
                                                 NumChildren),
307
3.64k
                   alignof(T));
308
309
3.64k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
3.64k
                                     AssociatedStmt, NumChildren);
311
3.64k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
3.64k
    Inst->Data = Data;
313
3.64k
    return Inst;
314
3.64k
  }
clang::OMPParallelMaskedTaskLoopSimdDirective* clang::OMPExecutableDirective::createDirective<clang::OMPParallelMaskedTaskLoopSimdDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
3.27k
                            Params &&... P) {
304
3.27k
    void *Mem =
305
3.27k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
3.27k
                                                 NumChildren),
307
3.27k
                   alignof(T));
308
309
3.27k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
3.27k
                                     AssociatedStmt, NumChildren);
311
3.27k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
3.27k
    Inst->Data = Data;
313
3.27k
    return Inst;
314
3.27k
  }
clang::OMPDistributeDirective* clang::OMPExecutableDirective::createDirective<clang::OMPDistributeDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
1.81k
                            Params &&... P) {
304
1.81k
    void *Mem =
305
1.81k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
1.81k
                                                 NumChildren),
307
1.81k
                   alignof(T));
308
309
1.81k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
1.81k
                                     AssociatedStmt, NumChildren);
311
1.81k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
1.81k
    Inst->Data = Data;
313
1.81k
    return Inst;
314
1.81k
  }
clang::OMPTargetUpdateDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTargetUpdateDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
3.79k
                            Params &&... P) {
304
3.79k
    void *Mem =
305
3.79k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
3.79k
                                                 NumChildren),
307
3.79k
                   alignof(T));
308
309
3.79k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
3.79k
                                     AssociatedStmt, NumChildren);
311
3.79k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
3.79k
    Inst->Data = Data;
313
3.79k
    return Inst;
314
3.79k
  }
clang::OMPDistributeParallelForDirective* clang::OMPExecutableDirective::createDirective<clang::OMPDistributeParallelForDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
4.95k
                            Params &&... P) {
304
4.95k
    void *Mem =
305
4.95k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
4.95k
                                                 NumChildren),
307
4.95k
                   alignof(T));
308
309
4.95k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
4.95k
                                     AssociatedStmt, NumChildren);
311
4.95k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
4.95k
    Inst->Data = Data;
313
4.95k
    return Inst;
314
4.95k
  }
clang::OMPDistributeParallelForSimdDirective* clang::OMPExecutableDirective::createDirective<clang::OMPDistributeParallelForSimdDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
5.89k
                            Params &&... P) {
304
5.89k
    void *Mem =
305
5.89k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
5.89k
                                                 NumChildren),
307
5.89k
                   alignof(T));
308
309
5.89k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
5.89k
                                     AssociatedStmt, NumChildren);
311
5.89k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
5.89k
    Inst->Data = Data;
313
5.89k
    return Inst;
314
5.89k
  }
clang::OMPDistributeSimdDirective* clang::OMPExecutableDirective::createDirective<clang::OMPDistributeSimdDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
4.44k
                            Params &&... P) {
304
4.44k
    void *Mem =
305
4.44k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
4.44k
                                                 NumChildren),
307
4.44k
                   alignof(T));
308
309
4.44k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
4.44k
                                     AssociatedStmt, NumChildren);
311
4.44k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
4.44k
    Inst->Data = Data;
313
4.44k
    return Inst;
314
4.44k
  }
clang::OMPTargetParallelForSimdDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTargetParallelForSimdDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
7.62k
                            Params &&... P) {
304
7.62k
    void *Mem =
305
7.62k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
7.62k
                                                 NumChildren),
307
7.62k
                   alignof(T));
308
309
7.62k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
7.62k
                                     AssociatedStmt, NumChildren);
311
7.62k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
7.62k
    Inst->Data = Data;
313
7.62k
    return Inst;
314
7.62k
  }
clang::OMPTargetSimdDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTargetSimdDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
7.96k
                            Params &&... P) {
304
7.96k
    void *Mem =
305
7.96k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
7.96k
                                                 NumChildren),
307
7.96k
                   alignof(T));
308
309
7.96k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
7.96k
                                     AssociatedStmt, NumChildren);
311
7.96k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
7.96k
    Inst->Data = Data;
313
7.96k
    return Inst;
314
7.96k
  }
clang::OMPTeamsDistributeDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTeamsDistributeDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
4.16k
                            Params &&... P) {
304
4.16k
    void *Mem =
305
4.16k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
4.16k
                                                 NumChildren),
307
4.16k
                   alignof(T));
308
309
4.16k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
4.16k
                                     AssociatedStmt, NumChildren);
311
4.16k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
4.16k
    Inst->Data = Data;
313
4.16k
    return Inst;
314
4.16k
  }
clang::OMPTeamsDistributeSimdDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTeamsDistributeSimdDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
4.64k
                            Params &&... P) {
304
4.64k
    void *Mem =
305
4.64k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
4.64k
                                                 NumChildren),
307
4.64k
                   alignof(T));
308
309
4.64k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
4.64k
                                     AssociatedStmt, NumChildren);
311
4.64k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
4.64k
    Inst->Data = Data;
313
4.64k
    return Inst;
314
4.64k
  }
clang::OMPTeamsDistributeParallelForSimdDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTeamsDistributeParallelForSimdDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
5.46k
                            Params &&... P) {
304
5.46k
    void *Mem =
305
5.46k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
5.46k
                                                 NumChildren),
307
5.46k
                   alignof(T));
308
309
5.46k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
5.46k
                                     AssociatedStmt, NumChildren);
311
5.46k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
5.46k
    Inst->Data = Data;
313
5.46k
    return Inst;
314
5.46k
  }
clang::OMPTeamsDistributeParallelForDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTeamsDistributeParallelForDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
4.65k
                            Params &&... P) {
304
4.65k
    void *Mem =
305
4.65k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
4.65k
                                                 NumChildren),
307
4.65k
                   alignof(T));
308
309
4.65k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
4.65k
                                     AssociatedStmt, NumChildren);
311
4.65k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
4.65k
    Inst->Data = Data;
313
4.65k
    return Inst;
314
4.65k
  }
clang::OMPTargetTeamsDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTargetTeamsDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
7.53k
                            Params &&... P) {
304
7.53k
    void *Mem =
305
7.53k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
7.53k
                                                 NumChildren),
307
7.53k
                   alignof(T));
308
309
7.53k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
7.53k
                                     AssociatedStmt, NumChildren);
311
7.53k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
7.53k
    Inst->Data = Data;
313
7.53k
    return Inst;
314
7.53k
  }
clang::OMPTargetTeamsDistributeDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTargetTeamsDistributeDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
6.86k
                            Params &&... P) {
304
6.86k
    void *Mem =
305
6.86k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
6.86k
                                                 NumChildren),
307
6.86k
                   alignof(T));
308
309
6.86k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
6.86k
                                     AssociatedStmt, NumChildren);
311
6.86k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
6.86k
    Inst->Data = Data;
313
6.86k
    return Inst;
314
6.86k
  }
clang::OMPTargetTeamsDistributeParallelForDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTargetTeamsDistributeParallelForDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
7.26k
                            Params &&... P) {
304
7.26k
    void *Mem =
305
7.26k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
7.26k
                                                 NumChildren),
307
7.26k
                   alignof(T));
308
309
7.26k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
7.26k
                                     AssociatedStmt, NumChildren);
311
7.26k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
7.26k
    Inst->Data = Data;
313
7.26k
    return Inst;
314
7.26k
  }
clang::OMPTargetTeamsDistributeParallelForSimdDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTargetTeamsDistributeParallelForSimdDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
9.05k
                            Params &&... P) {
304
9.05k
    void *Mem =
305
9.05k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
9.05k
                                                 NumChildren),
307
9.05k
                   alignof(T));
308
309
9.05k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
9.05k
                                     AssociatedStmt, NumChildren);
311
9.05k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
9.05k
    Inst->Data = Data;
313
9.05k
    return Inst;
314
9.05k
  }
clang::OMPTargetTeamsDistributeSimdDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTargetTeamsDistributeSimdDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
8.60k
                            Params &&... P) {
304
8.60k
    void *Mem =
305
8.60k
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
8.60k
                                                 NumChildren),
307
8.60k
                   alignof(T));
308
309
8.60k
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
8.60k
                                     AssociatedStmt, NumChildren);
311
8.60k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
8.60k
    Inst->Data = Data;
313
8.60k
    return Inst;
314
8.60k
  }
clang::OMPInteropDirective* clang::OMPExecutableDirective::createDirective<clang::OMPInteropDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
149
                            Params &&... P) {
304
149
    void *Mem =
305
149
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
149
                                                 NumChildren),
307
149
                   alignof(T));
308
309
149
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
149
                                     AssociatedStmt, NumChildren);
311
149
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
149
    Inst->Data = Data;
313
149
    return Inst;
314
149
  }
clang::OMPDispatchDirective* clang::OMPExecutableDirective::createDirective<clang::OMPDispatchDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
128
                            Params &&... P) {
304
128
    void *Mem =
305
128
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
128
                                                 NumChildren),
307
128
                   alignof(T));
308
309
128
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
128
                                     AssociatedStmt, NumChildren);
311
128
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
128
    Inst->Data = Data;
313
128
    return Inst;
314
128
  }
clang::OMPMaskedDirective* clang::OMPExecutableDirective::createDirective<clang::OMPMaskedDirective, clang::SourceLocation&, clang::SourceLocation&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&)
Line
Count
Source
303
120
                            Params &&... P) {
304
120
    void *Mem =
305
120
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
120
                                                 NumChildren),
307
120
                   alignof(T));
308
309
120
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
120
                                     AssociatedStmt, NumChildren);
311
120
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
120
    Inst->Data = Data;
313
120
    return Inst;
314
120
  }
clang::OMPGenericLoopDirective* clang::OMPExecutableDirective::createDirective<clang::OMPGenericLoopDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
46
                            Params &&... P) {
304
46
    void *Mem =
305
46
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
46
                                                 NumChildren),
307
46
                   alignof(T));
308
309
46
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
46
                                     AssociatedStmt, NumChildren);
311
46
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
46
    Inst->Data = Data;
313
46
    return Inst;
314
46
  }
clang::OMPTeamsGenericLoopDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTeamsGenericLoopDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
35
                            Params &&... P) {
304
35
    void *Mem =
305
35
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
35
                                                 NumChildren),
307
35
                   alignof(T));
308
309
35
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
35
                                     AssociatedStmt, NumChildren);
311
35
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
35
    Inst->Data = Data;
313
35
    return Inst;
314
35
  }
clang::OMPTargetTeamsGenericLoopDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTargetTeamsGenericLoopDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
43
                            Params &&... P) {
304
43
    void *Mem =
305
43
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
43
                                                 NumChildren),
307
43
                   alignof(T));
308
309
43
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
43
                                     AssociatedStmt, NumChildren);
311
43
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
43
    Inst->Data = Data;
313
43
    return Inst;
314
43
  }
clang::OMPParallelGenericLoopDirective* clang::OMPExecutableDirective::createDirective<clang::OMPParallelGenericLoopDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
40
                            Params &&... P) {
304
40
    void *Mem =
305
40
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
40
                                                 NumChildren),
307
40
                   alignof(T));
308
309
40
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
40
                                     AssociatedStmt, NumChildren);
311
40
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
40
    Inst->Data = Data;
313
40
    return Inst;
314
40
  }
clang::OMPTargetParallelGenericLoopDirective* clang::OMPExecutableDirective::createDirective<clang::OMPTargetParallelGenericLoopDirective, clang::SourceLocation&, clang::SourceLocation&, unsigned int&>(clang::ASTContext const&, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, unsigned int, clang::SourceLocation&, clang::SourceLocation&, unsigned int&)
Line
Count
Source
303
45
                            Params &&... P) {
304
45
    void *Mem =
305
45
        C.Allocate(sizeof(T) + OMPChildren::size(Clauses.size(), AssociatedStmt,
306
45
                                                 NumChildren),
307
45
                   alignof(T));
308
309
45
    auto *Data = OMPChildren::Create(reinterpret_cast<T *>(Mem) + 1, Clauses,
310
45
                                     AssociatedStmt, NumChildren);
311
45
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
312
45
    Inst->Data = Data;
313
45
    return Inst;
314
45
  }
315
316
  template <typename T, typename... Params>
317
  static T *createEmptyDirective(const ASTContext &C, unsigned NumClauses,
318
                                 bool HasAssociatedStmt, unsigned NumChildren,
319
6.62k
                                 Params &&... P) {
320
6.62k
    void *Mem =
321
6.62k
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
6.62k
                                                 NumChildren),
323
6.62k
                   alignof(T));
324
6.62k
    auto *Data =
325
6.62k
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
6.62k
                                 HasAssociatedStmt, NumChildren);
327
6.62k
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
6.62k
    Inst->Data = Data;
329
6.62k
    return Inst;
330
6.62k
  }
clang::OMPSimdDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPSimdDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
169
                                 Params &&... P) {
320
169
    void *Mem =
321
169
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
169
                                                 NumChildren),
323
169
                   alignof(T));
324
169
    auto *Data =
325
169
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
169
                                 HasAssociatedStmt, NumChildren);
327
169
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
169
    Inst->Data = Data;
329
169
    return Inst;
330
169
  }
clang::OMPForDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPForDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
355
                                 Params &&... P) {
320
355
    void *Mem =
321
355
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
355
                                                 NumChildren),
323
355
                   alignof(T));
324
355
    auto *Data =
325
355
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
355
                                 HasAssociatedStmt, NumChildren);
327
355
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
355
    Inst->Data = Data;
329
355
    return Inst;
330
355
  }
clang::OMPTileDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTileDirective, clang::SourceLocation, clang::SourceLocation, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, clang::SourceLocation&&, clang::SourceLocation&&, unsigned int&)
Line
Count
Source
319
26
                                 Params &&... P) {
320
26
    void *Mem =
321
26
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
26
                                                 NumChildren),
323
26
                   alignof(T));
324
26
    auto *Data =
325
26
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
26
                                 HasAssociatedStmt, NumChildren);
327
26
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
26
    Inst->Data = Data;
329
26
    return Inst;
330
26
  }
clang::OMPUnrollDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPUnrollDirective, clang::SourceLocation, clang::SourceLocation>(clang::ASTContext const&, unsigned int, bool, unsigned int, clang::SourceLocation&&, clang::SourceLocation&&)
Line
Count
Source
319
26
                                 Params &&... P) {
320
26
    void *Mem =
321
26
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
26
                                                 NumChildren),
323
26
                   alignof(T));
324
26
    auto *Data =
325
26
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
26
                                 HasAssociatedStmt, NumChildren);
327
26
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
26
    Inst->Data = Data;
329
26
    return Inst;
330
26
  }
clang::OMPForSimdDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPForSimdDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
111
                                 Params &&... P) {
320
111
    void *Mem =
321
111
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
111
                                                 NumChildren),
323
111
                   alignof(T));
324
111
    auto *Data =
325
111
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
111
                                 HasAssociatedStmt, NumChildren);
327
111
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
111
    Inst->Data = Data;
329
111
    return Inst;
330
111
  }
clang::OMPParallelForDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPParallelForDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
104
                                 Params &&... P) {
320
104
    void *Mem =
321
104
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
104
                                                 NumChildren),
323
104
                   alignof(T));
324
104
    auto *Data =
325
104
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
104
                                 HasAssociatedStmt, NumChildren);
327
104
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
104
    Inst->Data = Data;
329
104
    return Inst;
330
104
  }
clang::OMPParallelForSimdDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPParallelForSimdDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
118
                                 Params &&... P) {
320
118
    void *Mem =
321
118
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
118
                                                 NumChildren),
323
118
                   alignof(T));
324
118
    auto *Data =
325
118
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
118
                                 HasAssociatedStmt, NumChildren);
327
118
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
118
    Inst->Data = Data;
329
118
    return Inst;
330
118
  }
clang::OMPTargetParallelForDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTargetParallelForDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
437
                                 Params &&... P) {
320
437
    void *Mem =
321
437
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
437
                                                 NumChildren),
323
437
                   alignof(T));
324
437
    auto *Data =
325
437
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
437
                                 HasAssociatedStmt, NumChildren);
327
437
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
437
    Inst->Data = Data;
329
437
    return Inst;
330
437
  }
clang::OMPTaskLoopDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTaskLoopDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
36
                                 Params &&... P) {
320
36
    void *Mem =
321
36
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
36
                                                 NumChildren),
323
36
                   alignof(T));
324
36
    auto *Data =
325
36
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
36
                                 HasAssociatedStmt, NumChildren);
327
36
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
36
    Inst->Data = Data;
329
36
    return Inst;
330
36
  }
clang::OMPTaskLoopSimdDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTaskLoopSimdDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
46
                                 Params &&... P) {
320
46
    void *Mem =
321
46
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
46
                                                 NumChildren),
323
46
                   alignof(T));
324
46
    auto *Data =
325
46
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
46
                                 HasAssociatedStmt, NumChildren);
327
46
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
46
    Inst->Data = Data;
329
46
    return Inst;
330
46
  }
clang::OMPMasterTaskLoopDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPMasterTaskLoopDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
32
                                 Params &&... P) {
320
32
    void *Mem =
321
32
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
32
                                                 NumChildren),
323
32
                   alignof(T));
324
32
    auto *Data =
325
32
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
32
                                 HasAssociatedStmt, NumChildren);
327
32
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
32
    Inst->Data = Data;
329
32
    return Inst;
330
32
  }
clang::OMPMaskedTaskLoopDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPMaskedTaskLoopDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
8
                                 Params &&... P) {
320
8
    void *Mem =
321
8
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
8
                                                 NumChildren),
323
8
                   alignof(T));
324
8
    auto *Data =
325
8
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
8
                                 HasAssociatedStmt, NumChildren);
327
8
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
8
    Inst->Data = Data;
329
8
    return Inst;
330
8
  }
clang::OMPMasterTaskLoopSimdDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPMasterTaskLoopSimdDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
46
                                 Params &&... P) {
320
46
    void *Mem =
321
46
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
46
                                                 NumChildren),
323
46
                   alignof(T));
324
46
    auto *Data =
325
46
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
46
                                 HasAssociatedStmt, NumChildren);
327
46
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
46
    Inst->Data = Data;
329
46
    return Inst;
330
46
  }
clang::OMPMaskedTaskLoopSimdDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPMaskedTaskLoopSimdDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
16
                                 Params &&... P) {
320
16
    void *Mem =
321
16
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
16
                                                 NumChildren),
323
16
                   alignof(T));
324
16
    auto *Data =
325
16
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
16
                                 HasAssociatedStmt, NumChildren);
327
16
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
16
    Inst->Data = Data;
329
16
    return Inst;
330
16
  }
clang::OMPParallelMasterTaskLoopDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPParallelMasterTaskLoopDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
30
                                 Params &&... P) {
320
30
    void *Mem =
321
30
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
30
                                                 NumChildren),
323
30
                   alignof(T));
324
30
    auto *Data =
325
30
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
30
                                 HasAssociatedStmt, NumChildren);
327
30
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
30
    Inst->Data = Data;
329
30
    return Inst;
330
30
  }
clang::OMPParallelMaskedTaskLoopDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPParallelMaskedTaskLoopDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
8
                                 Params &&... P) {
320
8
    void *Mem =
321
8
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
8
                                                 NumChildren),
323
8
                   alignof(T));
324
8
    auto *Data =
325
8
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
8
                                 HasAssociatedStmt, NumChildren);
327
8
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
8
    Inst->Data = Data;
329
8
    return Inst;
330
8
  }
clang::OMPParallelMasterTaskLoopSimdDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPParallelMasterTaskLoopSimdDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
44
                                 Params &&... P) {
320
44
    void *Mem =
321
44
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
44
                                                 NumChildren),
323
44
                   alignof(T));
324
44
    auto *Data =
325
44
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
44
                                 HasAssociatedStmt, NumChildren);
327
44
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
44
    Inst->Data = Data;
329
44
    return Inst;
330
44
  }
clang::OMPParallelMaskedTaskLoopSimdDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPParallelMaskedTaskLoopSimdDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
16
                                 Params &&... P) {
320
16
    void *Mem =
321
16
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
16
                                                 NumChildren),
323
16
                   alignof(T));
324
16
    auto *Data =
325
16
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
16
                                 HasAssociatedStmt, NumChildren);
327
16
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
16
    Inst->Data = Data;
329
16
    return Inst;
330
16
  }
clang::OMPDistributeDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPDistributeDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
140
                                 Params &&... P) {
320
140
    void *Mem =
321
140
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
140
                                                 NumChildren),
323
140
                   alignof(T));
324
140
    auto *Data =
325
140
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
140
                                 HasAssociatedStmt, NumChildren);
327
140
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
140
    Inst->Data = Data;
329
140
    return Inst;
330
140
  }
clang::OMPDistributeParallelForDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPDistributeParallelForDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
280
                                 Params &&... P) {
320
280
    void *Mem =
321
280
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
280
                                                 NumChildren),
323
280
                   alignof(T));
324
280
    auto *Data =
325
280
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
280
                                 HasAssociatedStmt, NumChildren);
327
280
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
280
    Inst->Data = Data;
329
280
    return Inst;
330
280
  }
clang::OMPDistributeParallelForSimdDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPDistributeParallelForSimdDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
262
                                 Params &&... P) {
320
262
    void *Mem =
321
262
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
262
                                                 NumChildren),
323
262
                   alignof(T));
324
262
    auto *Data =
325
262
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
262
                                 HasAssociatedStmt, NumChildren);
327
262
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
262
    Inst->Data = Data;
329
262
    return Inst;
330
262
  }
clang::OMPDistributeSimdDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPDistributeSimdDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
166
                                 Params &&... P) {
320
166
    void *Mem =
321
166
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
166
                                                 NumChildren),
323
166
                   alignof(T));
324
166
    auto *Data =
325
166
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
166
                                 HasAssociatedStmt, NumChildren);
327
166
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
166
    Inst->Data = Data;
329
166
    return Inst;
330
166
  }
clang::OMPTargetParallelForSimdDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTargetParallelForSimdDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
523
                                 Params &&... P) {
320
523
    void *Mem =
321
523
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
523
                                                 NumChildren),
323
523
                   alignof(T));
324
523
    auto *Data =
325
523
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
523
                                 HasAssociatedStmt, NumChildren);
327
523
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
523
    Inst->Data = Data;
329
523
    return Inst;
330
523
  }
clang::OMPTargetSimdDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTargetSimdDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
495
                                 Params &&... P) {
320
495
    void *Mem =
321
495
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
495
                                                 NumChildren),
323
495
                   alignof(T));
324
495
    auto *Data =
325
495
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
495
                                 HasAssociatedStmt, NumChildren);
327
495
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
495
    Inst->Data = Data;
329
495
    return Inst;
330
495
  }
clang::OMPTeamsDistributeDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTeamsDistributeDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
142
                                 Params &&... P) {
320
142
    void *Mem =
321
142
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
142
                                                 NumChildren),
323
142
                   alignof(T));
324
142
    auto *Data =
325
142
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
142
                                 HasAssociatedStmt, NumChildren);
327
142
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
142
    Inst->Data = Data;
329
142
    return Inst;
330
142
  }
clang::OMPTeamsDistributeSimdDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTeamsDistributeSimdDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
206
                                 Params &&... P) {
320
206
    void *Mem =
321
206
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
206
                                                 NumChildren),
323
206
                   alignof(T));
324
206
    auto *Data =
325
206
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
206
                                 HasAssociatedStmt, NumChildren);
327
206
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
206
    Inst->Data = Data;
329
206
    return Inst;
330
206
  }
clang::OMPTeamsDistributeParallelForSimdDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTeamsDistributeParallelForSimdDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
370
                                 Params &&... P) {
320
370
    void *Mem =
321
370
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
370
                                                 NumChildren),
323
370
                   alignof(T));
324
370
    auto *Data =
325
370
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
370
                                 HasAssociatedStmt, NumChildren);
327
370
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
370
    Inst->Data = Data;
329
370
    return Inst;
330
370
  }
clang::OMPTeamsDistributeParallelForDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTeamsDistributeParallelForDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
334
                                 Params &&... P) {
320
334
    void *Mem =
321
334
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
334
                                                 NumChildren),
323
334
                   alignof(T));
324
334
    auto *Data =
325
334
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
334
                                 HasAssociatedStmt, NumChildren);
327
334
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
334
    Inst->Data = Data;
329
334
    return Inst;
330
334
  }
clang::OMPTargetTeamsDistributeDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTargetTeamsDistributeDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
475
                                 Params &&... P) {
320
475
    void *Mem =
321
475
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
475
                                                 NumChildren),
323
475
                   alignof(T));
324
475
    auto *Data =
325
475
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
475
                                 HasAssociatedStmt, NumChildren);
327
475
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
475
    Inst->Data = Data;
329
475
    return Inst;
330
475
  }
clang::OMPTargetTeamsDistributeParallelForDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTargetTeamsDistributeParallelForDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
448
                                 Params &&... P) {
320
448
    void *Mem =
321
448
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
448
                                                 NumChildren),
323
448
                   alignof(T));
324
448
    auto *Data =
325
448
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
448
                                 HasAssociatedStmt, NumChildren);
327
448
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
448
    Inst->Data = Data;
329
448
    return Inst;
330
448
  }
clang::OMPTargetTeamsDistributeParallelForSimdDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTargetTeamsDistributeParallelForSimdDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
569
                                 Params &&... P) {
320
569
    void *Mem =
321
569
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
569
                                                 NumChildren),
323
569
                   alignof(T));
324
569
    auto *Data =
325
569
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
569
                                 HasAssociatedStmt, NumChildren);
327
569
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
569
    Inst->Data = Data;
329
569
    return Inst;
330
569
  }
clang::OMPTargetTeamsDistributeSimdDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTargetTeamsDistributeSimdDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
547
                                 Params &&... P) {
320
547
    void *Mem =
321
547
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
547
                                                 NumChildren),
323
547
                   alignof(T));
324
547
    auto *Data =
325
547
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
547
                                 HasAssociatedStmt, NumChildren);
327
547
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
547
    Inst->Data = Data;
329
547
    return Inst;
330
547
  }
clang::OMPGenericLoopDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPGenericLoopDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
14
                                 Params &&... P) {
320
14
    void *Mem =
321
14
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
14
                                                 NumChildren),
323
14
                   alignof(T));
324
14
    auto *Data =
325
14
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
14
                                 HasAssociatedStmt, NumChildren);
327
14
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
14
    Inst->Data = Data;
329
14
    return Inst;
330
14
  }
clang::OMPTeamsGenericLoopDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTeamsGenericLoopDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
6
                                 Params &&... P) {
320
6
    void *Mem =
321
6
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
6
                                                 NumChildren),
323
6
                   alignof(T));
324
6
    auto *Data =
325
6
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
6
                                 HasAssociatedStmt, NumChildren);
327
6
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
6
    Inst->Data = Data;
329
6
    return Inst;
330
6
  }
clang::OMPTargetTeamsGenericLoopDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTargetTeamsGenericLoopDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
8
                                 Params &&... P) {
320
8
    void *Mem =
321
8
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
8
                                                 NumChildren),
323
8
                   alignof(T));
324
8
    auto *Data =
325
8
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
8
                                 HasAssociatedStmt, NumChildren);
327
8
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
8
    Inst->Data = Data;
329
8
    return Inst;
330
8
  }
clang::OMPParallelGenericLoopDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPParallelGenericLoopDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
7
                                 Params &&... P) {
320
7
    void *Mem =
321
7
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
7
                                                 NumChildren),
323
7
                   alignof(T));
324
7
    auto *Data =
325
7
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
7
                                 HasAssociatedStmt, NumChildren);
327
7
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
7
    Inst->Data = Data;
329
7
    return Inst;
330
7
  }
clang::OMPTargetParallelGenericLoopDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTargetParallelGenericLoopDirective, unsigned int&>(clang::ASTContext const&, unsigned int, bool, unsigned int, unsigned int&)
Line
Count
Source
319
8
                                 Params &&... P) {
320
8
    void *Mem =
321
8
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
322
8
                                                 NumChildren),
323
8
                   alignof(T));
324
8
    auto *Data =
325
8
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
326
8
                                 HasAssociatedStmt, NumChildren);
327
8
    auto *Inst = new (Mem) T(std::forward<Params>(P)...);
328
8
    Inst->Data = Data;
329
8
    return Inst;
330
8
  }
331
332
  template <typename T>
333
  static T *createEmptyDirective(const ASTContext &C, unsigned NumClauses,
334
                                 bool HasAssociatedStmt = false,
335
15.6k
                                 unsigned NumChildren = 0) {
336
15.6k
    void *Mem =
337
15.6k
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
15.6k
                                                 NumChildren),
339
15.6k
                   alignof(T));
340
15.6k
    auto *Data =
341
15.6k
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
15.6k
                                 HasAssociatedStmt, NumChildren);
343
15.6k
    auto *Inst = new (Mem) T;
344
15.6k
    Inst->Data = Data;
345
15.6k
    return Inst;
346
15.6k
  }
Unexecuted instantiation: clang::OMPMetaDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPMetaDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
clang::OMPParallelDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPParallelDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
790
                                 unsigned NumChildren = 0) {
336
790
    void *Mem =
337
790
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
790
                                                 NumChildren),
339
790
                   alignof(T));
340
790
    auto *Data =
341
790
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
790
                                 HasAssociatedStmt, NumChildren);
343
790
    auto *Inst = new (Mem) T;
344
790
    Inst->Data = Data;
345
790
    return Inst;
346
790
  }
clang::OMPSectionsDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPSectionsDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
58
                                 unsigned NumChildren = 0) {
336
58
    void *Mem =
337
58
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
58
                                                 NumChildren),
339
58
                   alignof(T));
340
58
    auto *Data =
341
58
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
58
                                 HasAssociatedStmt, NumChildren);
343
58
    auto *Inst = new (Mem) T;
344
58
    Inst->Data = Data;
345
58
    return Inst;
346
58
  }
clang::OMPSectionDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPSectionDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
50
                                 unsigned NumChildren = 0) {
336
50
    void *Mem =
337
50
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
50
                                                 NumChildren),
339
50
                   alignof(T));
340
50
    auto *Data =
341
50
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
50
                                 HasAssociatedStmt, NumChildren);
343
50
    auto *Inst = new (Mem) T;
344
50
    Inst->Data = Data;
345
50
    return Inst;
346
50
  }
clang::OMPSingleDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPSingleDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
46
                                 unsigned NumChildren = 0) {
336
46
    void *Mem =
337
46
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
46
                                                 NumChildren),
339
46
                   alignof(T));
340
46
    auto *Data =
341
46
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
46
                                 HasAssociatedStmt, NumChildren);
343
46
    auto *Inst = new (Mem) T;
344
46
    Inst->Data = Data;
345
46
    return Inst;
346
46
  }
clang::OMPMasterDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPMasterDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
17
                                 unsigned NumChildren = 0) {
336
17
    void *Mem =
337
17
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
17
                                                 NumChildren),
339
17
                   alignof(T));
340
17
    auto *Data =
341
17
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
17
                                 HasAssociatedStmt, NumChildren);
343
17
    auto *Inst = new (Mem) T;
344
17
    Inst->Data = Data;
345
17
    return Inst;
346
17
  }
clang::OMPCriticalDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPCriticalDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
76
                                 unsigned NumChildren = 0) {
336
76
    void *Mem =
337
76
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
76
                                                 NumChildren),
339
76
                   alignof(T));
340
76
    auto *Data =
341
76
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
76
                                 HasAssociatedStmt, NumChildren);
343
76
    auto *Inst = new (Mem) T;
344
76
    Inst->Data = Data;
345
76
    return Inst;
346
76
  }
clang::OMPParallelMasterDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPParallelMasterDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
63
                                 unsigned NumChildren = 0) {
336
63
    void *Mem =
337
63
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
63
                                                 NumChildren),
339
63
                   alignof(T));
340
63
    auto *Data =
341
63
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
63
                                 HasAssociatedStmt, NumChildren);
343
63
    auto *Inst = new (Mem) T;
344
63
    Inst->Data = Data;
345
63
    return Inst;
346
63
  }
clang::OMPParallelMaskedDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPParallelMaskedDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
44
                                 unsigned NumChildren = 0) {
336
44
    void *Mem =
337
44
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
44
                                                 NumChildren),
339
44
                   alignof(T));
340
44
    auto *Data =
341
44
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
44
                                 HasAssociatedStmt, NumChildren);
343
44
    auto *Inst = new (Mem) T;
344
44
    Inst->Data = Data;
345
44
    return Inst;
346
44
  }
clang::OMPParallelSectionsDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPParallelSectionsDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
32
                                 unsigned NumChildren = 0) {
336
32
    void *Mem =
337
32
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
32
                                                 NumChildren),
339
32
                   alignof(T));
340
32
    auto *Data =
341
32
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
32
                                 HasAssociatedStmt, NumChildren);
343
32
    auto *Inst = new (Mem) T;
344
32
    Inst->Data = Data;
345
32
    return Inst;
346
32
  }
clang::OMPTaskDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTaskDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
249
                                 unsigned NumChildren = 0) {
336
249
    void *Mem =
337
249
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
249
                                                 NumChildren),
339
249
                   alignof(T));
340
249
    auto *Data =
341
249
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
249
                                 HasAssociatedStmt, NumChildren);
343
249
    auto *Inst = new (Mem) T;
344
249
    Inst->Data = Data;
345
249
    return Inst;
346
249
  }
clang::OMPTaskwaitDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTaskwaitDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
22
                                 unsigned NumChildren = 0) {
336
22
    void *Mem =
337
22
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
22
                                                 NumChildren),
339
22
                   alignof(T));
340
22
    auto *Data =
341
22
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
22
                                 HasAssociatedStmt, NumChildren);
343
22
    auto *Inst = new (Mem) T;
344
22
    Inst->Data = Data;
345
22
    return Inst;
346
22
  }
clang::OMPTaskgroupDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTaskgroupDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
114
                                 unsigned NumChildren = 0) {
336
114
    void *Mem =
337
114
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
114
                                                 NumChildren),
339
114
                   alignof(T));
340
114
    auto *Data =
341
114
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
114
                                 HasAssociatedStmt, NumChildren);
343
114
    auto *Inst = new (Mem) T;
344
114
    Inst->Data = Data;
345
114
    return Inst;
346
114
  }
clang::OMPCancelDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPCancelDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
170
                                 unsigned NumChildren = 0) {
336
170
    void *Mem =
337
170
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
170
                                                 NumChildren),
339
170
                   alignof(T));
340
170
    auto *Data =
341
170
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
170
                                 HasAssociatedStmt, NumChildren);
343
170
    auto *Inst = new (Mem) T;
344
170
    Inst->Data = Data;
345
170
    return Inst;
346
170
  }
clang::OMPFlushDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPFlushDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
50
                                 unsigned NumChildren = 0) {
336
50
    void *Mem =
337
50
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
50
                                                 NumChildren),
339
50
                   alignof(T));
340
50
    auto *Data =
341
50
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
50
                                 HasAssociatedStmt, NumChildren);
343
50
    auto *Inst = new (Mem) T;
344
50
    Inst->Data = Data;
345
50
    return Inst;
346
50
  }
clang::OMPDepobjDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPDepobjDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
28
                                 unsigned NumChildren = 0) {
336
28
    void *Mem =
337
28
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
28
                                                 NumChildren),
339
28
                   alignof(T));
340
28
    auto *Data =
341
28
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
28
                                 HasAssociatedStmt, NumChildren);
343
28
    auto *Inst = new (Mem) T;
344
28
    Inst->Data = Data;
345
28
    return Inst;
346
28
  }
clang::OMPScanDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPScanDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
24
                                 unsigned NumChildren = 0) {
336
24
    void *Mem =
337
24
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
24
                                                 NumChildren),
339
24
                   alignof(T));
340
24
    auto *Data =
341
24
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
24
                                 HasAssociatedStmt, NumChildren);
343
24
    auto *Inst = new (Mem) T;
344
24
    Inst->Data = Data;
345
24
    return Inst;
346
24
  }
clang::OMPOrderedDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPOrderedDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
82
                                 unsigned NumChildren = 0) {
336
82
    void *Mem =
337
82
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
82
                                                 NumChildren),
339
82
                   alignof(T));
340
82
    auto *Data =
341
82
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
82
                                 HasAssociatedStmt, NumChildren);
343
82
    auto *Inst = new (Mem) T;
344
82
    Inst->Data = Data;
345
82
    return Inst;
346
82
  }
clang::OMPAtomicDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPAtomicDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
5.24k
                                 unsigned NumChildren = 0) {
336
5.24k
    void *Mem =
337
5.24k
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
5.24k
                                                 NumChildren),
339
5.24k
                   alignof(T));
340
5.24k
    auto *Data =
341
5.24k
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
5.24k
                                 HasAssociatedStmt, NumChildren);
343
5.24k
    auto *Inst = new (Mem) T;
344
5.24k
    Inst->Data = Data;
345
5.24k
    return Inst;
346
5.24k
  }
clang::OMPTargetDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTargetDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
4.84k
                                 unsigned NumChildren = 0) {
336
4.84k
    void *Mem =
337
4.84k
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
4.84k
                                                 NumChildren),
339
4.84k
                   alignof(T));
340
4.84k
    auto *Data =
341
4.84k
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
4.84k
                                 HasAssociatedStmt, NumChildren);
343
4.84k
    auto *Inst = new (Mem) T;
344
4.84k
    Inst->Data = Data;
345
4.84k
    return Inst;
346
4.84k
  }
clang::OMPTargetParallelDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTargetParallelDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
617
                                 unsigned NumChildren = 0) {
336
617
    void *Mem =
337
617
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
617
                                                 NumChildren),
339
617
                   alignof(T));
340
617
    auto *Data =
341
617
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
617
                                 HasAssociatedStmt, NumChildren);
343
617
    auto *Inst = new (Mem) T;
344
617
    Inst->Data = Data;
345
617
    return Inst;
346
617
  }
clang::OMPTargetDataDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTargetDataDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
254
                                 unsigned NumChildren = 0) {
336
254
    void *Mem =
337
254
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
254
                                                 NumChildren),
339
254
                   alignof(T));
340
254
    auto *Data =
341
254
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
254
                                 HasAssociatedStmt, NumChildren);
343
254
    auto *Inst = new (Mem) T;
344
254
    Inst->Data = Data;
345
254
    return Inst;
346
254
  }
clang::OMPTargetEnterDataDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTargetEnterDataDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
289
                                 unsigned NumChildren = 0) {
336
289
    void *Mem =
337
289
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
289
                                                 NumChildren),
339
289
                   alignof(T));
340
289
    auto *Data =
341
289
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
289
                                 HasAssociatedStmt, NumChildren);
343
289
    auto *Inst = new (Mem) T;
344
289
    Inst->Data = Data;
345
289
    return Inst;
346
289
  }
clang::OMPTargetExitDataDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTargetExitDataDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
277
                                 unsigned NumChildren = 0) {
336
277
    void *Mem =
337
277
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
277
                                                 NumChildren),
339
277
                   alignof(T));
340
277
    auto *Data =
341
277
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
277
                                 HasAssociatedStmt, NumChildren);
343
277
    auto *Inst = new (Mem) T;
344
277
    Inst->Data = Data;
345
277
    return Inst;
346
277
  }
clang::OMPTeamsDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTeamsDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
959
                                 unsigned NumChildren = 0) {
336
959
    void *Mem =
337
959
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
959
                                                 NumChildren),
339
959
                   alignof(T));
340
959
    auto *Data =
341
959
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
959
                                 HasAssociatedStmt, NumChildren);
343
959
    auto *Inst = new (Mem) T;
344
959
    Inst->Data = Data;
345
959
    return Inst;
346
959
  }
clang::OMPTargetUpdateDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTargetUpdateDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
404
                                 unsigned NumChildren = 0) {
336
404
    void *Mem =
337
404
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
404
                                                 NumChildren),
339
404
                   alignof(T));
340
404
    auto *Data =
341
404
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
404
                                 HasAssociatedStmt, NumChildren);
343
404
    auto *Inst = new (Mem) T;
344
404
    Inst->Data = Data;
345
404
    return Inst;
346
404
  }
clang::OMPTargetTeamsDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPTargetTeamsDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
737
                                 unsigned NumChildren = 0) {
336
737
    void *Mem =
337
737
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
737
                                                 NumChildren),
339
737
                   alignof(T));
340
737
    auto *Data =
341
737
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
737
                                 HasAssociatedStmt, NumChildren);
343
737
    auto *Inst = new (Mem) T;
344
737
    Inst->Data = Data;
345
737
    return Inst;
346
737
  }
clang::OMPInteropDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPInteropDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
48
                                 unsigned NumChildren = 0) {
336
48
    void *Mem =
337
48
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
48
                                                 NumChildren),
339
48
                   alignof(T));
340
48
    auto *Data =
341
48
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
48
                                 HasAssociatedStmt, NumChildren);
343
48
    auto *Inst = new (Mem) T;
344
48
    Inst->Data = Data;
345
48
    return Inst;
346
48
  }
clang::OMPDispatchDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPDispatchDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
40
                                 unsigned NumChildren = 0) {
336
40
    void *Mem =
337
40
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
40
                                                 NumChildren),
339
40
                   alignof(T));
340
40
    auto *Data =
341
40
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
40
                                 HasAssociatedStmt, NumChildren);
343
40
    auto *Inst = new (Mem) T;
344
40
    Inst->Data = Data;
345
40
    return Inst;
346
40
  }
clang::OMPMaskedDirective* clang::OMPExecutableDirective::createEmptyDirective<clang::OMPMaskedDirective>(clang::ASTContext const&, unsigned int, bool, unsigned int)
Line
Count
Source
335
30
                                 unsigned NumChildren = 0) {
336
30
    void *Mem =
337
30
        C.Allocate(sizeof(T) + OMPChildren::size(NumClauses, HasAssociatedStmt,
338
30
                                                 NumChildren),
339
30
                   alignof(T));
340
30
    auto *Data =
341
30
        OMPChildren::CreateEmpty(reinterpret_cast<T *>(Mem) + 1, NumClauses,
342
30
                                 HasAssociatedStmt, NumChildren);
343
30
    auto *Inst = new (Mem) T;
344
30
    Inst->Data = Data;
345
30
    return Inst;
346
30
  }
347
348
public:
349
  /// Iterates over expressions/statements used in the construct.
350
  class used_clauses_child_iterator
351
      : public llvm::iterator_adaptor_base<
352
            used_clauses_child_iterator, ArrayRef<OMPClause *>::iterator,
353
            std::forward_iterator_tag, Stmt *, ptrdiff_t, Stmt *, Stmt *> {
354
    ArrayRef<OMPClause *>::iterator End;
355
    OMPClause::child_iterator ChildI, ChildEnd;
356
357
68.4k
    void MoveToNext() {
358
68.4k
      if (ChildI != ChildEnd)
359
26.6k
        return;
360
56.5k
      
while (41.7k
this->I != End) {
361
20.6k
        ++this->I;
362
20.6k
        if (this->I != End) {
363
12.0k
          ChildI = (*this->I)->used_children().begin();
364
12.0k
          ChildEnd = (*this->I)->used_children().end();
365
12.0k
          if (ChildI != ChildEnd)
366
5.85k
            return;
367
12.0k
        }
368
20.6k
      }
369
41.7k
    }
370
371
  public:
372
    explicit used_clauses_child_iterator(ArrayRef<OMPClause *> Clauses)
373
        : used_clauses_child_iterator::iterator_adaptor_base(Clauses.begin()),
374
51.0k
          End(Clauses.end()) {
375
51.0k
      if (this->I != End) {
376
22.5k
        ChildI = (*this->I)->used_children().begin();
377
22.5k
        ChildEnd = (*this->I)->used_children().end();
378
22.5k
        MoveToNext();
379
22.5k
      }
380
51.0k
    }
381
32.0k
    Stmt *operator*() const { return *ChildI; }
382
0
    Stmt *operator->() const { return **this; }
383
384
60.7k
    used_clauses_child_iterator &operator++() {
385
60.7k
      ++ChildI;
386
60.7k
      if (ChildI != ChildEnd)
387
14.8k
        return *this;
388
45.8k
      if (this->I != End) {
389
45.8k
        ++this->I;
390
45.8k
        if (this->I != End) {
391
18.6k
          ChildI = (*this->I)->used_children().begin();
392
18.6k
          ChildEnd = (*this->I)->used_children().end();
393
18.6k
        }
394
45.8k
      }
395
45.8k
      MoveToNext();
396
45.8k
      return *this;
397
60.7k
    }
398
  };
399
400
  static llvm::iterator_range<used_clauses_child_iterator>
401
25.5k
  used_clauses_children(ArrayRef<OMPClause *> Clauses) {
402
25.5k
    return {used_clauses_child_iterator(Clauses),
403
25.5k
            used_clauses_child_iterator(llvm::makeArrayRef(Clauses.end(), 0))};
404
25.5k
  }
405
406
  /// Iterates over a filtered subrange of clauses applied to a
407
  /// directive.
408
  ///
409
  /// This iterator visits only clauses of type SpecificClause.
410
  template <typename SpecificClause>
411
  class specific_clause_iterator
412
      : public llvm::iterator_adaptor_base<
413
            specific_clause_iterator<SpecificClause>,
414
            ArrayRef<OMPClause *>::const_iterator, std::forward_iterator_tag,
415
            const SpecificClause *, ptrdiff_t, const SpecificClause *,
416
            const SpecificClause *> {
417
    ArrayRef<OMPClause *>::const_iterator End;
418
419
2.61M
    void SkipToNextClause() {
420
3.86M
      while (this->I != End && 
!isa<SpecificClause>(*this->I)1.32M
)
421
1.25M
        ++this->I;
422
2.61M
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDependClause>::SkipToNextClause()
Line
Count
Source
419
24.5k
    void SkipToNextClause() {
420
41.4k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)18.1k
)
421
16.9k
        ++this->I;
422
24.5k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPCollapseClause>::SkipToNextClause()
Line
Count
Source
419
327k
    void SkipToNextClause() {
420
441k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)119k
)
421
113k
        ++this->I;
422
327k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPOrderedClause>::SkipToNextClause()
Line
Count
Source
419
164k
    void SkipToNextClause() {
420
243k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)80.2k
)
421
78.9k
        ++this->I;
422
164k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPBindClause>::SkipToNextClause()
Line
Count
Source
419
730k
    void SkipToNextClause() {
420
923k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)192k
)
421
192k
        ++this->I;
422
730k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPHintClause>::SkipToNextClause()
Line
Count
Source
419
226
    void SkipToNextClause() {
420
226
      while (this->I != End && 
!isa<SpecificClause>(*this->I)12
)
421
0
        ++this->I;
422
226
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSizesClause>::SkipToNextClause()
Line
Count
Source
419
180
    void SkipToNextClause() {
420
180
      while (this->I != End && 
!isa<SpecificClause>(*this->I)79
)
421
0
        ++this->I;
422
180
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFullClause>::SkipToNextClause()
Line
Count
Source
419
251
    void SkipToNextClause() {
420
328
      while (this->I != End && 
!isa<SpecificClause>(*this->I)93
)
421
77
        ++this->I;
422
251
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPPartialClause>::SkipToNextClause()
Line
Count
Source
419
309
    void SkipToNextClause() {
420
322
      while (this->I != End && 
!isa<SpecificClause>(*this->I)90
)
421
13
        ++this->I;
422
309
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDetachClause>::SkipToNextClause()
Line
Count
Source
419
3.72k
    void SkipToNextClause() {
420
8.42k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)4.71k
)
421
4.70k
        ++this->I;
422
3.72k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNowaitClause>::SkipToNextClause()
Line
Count
Source
419
42.7k
    void SkipToNextClause() {
420
71.3k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)29.5k
)
421
28.5k
        ++this->I;
422
42.7k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDeviceClause>::SkipToNextClause()
Line
Count
Source
419
20.7k
    void SkipToNextClause() {
420
35.3k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)15.0k
)
421
14.5k
        ++this->I;
422
20.7k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPAffinityClause>::SkipToNextClause()
Line
Count
Source
419
1.90k
    void SkipToNextClause() {
420
4.25k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)2.37k
)
421
2.35k
        ++this->I;
422
1.90k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUsesAllocatorsClause>::SkipToNextClause()
Line
Count
Source
419
41.0k
    void SkipToNextClause() {
420
69.9k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)28.9k
)
421
28.8k
        ++this->I;
422
41.0k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNumTeamsClause>::SkipToNextClause()
Line
Count
Source
419
34.3k
    void SkipToNextClause() {
420
52.2k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)20.6k
)
421
17.9k
        ++this->I;
422
34.3k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPIfClause>::SkipToNextClause()
Line
Count
Source
419
60.1k
    void SkipToNextClause() {
420
92.0k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)37.3k
)
421
31.9k
        ++this->I;
422
60.1k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNumThreadsClause>::SkipToNextClause()
Line
Count
Source
419
25.4k
    void SkipToNextClause() {
420
41.6k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)17.2k
)
421
16.2k
        ++this->I;
422
25.4k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPThreadLimitClause>::SkipToNextClause()
Line
Count
Source
419
30.8k
    void SkipToNextClause() {
420
50.6k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)21.2k
)
421
19.8k
        ++this->I;
422
30.8k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFirstprivateClause>::SkipToNextClause()
Line
Count
Source
419
151k
    void SkipToNextClause() {
420
217k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)87.9k
)
421
66.0k
        ++this->I;
422
151k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPInReductionClause>::SkipToNextClause()
Line
Count
Source
419
20.8k
    void SkipToNextClause() {
420
36.5k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)15.7k
)
421
15.7k
        ++this->I;
422
20.8k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPIsDevicePtrClause>::SkipToNextClause()
Line
Count
Source
419
18.6k
    void SkipToNextClause() {
420
31.2k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)12.7k
)
421
12.6k
        ++this->I;
422
18.6k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPMapClause>::SkipToNextClause()
Line
Count
Source
419
53.0k
    void SkipToNextClause() {
420
75.4k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)34.1k
)
421
22.3k
        ++this->I;
422
53.0k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNontemporalClause>::SkipToNextClause()
Line
Count
Source
419
27.4k
    void SkipToNextClause() {
420
46.7k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)19.5k
)
421
19.3k
        ++this->I;
422
27.4k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPPrivateClause>::SkipToNextClause()
Line
Count
Source
419
141k
    void SkipToNextClause() {
420
230k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)90.7k
)
421
88.3k
        ++this->I;
422
141k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPLastprivateClause>::SkipToNextClause()
Line
Count
Source
419
153k
    void SkipToNextClause() {
420
253k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)102k
)
421
99.5k
        ++this->I;
422
153k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPReductionClause>::SkipToNextClause()
Line
Count
Source
419
235k
    void SkipToNextClause() {
420
388k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)157k
)
421
152k
        ++this->I;
422
235k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPLinearClause>::SkipToNextClause()
Line
Count
Source
419
136k
    void SkipToNextClause() {
420
229k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)95.2k
)
421
92.7k
        ++this->I;
422
136k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPScheduleClause>::SkipToNextClause()
Line
Count
Source
419
11.7k
    void SkipToNextClause() {
420
17.0k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)6.83k
)
421
5.25k
        ++this->I;
422
11.7k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSimdlenClause>::SkipToNextClause()
Line
Count
Source
419
17.5k
    void SkipToNextClause() {
420
30.0k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)12.7k
)
421
12.4k
        ++this->I;
422
17.5k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSafelenClause>::SkipToNextClause()
Line
Count
Source
419
17.4k
    void SkipToNextClause() {
420
29.9k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)12.7k
)
421
12.5k
        ++this->I;
422
17.4k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPAlignedClause>::SkipToNextClause()
Line
Count
Source
419
27.1k
    void SkipToNextClause() {
420
45.8k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)19.0k
)
421
18.7k
        ++this->I;
422
27.1k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPCopyinClause>::SkipToNextClause()
Line
Count
Source
419
2.07k
    void SkipToNextClause() {
420
2.50k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)459
)
421
433
        ++this->I;
422
2.07k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPProcBindClause>::SkipToNextClause()
Line
Count
Source
419
12.5k
    void SkipToNextClause() {
420
20.2k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)7.75k
)
421
7.67k
        ++this->I;
422
12.5k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPOrderClause>::SkipToNextClause()
Line
Count
Source
419
22.5k
    void SkipToNextClause() {
420
38.7k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)16.2k
)
421
16.2k
        ++this->I;
422
22.5k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPCopyprivateClause>::SkipToNextClause()
Line
Count
Source
419
150
    void SkipToNextClause() {
420
169
      while (this->I != End && 
!isa<SpecificClause>(*this->I)47
)
421
19
        ++this->I;
422
150
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFilterClause>::SkipToNextClause()
Line
Count
Source
419
110
    void SkipToNextClause() {
420
110
      while (this->I != End && 
!isa<SpecificClause>(*this->I)30
)
421
0
        ++this->I;
422
110
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFinalClause>::SkipToNextClause()
Line
Count
Source
419
972
    void SkipToNextClause() {
420
1.66k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)732
)
421
696
        ++this->I;
422
972
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPPriorityClause>::SkipToNextClause()
Line
Count
Source
419
961
    void SkipToNextClause() {
420
1.66k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)732
)
421
707
        ++this->I;
422
961
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUntiedClause>::SkipToNextClause()
Line
Count
Source
419
512
    void SkipToNextClause() {
420
830
      while (this->I != End && 
!isa<SpecificClause>(*this->I)346
)
421
318
        ++this->I;
422
512
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPTaskReductionClause>::SkipToNextClause()
Line
Count
Source
419
90
    void SkipToNextClause() {
420
93
      while (this->I != End && 
!isa<SpecificClause>(*this->I)33
)
421
3
        ++this->I;
422
90
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFlushClause>::SkipToNextClause()
Line
Count
Source
419
176
    void SkipToNextClause() {
420
224
      while (this->I != End && 
!isa<SpecificClause>(*this->I)64
)
421
48
        ++this->I;
422
176
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDepobjClause>::SkipToNextClause()
Line
Count
Source
419
42
    void SkipToNextClause() {
420
56
      while (this->I != End && 
!isa<SpecificClause>(*this->I)28
)
421
14
        ++this->I;
422
42
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDestroyClause>::SkipToNextClause()
Line
Count
Source
419
27
    void SkipToNextClause() {
420
46
      while (this->I != End && 
!isa<SpecificClause>(*this->I)24
)
421
19
        ++this->I;
422
27
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUpdateClause>::SkipToNextClause()
Line
Count
Source
419
12
    void SkipToNextClause() {
420
16
      while (this->I != End && 
!isa<SpecificClause>(*this->I)8
)
421
4
        ++this->I;
422
12
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPInclusiveClause>::SkipToNextClause()
Line
Count
Source
419
96
    void SkipToNextClause() {
420
120
      while (this->I != End && 
!isa<SpecificClause>(*this->I)48
)
421
24
        ++this->I;
422
96
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDistScheduleClause>::SkipToNextClause()
Line
Count
Source
419
9.44k
    void SkipToNextClause() {
420
15.3k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)6.39k
)
421
5.94k
        ++this->I;
422
9.44k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSIMDClause>::SkipToNextClause()
Line
Count
Source
419
112
    void SkipToNextClause() {
420
128
      while (this->I != End && 
!isa<SpecificClause>(*this->I)32
)
421
16
        ++this->I;
422
112
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSeqCstClause>::SkipToNextClause()
Line
Count
Source
419
10.3k
    void SkipToNextClause() {
420
20.4k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)10.9k
)
421
10.1k
        ++this->I;
422
10.3k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPAcqRelClause>::SkipToNextClause()
Line
Count
Source
419
8.77k
    void SkipToNextClause() {
420
17.0k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)8.98k
)
421
8.27k
        ++this->I;
422
8.77k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPAcquireClause>::SkipToNextClause()
Line
Count
Source
419
7.36k
    void SkipToNextClause() {
420
13.7k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)7.13k
)
421
6.42k
        ++this->I;
422
7.36k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPReleaseClause>::SkipToNextClause()
Line
Count
Source
419
5.94k
    void SkipToNextClause() {
420
10.5k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)5.28k
)
421
4.57k
        ++this->I;
422
5.94k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPRelaxedClause>::SkipToNextClause()
Line
Count
Source
419
4.53k
    void SkipToNextClause() {
420
7.23k
      while (this->I != End && 
!isa<SpecificClause>(*this->I)3.42k
)
421
2.70k
        ++this->I;
422
4.53k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPInitClause>::SkipToNextClause()
Line
Count
Source
419
18
    void SkipToNextClause() {
420
28
      while (this->I != End && 
!isa<SpecificClause>(*this->I)14
)
421
10
        ++this->I;
422
18
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUseClause>::SkipToNextClause()
Line
Count
Source
419
6
    void SkipToNextClause() {
420
10
      while (this->I != End && 
!isa<SpecificClause>(*this->I)6
)
421
4
        ++this->I;
422
6
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUseDevicePtrClause>::SkipToNextClause()
Line
Count
Source
419
216
    void SkipToNextClause() {
420
300
      while (this->I != End && 
!isa<SpecificClause>(*this->I)156
)
421
84
        ++this->I;
422
216
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUseDeviceAddrClause>::SkipToNextClause()
Line
Count
Source
419
148
    void SkipToNextClause() {
420
300
      while (this->I != End && 
!isa<SpecificClause>(*this->I)156
)
421
152
        ++this->I;
422
148
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNogroupClause>::SkipToNextClause()
Line
Count
Source
419
470
    void SkipToNextClause() {
420
838
      while (this->I != End && 
!isa<SpecificClause>(*this->I)386
)
421
368
        ++this->I;
422
470
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPGrainsizeClause>::SkipToNextClause()
Line
Count
Source
419
470
    void SkipToNextClause() {
420
838
      while (this->I != End && 
!isa<SpecificClause>(*this->I)386
)
421
368
        ++this->I;
422
470
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNumTasksClause>::SkipToNextClause()
Line
Count
Source
419
452
    void SkipToNextClause() {
420
754
      while (this->I != End && 
!isa<SpecificClause>(*this->I)338
)
421
302
        ++this->I;
422
452
    }
423
424
  public:
425
    explicit specific_clause_iterator(ArrayRef<OMPClause *> Clauses)
426
        : specific_clause_iterator::iterator_adaptor_base(Clauses.begin()),
427
2.54M
          End(Clauses.end()) {
428
2.54M
      SkipToNextClause();
429
2.54M
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDependClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
23.5k
          End(Clauses.end()) {
428
23.5k
      SkipToNextClause();
429
23.5k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPCollapseClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
327k
          End(Clauses.end()) {
428
327k
      SkipToNextClause();
429
327k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPOrderedClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
164k
          End(Clauses.end()) {
428
164k
      SkipToNextClause();
429
164k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPBindClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
730k
          End(Clauses.end()) {
428
730k
      SkipToNextClause();
429
730k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPHintClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
214
          End(Clauses.end()) {
428
214
      SkipToNextClause();
429
214
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSizesClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
180
          End(Clauses.end()) {
428
180
      SkipToNextClause();
429
180
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFullClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
238
          End(Clauses.end()) {
428
238
      SkipToNextClause();
429
238
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPPartialClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
232
          End(Clauses.end()) {
428
232
      SkipToNextClause();
429
232
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDetachClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
3.72k
          End(Clauses.end()) {
428
3.72k
      SkipToNextClause();
429
3.72k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNowaitClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
42.7k
          End(Clauses.end()) {
428
42.7k
      SkipToNextClause();
429
42.7k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDeviceClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
20.3k
          End(Clauses.end()) {
428
20.3k
      SkipToNextClause();
429
20.3k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPAffinityClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
1.88k
          End(Clauses.end()) {
428
1.88k
      SkipToNextClause();
429
1.88k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUsesAllocatorsClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
40.9k
          End(Clauses.end()) {
428
40.9k
      SkipToNextClause();
429
40.9k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNumTeamsClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
32.7k
          End(Clauses.end()) {
428
32.7k
      SkipToNextClause();
429
32.7k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPIfClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
57.7k
          End(Clauses.end()) {
428
57.7k
      SkipToNextClause();
429
57.7k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNumThreadsClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
24.7k
          End(Clauses.end()) {
428
24.7k
      SkipToNextClause();
429
24.7k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPThreadLimitClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
29.9k
          End(Clauses.end()) {
428
29.9k
      SkipToNextClause();
429
29.9k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFirstprivateClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
129k
          End(Clauses.end()) {
428
129k
      SkipToNextClause();
429
129k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPInReductionClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
20.7k
          End(Clauses.end()) {
428
20.7k
      SkipToNextClause();
429
20.7k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPIsDevicePtrClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
18.5k
          End(Clauses.end()) {
428
18.5k
      SkipToNextClause();
429
18.5k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPMapClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
41.3k
          End(Clauses.end()) {
428
41.3k
      SkipToNextClause();
429
41.3k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNontemporalClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
27.2k
          End(Clauses.end()) {
428
27.2k
      SkipToNextClause();
429
27.2k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPPrivateClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
139k
          End(Clauses.end()) {
428
139k
      SkipToNextClause();
429
139k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPLastprivateClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
151k
          End(Clauses.end()) {
428
151k
      SkipToNextClause();
429
151k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPReductionClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
230k
          End(Clauses.end()) {
428
230k
      SkipToNextClause();
429
230k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPLinearClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
133k
          End(Clauses.end()) {
428
133k
      SkipToNextClause();
429
133k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPScheduleClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
10.4k
          End(Clauses.end()) {
428
10.4k
      SkipToNextClause();
429
10.4k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSimdlenClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
17.2k
          End(Clauses.end()) {
428
17.2k
      SkipToNextClause();
429
17.2k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSafelenClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
17.2k
          End(Clauses.end()) {
428
17.2k
      SkipToNextClause();
429
17.2k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPAlignedClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
26.7k
          End(Clauses.end()) {
428
26.7k
      SkipToNextClause();
429
26.7k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPCopyinClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
2.04k
          End(Clauses.end()) {
428
2.04k
      SkipToNextClause();
429
2.04k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPProcBindClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
12.4k
          End(Clauses.end()) {
428
12.4k
      SkipToNextClause();
429
12.4k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPOrderClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
22.5k
          End(Clauses.end()) {
428
22.5k
      SkipToNextClause();
429
22.5k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPCopyprivateClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
122
          End(Clauses.end()) {
428
122
      SkipToNextClause();
429
122
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFilterClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
80
          End(Clauses.end()) {
428
80
      SkipToNextClause();
429
80
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFinalClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
936
          End(Clauses.end()) {
428
936
      SkipToNextClause();
429
936
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPPriorityClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
936
          End(Clauses.end()) {
428
936
      SkipToNextClause();
429
936
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUntiedClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
484
          End(Clauses.end()) {
428
484
      SkipToNextClause();
429
484
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPTaskReductionClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
60
          End(Clauses.end()) {
428
60
      SkipToNextClause();
429
60
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFlushClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
160
          End(Clauses.end()) {
428
160
      SkipToNextClause();
429
160
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDepobjClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
28
          End(Clauses.end()) {
428
28
      SkipToNextClause();
429
28
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDestroyClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
22
          End(Clauses.end()) {
428
22
      SkipToNextClause();
429
22
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUpdateClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
8
          End(Clauses.end()) {
428
8
      SkipToNextClause();
429
8
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPInclusiveClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
96
          End(Clauses.end()) {
428
96
      SkipToNextClause();
429
96
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDistScheduleClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
8.99k
          End(Clauses.end()) {
428
8.99k
      SkipToNextClause();
429
8.99k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSIMDClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
96
          End(Clauses.end()) {
428
96
      SkipToNextClause();
429
96
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSeqCstClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
9.55k
          End(Clauses.end()) {
428
9.55k
      SkipToNextClause();
429
9.55k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPAcqRelClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
8.07k
          End(Clauses.end()) {
428
8.07k
      SkipToNextClause();
429
8.07k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPAcquireClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
6.65k
          End(Clauses.end()) {
428
6.65k
      SkipToNextClause();
429
6.65k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPReleaseClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
5.23k
          End(Clauses.end()) {
428
5.23k
      SkipToNextClause();
429
5.23k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPRelaxedClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
3.81k
          End(Clauses.end()) {
428
3.81k
      SkipToNextClause();
429
3.81k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPInitClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
14
          End(Clauses.end()) {
428
14
      SkipToNextClause();
429
14
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUseClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
4
          End(Clauses.end()) {
428
4
      SkipToNextClause();
429
4
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUseDevicePtrClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
144
          End(Clauses.end()) {
428
144
      SkipToNextClause();
429
144
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUseDeviceAddrClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
144
          End(Clauses.end()) {
428
144
      SkipToNextClause();
429
144
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNogroupClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
452
          End(Clauses.end()) {
428
452
      SkipToNextClause();
429
452
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPGrainsizeClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
452
          End(Clauses.end()) {
428
452
      SkipToNextClause();
429
452
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNumTasksClause>::specific_clause_iterator(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
427
416
          End(Clauses.end()) {
428
416
      SkipToNextClause();
429
416
    }
430
431
70.5k
    const SpecificClause *operator*() const {
432
70.5k
      return cast<SpecificClause>(*this->I);
433
70.5k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPCollapseClause>::operator*() const
Line
Count
Source
431
5.70k
    const SpecificClause *operator*() const {
432
5.70k
      return cast<SpecificClause>(*this->I);
433
5.70k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPOrderedClause>::operator*() const
Line
Count
Source
431
1.30k
    const SpecificClause *operator*() const {
432
1.30k
      return cast<SpecificClause>(*this->I);
433
1.30k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPBindClause>::operator*() const
Line
Count
Source
431
172
    const SpecificClause *operator*() const {
432
172
      return cast<SpecificClause>(*this->I);
433
172
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPHintClause>::operator*() const
Line
Count
Source
431
12
    const SpecificClause *operator*() const {
432
12
      return cast<SpecificClause>(*this->I);
433
12
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSizesClause>::operator*() const
Line
Count
Source
431
79
    const SpecificClause *operator*() const {
432
79
      return cast<SpecificClause>(*this->I);
433
79
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFullClause>::operator*() const
Line
Count
Source
431
13
    const SpecificClause *operator*() const {
432
13
      return cast<SpecificClause>(*this->I);
433
13
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPPartialClause>::operator*() const
Line
Count
Source
431
77
    const SpecificClause *operator*() const {
432
77
      return cast<SpecificClause>(*this->I);
433
77
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDeviceClause>::operator*() const
Line
Count
Source
431
431
    const SpecificClause *operator*() const {
432
431
      return cast<SpecificClause>(*this->I);
433
431
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDetachClause>::operator*() const
Line
Count
Source
431
2
    const SpecificClause *operator*() const {
432
2
      return cast<SpecificClause>(*this->I);
433
2
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPAffinityClause>::operator*() const
Line
Count
Source
431
18
    const SpecificClause *operator*() const {
432
18
      return cast<SpecificClause>(*this->I);
433
18
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUsesAllocatorsClause>::operator*() const
Line
Count
Source
431
56
    const SpecificClause *operator*() const {
432
56
      return cast<SpecificClause>(*this->I);
433
56
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNumTeamsClause>::operator*() const
Line
Count
Source
431
1.59k
    const SpecificClause *operator*() const {
432
1.59k
      return cast<SpecificClause>(*this->I);
433
1.59k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPIfClause>::operator*() const
Line
Count
Source
431
4.89k
    const SpecificClause *operator*() const {
432
4.89k
      return cast<SpecificClause>(*this->I);
433
4.89k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNumThreadsClause>::operator*() const
Line
Count
Source
431
677
    const SpecificClause *operator*() const {
432
677
      return cast<SpecificClause>(*this->I);
433
677
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPThreadLimitClause>::operator*() const
Line
Count
Source
431
907
    const SpecificClause *operator*() const {
432
907
      return cast<SpecificClause>(*this->I);
433
907
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFirstprivateClause>::operator*() const
Line
Count
Source
431
21.9k
    const SpecificClause *operator*() const {
432
21.9k
      return cast<SpecificClause>(*this->I);
433
21.9k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPIsDevicePtrClause>::operator*() const
Line
Count
Source
431
92
    const SpecificClause *operator*() const {
432
92
      return cast<SpecificClause>(*this->I);
433
92
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPMapClause>::operator*() const
Line
Count
Source
431
11.7k
    const SpecificClause *operator*() const {
432
11.7k
      return cast<SpecificClause>(*this->I);
433
11.7k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNontemporalClause>::operator*() const
Line
Count
Source
431
138
    const SpecificClause *operator*() const {
432
138
      return cast<SpecificClause>(*this->I);
433
138
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPPrivateClause>::operator*() const
Line
Count
Source
431
2.38k
    const SpecificClause *operator*() const {
432
2.38k
      return cast<SpecificClause>(*this->I);
433
2.38k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPLastprivateClause>::operator*() const
Line
Count
Source
431
2.89k
    const SpecificClause *operator*() const {
432
2.89k
      return cast<SpecificClause>(*this->I);
433
2.89k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPReductionClause>::operator*() const
Line
Count
Source
431
5.14k
    const SpecificClause *operator*() const {
432
5.14k
      return cast<SpecificClause>(*this->I);
433
5.14k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPLinearClause>::operator*() const
Line
Count
Source
431
2.47k
    const SpecificClause *operator*() const {
432
2.47k
      return cast<SpecificClause>(*this->I);
433
2.47k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPScheduleClause>::operator*() const
Line
Count
Source
431
1.40k
    const SpecificClause *operator*() const {
432
1.40k
      return cast<SpecificClause>(*this->I);
433
1.40k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSimdlenClause>::operator*() const
Line
Count
Source
431
249
    const SpecificClause *operator*() const {
432
249
      return cast<SpecificClause>(*this->I);
433
249
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSafelenClause>::operator*() const
Line
Count
Source
431
226
    const SpecificClause *operator*() const {
432
226
      return cast<SpecificClause>(*this->I);
433
226
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPAlignedClause>::operator*() const
Line
Count
Source
431
314
    const SpecificClause *operator*() const {
432
314
      return cast<SpecificClause>(*this->I);
433
314
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPCopyinClause>::operator*() const
Line
Count
Source
431
26
    const SpecificClause *operator*() const {
432
26
      return cast<SpecificClause>(*this->I);
433
26
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNowaitClause>::operator*() const
Line
Count
Source
431
30
    const SpecificClause *operator*() const {
432
30
      return cast<SpecificClause>(*this->I);
433
30
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPProcBindClause>::operator*() const
Line
Count
Source
431
87
    const SpecificClause *operator*() const {
432
87
      return cast<SpecificClause>(*this->I);
433
87
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPOrderClause>::operator*() const
Line
Count
Source
431
3
    const SpecificClause *operator*() const {
432
3
      return cast<SpecificClause>(*this->I);
433
3
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPCopyprivateClause>::operator*() const
Line
Count
Source
431
28
    const SpecificClause *operator*() const {
432
28
      return cast<SpecificClause>(*this->I);
433
28
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFilterClause>::operator*() const
Line
Count
Source
431
30
    const SpecificClause *operator*() const {
432
30
      return cast<SpecificClause>(*this->I);
433
30
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDependClause>::operator*() const
Line
Count
Source
431
962
    const SpecificClause *operator*() const {
432
962
      return cast<SpecificClause>(*this->I);
433
962
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFinalClause>::operator*() const
Line
Count
Source
431
36
    const SpecificClause *operator*() const {
432
36
      return cast<SpecificClause>(*this->I);
433
36
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPPriorityClause>::operator*() const
Line
Count
Source
431
25
    const SpecificClause *operator*() const {
432
25
      return cast<SpecificClause>(*this->I);
433
25
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPInReductionClause>::operator*() const
Line
Count
Source
431
48
    const SpecificClause *operator*() const {
432
48
      return cast<SpecificClause>(*this->I);
433
48
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUntiedClause>::operator*() const
Line
Count
Source
431
28
    const SpecificClause *operator*() const {
432
28
      return cast<SpecificClause>(*this->I);
433
28
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPTaskReductionClause>::operator*() const
Line
Count
Source
431
30
    const SpecificClause *operator*() const {
432
30
      return cast<SpecificClause>(*this->I);
433
30
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFlushClause>::operator*() const
Line
Count
Source
431
16
    const SpecificClause *operator*() const {
432
16
      return cast<SpecificClause>(*this->I);
433
16
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDepobjClause>::operator*() const
Line
Count
Source
431
14
    const SpecificClause *operator*() const {
432
14
      return cast<SpecificClause>(*this->I);
433
14
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDestroyClause>::operator*() const
Line
Count
Source
431
5
    const SpecificClause *operator*() const {
432
5
      return cast<SpecificClause>(*this->I);
433
5
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUpdateClause>::operator*() const
Line
Count
Source
431
4
    const SpecificClause *operator*() const {
432
4
      return cast<SpecificClause>(*this->I);
433
4
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDistScheduleClause>::operator*() const
Line
Count
Source
431
447
    const SpecificClause *operator*() const {
432
447
      return cast<SpecificClause>(*this->I);
433
447
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSIMDClause>::operator*() const
Line
Count
Source
431
16
    const SpecificClause *operator*() const {
432
16
      return cast<SpecificClause>(*this->I);
433
16
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSeqCstClause>::operator*() const
Line
Count
Source
431
744
    const SpecificClause *operator*() const {
432
744
      return cast<SpecificClause>(*this->I);
433
744
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPAcqRelClause>::operator*() const
Line
Count
Source
431
708
    const SpecificClause *operator*() const {
432
708
      return cast<SpecificClause>(*this->I);
433
708
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPAcquireClause>::operator*() const
Line
Count
Source
431
710
    const SpecificClause *operator*() const {
432
710
      return cast<SpecificClause>(*this->I);
433
710
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPReleaseClause>::operator*() const
Line
Count
Source
431
712
    const SpecificClause *operator*() const {
432
712
      return cast<SpecificClause>(*this->I);
433
712
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPRelaxedClause>::operator*() const
Line
Count
Source
431
726
    const SpecificClause *operator*() const {
432
726
      return cast<SpecificClause>(*this->I);
433
726
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPInitClause>::operator*() const
Line
Count
Source
431
4
    const SpecificClause *operator*() const {
432
4
      return cast<SpecificClause>(*this->I);
433
4
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUseClause>::operator*() const
Line
Count
Source
431
2
    const SpecificClause *operator*() const {
432
2
      return cast<SpecificClause>(*this->I);
433
2
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUseDevicePtrClause>::operator*() const
Line
Count
Source
431
72
    const SpecificClause *operator*() const {
432
72
      return cast<SpecificClause>(*this->I);
433
72
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUseDeviceAddrClause>::operator*() const
Line
Count
Source
431
4
    const SpecificClause *operator*() const {
432
4
      return cast<SpecificClause>(*this->I);
433
4
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNogroupClause>::operator*() const
Line
Count
Source
431
18
    const SpecificClause *operator*() const {
432
18
      return cast<SpecificClause>(*this->I);
433
18
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPGrainsizeClause>::operator*() const
Line
Count
Source
431
18
    const SpecificClause *operator*() const {
432
18
      return cast<SpecificClause>(*this->I);
433
18
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNumTasksClause>::operator*() const
Line
Count
Source
431
36
    const SpecificClause *operator*() const {
432
36
      return cast<SpecificClause>(*this->I);
433
36
    }
434
    const SpecificClause *operator->() const { return **this; }
435
436
61.0k
    specific_clause_iterator &operator++() {
437
61.0k
      ++this->I;
438
61.0k
      SkipToNextClause();
439
61.0k
      return *this;
440
61.0k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPBindClause>::operator++()
Line
Count
Source
436
172
    specific_clause_iterator &operator++() {
437
172
      ++this->I;
438
172
      SkipToNextClause();
439
172
      return *this;
440
172
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPHintClause>::operator++()
Line
Count
Source
436
12
    specific_clause_iterator &operator++() {
437
12
      ++this->I;
438
12
      SkipToNextClause();
439
12
      return *this;
440
12
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFullClause>::operator++()
Line
Count
Source
436
13
    specific_clause_iterator &operator++() {
437
13
      ++this->I;
438
13
      SkipToNextClause();
439
13
      return *this;
440
13
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPPartialClause>::operator++()
Line
Count
Source
436
77
    specific_clause_iterator &operator++() {
437
77
      ++this->I;
438
77
      SkipToNextClause();
439
77
      return *this;
440
77
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPOrderedClause>::operator++()
Line
Count
Source
436
253
    specific_clause_iterator &operator++() {
437
253
      ++this->I;
438
253
      SkipToNextClause();
439
253
      return *this;
440
253
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDeviceClause>::operator++()
Line
Count
Source
436
431
    specific_clause_iterator &operator++() {
437
431
      ++this->I;
438
431
      SkipToNextClause();
439
431
      return *this;
440
431
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDetachClause>::operator++()
Line
Count
Source
436
2
    specific_clause_iterator &operator++() {
437
2
      ++this->I;
438
2
      SkipToNextClause();
439
2
      return *this;
440
2
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPAffinityClause>::operator++()
Line
Count
Source
436
18
    specific_clause_iterator &operator++() {
437
18
      ++this->I;
438
18
      SkipToNextClause();
439
18
      return *this;
440
18
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUsesAllocatorsClause>::operator++()
Line
Count
Source
436
56
    specific_clause_iterator &operator++() {
437
56
      ++this->I;
438
56
      SkipToNextClause();
439
56
      return *this;
440
56
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNumTeamsClause>::operator++()
Line
Count
Source
436
1.59k
    specific_clause_iterator &operator++() {
437
1.59k
      ++this->I;
438
1.59k
      SkipToNextClause();
439
1.59k
      return *this;
440
1.59k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPIfClause>::operator++()
Line
Count
Source
436
2.36k
    specific_clause_iterator &operator++() {
437
2.36k
      ++this->I;
438
2.36k
      SkipToNextClause();
439
2.36k
      return *this;
440
2.36k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNumThreadsClause>::operator++()
Line
Count
Source
436
677
    specific_clause_iterator &operator++() {
437
677
      ++this->I;
438
677
      SkipToNextClause();
439
677
      return *this;
440
677
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPThreadLimitClause>::operator++()
Line
Count
Source
436
907
    specific_clause_iterator &operator++() {
437
907
      ++this->I;
438
907
      SkipToNextClause();
439
907
      return *this;
440
907
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFirstprivateClause>::operator++()
Line
Count
Source
436
21.9k
    specific_clause_iterator &operator++() {
437
21.9k
      ++this->I;
438
21.9k
      SkipToNextClause();
439
21.9k
      return *this;
440
21.9k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPIsDevicePtrClause>::operator++()
Line
Count
Source
436
92
    specific_clause_iterator &operator++() {
437
92
      ++this->I;
438
92
      SkipToNextClause();
439
92
      return *this;
440
92
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPMapClause>::operator++()
Line
Count
Source
436
11.7k
    specific_clause_iterator &operator++() {
437
11.7k
      ++this->I;
438
11.7k
      SkipToNextClause();
439
11.7k
      return *this;
440
11.7k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNontemporalClause>::operator++()
Line
Count
Source
436
138
    specific_clause_iterator &operator++() {
437
138
      ++this->I;
438
138
      SkipToNextClause();
439
138
      return *this;
440
138
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPPrivateClause>::operator++()
Line
Count
Source
436
2.38k
    specific_clause_iterator &operator++() {
437
2.38k
      ++this->I;
438
2.38k
      SkipToNextClause();
439
2.38k
      return *this;
440
2.38k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPLastprivateClause>::operator++()
Line
Count
Source
436
2.82k
    specific_clause_iterator &operator++() {
437
2.82k
      ++this->I;
438
2.82k
      SkipToNextClause();
439
2.82k
      return *this;
440
2.82k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPReductionClause>::operator++()
Line
Count
Source
436
5.10k
    specific_clause_iterator &operator++() {
437
5.10k
      ++this->I;
438
5.10k
      SkipToNextClause();
439
5.10k
      return *this;
440
5.10k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPLinearClause>::operator++()
Line
Count
Source
436
2.47k
    specific_clause_iterator &operator++() {
437
2.47k
      ++this->I;
438
2.47k
      SkipToNextClause();
439
2.47k
      return *this;
440
2.47k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPScheduleClause>::operator++()
Line
Count
Source
436
1.34k
    specific_clause_iterator &operator++() {
437
1.34k
      ++this->I;
438
1.34k
      SkipToNextClause();
439
1.34k
      return *this;
440
1.34k
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSimdlenClause>::operator++()
Line
Count
Source
436
249
    specific_clause_iterator &operator++() {
437
249
      ++this->I;
438
249
      SkipToNextClause();
439
249
      return *this;
440
249
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSafelenClause>::operator++()
Line
Count
Source
436
226
    specific_clause_iterator &operator++() {
437
226
      ++this->I;
438
226
      SkipToNextClause();
439
226
      return *this;
440
226
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPAlignedClause>::operator++()
Line
Count
Source
436
314
    specific_clause_iterator &operator++() {
437
314
      ++this->I;
438
314
      SkipToNextClause();
439
314
      return *this;
440
314
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPCopyinClause>::operator++()
Line
Count
Source
436
26
    specific_clause_iterator &operator++() {
437
26
      ++this->I;
438
26
      SkipToNextClause();
439
26
      return *this;
440
26
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNowaitClause>::operator++()
Line
Count
Source
436
30
    specific_clause_iterator &operator++() {
437
30
      ++this->I;
438
30
      SkipToNextClause();
439
30
      return *this;
440
30
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPProcBindClause>::operator++()
Line
Count
Source
436
87
    specific_clause_iterator &operator++() {
437
87
      ++this->I;
438
87
      SkipToNextClause();
439
87
      return *this;
440
87
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPOrderClause>::operator++()
Line
Count
Source
436
3
    specific_clause_iterator &operator++() {
437
3
      ++this->I;
438
3
      SkipToNextClause();
439
3
      return *this;
440
3
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPCopyprivateClause>::operator++()
Line
Count
Source
436
28
    specific_clause_iterator &operator++() {
437
28
      ++this->I;
438
28
      SkipToNextClause();
439
28
      return *this;
440
28
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFilterClause>::operator++()
Line
Count
Source
436
30
    specific_clause_iterator &operator++() {
437
30
      ++this->I;
438
30
      SkipToNextClause();
439
30
      return *this;
440
30
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDependClause>::operator++()
Line
Count
Source
436
952
    specific_clause_iterator &operator++() {
437
952
      ++this->I;
438
952
      SkipToNextClause();
439
952
      return *this;
440
952
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFinalClause>::operator++()
Line
Count
Source
436
36
    specific_clause_iterator &operator++() {
437
36
      ++this->I;
438
36
      SkipToNextClause();
439
36
      return *this;
440
36
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPPriorityClause>::operator++()
Line
Count
Source
436
25
    specific_clause_iterator &operator++() {
437
25
      ++this->I;
438
25
      SkipToNextClause();
439
25
      return *this;
440
25
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPInReductionClause>::operator++()
Line
Count
Source
436
48
    specific_clause_iterator &operator++() {
437
48
      ++this->I;
438
48
      SkipToNextClause();
439
48
      return *this;
440
48
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUntiedClause>::operator++()
Line
Count
Source
436
28
    specific_clause_iterator &operator++() {
437
28
      ++this->I;
438
28
      SkipToNextClause();
439
28
      return *this;
440
28
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPTaskReductionClause>::operator++()
Line
Count
Source
436
30
    specific_clause_iterator &operator++() {
437
30
      ++this->I;
438
30
      SkipToNextClause();
439
30
      return *this;
440
30
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFlushClause>::operator++()
Line
Count
Source
436
16
    specific_clause_iterator &operator++() {
437
16
      ++this->I;
438
16
      SkipToNextClause();
439
16
      return *this;
440
16
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDepobjClause>::operator++()
Line
Count
Source
436
14
    specific_clause_iterator &operator++() {
437
14
      ++this->I;
438
14
      SkipToNextClause();
439
14
      return *this;
440
14
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDestroyClause>::operator++()
Line
Count
Source
436
5
    specific_clause_iterator &operator++() {
437
5
      ++this->I;
438
5
      SkipToNextClause();
439
5
      return *this;
440
5
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUpdateClause>::operator++()
Line
Count
Source
436
4
    specific_clause_iterator &operator++() {
437
4
      ++this->I;
438
4
      SkipToNextClause();
439
4
      return *this;
440
4
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDistScheduleClause>::operator++()
Line
Count
Source
436
447
    specific_clause_iterator &operator++() {
437
447
      ++this->I;
438
447
      SkipToNextClause();
439
447
      return *this;
440
447
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSIMDClause>::operator++()
Line
Count
Source
436
16
    specific_clause_iterator &operator++() {
437
16
      ++this->I;
438
16
      SkipToNextClause();
439
16
      return *this;
440
16
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSeqCstClause>::operator++()
Line
Count
Source
436
744
    specific_clause_iterator &operator++() {
437
744
      ++this->I;
438
744
      SkipToNextClause();
439
744
      return *this;
440
744
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPAcqRelClause>::operator++()
Line
Count
Source
436
708
    specific_clause_iterator &operator++() {
437
708
      ++this->I;
438
708
      SkipToNextClause();
439
708
      return *this;
440
708
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPAcquireClause>::operator++()
Line
Count
Source
436
710
    specific_clause_iterator &operator++() {
437
710
      ++this->I;
438
710
      SkipToNextClause();
439
710
      return *this;
440
710
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPReleaseClause>::operator++()
Line
Count
Source
436
712
    specific_clause_iterator &operator++() {
437
712
      ++this->I;
438
712
      SkipToNextClause();
439
712
      return *this;
440
712
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPRelaxedClause>::operator++()
Line
Count
Source
436
726
    specific_clause_iterator &operator++() {
437
726
      ++this->I;
438
726
      SkipToNextClause();
439
726
      return *this;
440
726
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPInitClause>::operator++()
Line
Count
Source
436
4
    specific_clause_iterator &operator++() {
437
4
      ++this->I;
438
4
      SkipToNextClause();
439
4
      return *this;
440
4
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUseClause>::operator++()
Line
Count
Source
436
2
    specific_clause_iterator &operator++() {
437
2
      ++this->I;
438
2
      SkipToNextClause();
439
2
      return *this;
440
2
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUseDevicePtrClause>::operator++()
Line
Count
Source
436
72
    specific_clause_iterator &operator++() {
437
72
      ++this->I;
438
72
      SkipToNextClause();
439
72
      return *this;
440
72
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUseDeviceAddrClause>::operator++()
Line
Count
Source
436
4
    specific_clause_iterator &operator++() {
437
4
      ++this->I;
438
4
      SkipToNextClause();
439
4
      return *this;
440
4
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNogroupClause>::operator++()
Line
Count
Source
436
18
    specific_clause_iterator &operator++() {
437
18
      ++this->I;
438
18
      SkipToNextClause();
439
18
      return *this;
440
18
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPGrainsizeClause>::operator++()
Line
Count
Source
436
18
    specific_clause_iterator &operator++() {
437
18
      ++this->I;
438
18
      SkipToNextClause();
439
18
      return *this;
440
18
    }
clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNumTasksClause>::operator++()
Line
Count
Source
436
36
    specific_clause_iterator &operator++() {
437
36
      ++this->I;
438
36
      SkipToNextClause();
439
36
      return *this;
440
36
    }
441
  };
442
443
  template <typename SpecificClause>
444
  static llvm::iterator_range<specific_clause_iterator<SpecificClause>>
445
1.27M
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
1.27M
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
1.27M
            specific_clause_iterator<SpecificClause>(
448
1.27M
                llvm::makeArrayRef(Clauses.end(), 0))};
449
1.27M
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDependClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPDependClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
11.7k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
11.7k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
11.7k
            specific_clause_iterator<SpecificClause>(
448
11.7k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
11.7k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPCollapseClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPCollapseClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
163k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
163k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
163k
            specific_clause_iterator<SpecificClause>(
448
163k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
163k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPOrderedClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPOrderedClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
82.0k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
82.0k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
82.0k
            specific_clause_iterator<SpecificClause>(
448
82.0k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
82.0k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPBindClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPBindClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
365k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
365k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
365k
            specific_clause_iterator<SpecificClause>(
448
365k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
365k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPHintClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPHintClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
107
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
107
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
107
            specific_clause_iterator<SpecificClause>(
448
107
                llvm::makeArrayRef(Clauses.end(), 0))};
449
107
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSizesClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPSizesClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
90
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
90
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
90
            specific_clause_iterator<SpecificClause>(
448
90
                llvm::makeArrayRef(Clauses.end(), 0))};
449
90
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFullClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPFullClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
119
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
119
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
119
            specific_clause_iterator<SpecificClause>(
448
119
                llvm::makeArrayRef(Clauses.end(), 0))};
449
119
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPPartialClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPPartialClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
116
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
116
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
116
            specific_clause_iterator<SpecificClause>(
448
116
                llvm::makeArrayRef(Clauses.end(), 0))};
449
116
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDetachClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPDetachClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
1.86k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
1.86k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
1.86k
            specific_clause_iterator<SpecificClause>(
448
1.86k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
1.86k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNowaitClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPNowaitClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
21.3k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
21.3k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
21.3k
            specific_clause_iterator<SpecificClause>(
448
21.3k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
21.3k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDeviceClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPDeviceClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
10.1k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
10.1k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
10.1k
            specific_clause_iterator<SpecificClause>(
448
10.1k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
10.1k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPAffinityClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPAffinityClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
942
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
942
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
942
            specific_clause_iterator<SpecificClause>(
448
942
                llvm::makeArrayRef(Clauses.end(), 0))};
449
942
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUsesAllocatorsClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPUsesAllocatorsClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
20.4k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
20.4k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
20.4k
            specific_clause_iterator<SpecificClause>(
448
20.4k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
20.4k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNumTeamsClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPNumTeamsClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
16.3k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
16.3k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
16.3k
            specific_clause_iterator<SpecificClause>(
448
16.3k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
16.3k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPIfClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPIfClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
28.8k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
28.8k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
28.8k
            specific_clause_iterator<SpecificClause>(
448
28.8k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
28.8k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNumThreadsClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPNumThreadsClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
12.3k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
12.3k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
12.3k
            specific_clause_iterator<SpecificClause>(
448
12.3k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
12.3k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPThreadLimitClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPThreadLimitClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
14.9k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
14.9k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
14.9k
            specific_clause_iterator<SpecificClause>(
448
14.9k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
14.9k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFirstprivateClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPFirstprivateClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
64.8k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
64.8k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
64.8k
            specific_clause_iterator<SpecificClause>(
448
64.8k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
64.8k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPInReductionClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPInReductionClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
10.3k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
10.3k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
10.3k
            specific_clause_iterator<SpecificClause>(
448
10.3k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
10.3k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPIsDevicePtrClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPIsDevicePtrClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
9.26k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
9.26k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
9.26k
            specific_clause_iterator<SpecificClause>(
448
9.26k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
9.26k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPMapClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPMapClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
20.6k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
20.6k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
20.6k
            specific_clause_iterator<SpecificClause>(
448
20.6k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
20.6k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNontemporalClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPNontemporalClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
13.6k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
13.6k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
13.6k
            specific_clause_iterator<SpecificClause>(
448
13.6k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
13.6k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPPrivateClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPPrivateClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
69.6k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
69.6k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
69.6k
            specific_clause_iterator<SpecificClause>(
448
69.6k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
69.6k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPLastprivateClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPLastprivateClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
75.5k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
75.5k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
75.5k
            specific_clause_iterator<SpecificClause>(
448
75.5k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
75.5k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPReductionClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPReductionClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
115k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
115k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
115k
            specific_clause_iterator<SpecificClause>(
448
115k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
115k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPLinearClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPLinearClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
66.9k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
66.9k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
66.9k
            specific_clause_iterator<SpecificClause>(
448
66.9k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
66.9k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPScheduleClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPScheduleClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
5.21k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
5.21k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
5.21k
            specific_clause_iterator<SpecificClause>(
448
5.21k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
5.21k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSimdlenClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPSimdlenClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
8.63k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
8.63k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
8.63k
            specific_clause_iterator<SpecificClause>(
448
8.63k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
8.63k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSafelenClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPSafelenClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
8.62k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
8.62k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
8.62k
            specific_clause_iterator<SpecificClause>(
448
8.62k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
8.62k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPAlignedClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPAlignedClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
13.3k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
13.3k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
13.3k
            specific_clause_iterator<SpecificClause>(
448
13.3k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
13.3k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPCopyinClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPCopyinClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
1.02k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
1.02k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
1.02k
            specific_clause_iterator<SpecificClause>(
448
1.02k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
1.02k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPProcBindClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPProcBindClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
6.23k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
6.23k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
6.23k
            specific_clause_iterator<SpecificClause>(
448
6.23k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
6.23k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPOrderClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPOrderClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
11.2k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
11.2k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
11.2k
            specific_clause_iterator<SpecificClause>(
448
11.2k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
11.2k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPCopyprivateClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPCopyprivateClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
61
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
61
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
61
            specific_clause_iterator<SpecificClause>(
448
61
                llvm::makeArrayRef(Clauses.end(), 0))};
449
61
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFilterClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPFilterClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
40
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
40
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
40
            specific_clause_iterator<SpecificClause>(
448
40
                llvm::makeArrayRef(Clauses.end(), 0))};
449
40
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFinalClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPFinalClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
468
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
468
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
468
            specific_clause_iterator<SpecificClause>(
448
468
                llvm::makeArrayRef(Clauses.end(), 0))};
449
468
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPPriorityClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPPriorityClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
468
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
468
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
468
            specific_clause_iterator<SpecificClause>(
448
468
                llvm::makeArrayRef(Clauses.end(), 0))};
449
468
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUntiedClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPUntiedClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
242
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
242
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
242
            specific_clause_iterator<SpecificClause>(
448
242
                llvm::makeArrayRef(Clauses.end(), 0))};
449
242
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPTaskReductionClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPTaskReductionClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
30
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
30
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
30
            specific_clause_iterator<SpecificClause>(
448
30
                llvm::makeArrayRef(Clauses.end(), 0))};
449
30
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFlushClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPFlushClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
80
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
80
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
80
            specific_clause_iterator<SpecificClause>(
448
80
                llvm::makeArrayRef(Clauses.end(), 0))};
449
80
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDepobjClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPDepobjClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
14
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
14
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
14
            specific_clause_iterator<SpecificClause>(
448
14
                llvm::makeArrayRef(Clauses.end(), 0))};
449
14
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDestroyClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPDestroyClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
11
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
11
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
11
            specific_clause_iterator<SpecificClause>(
448
11
                llvm::makeArrayRef(Clauses.end(), 0))};
449
11
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUpdateClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPUpdateClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
4
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
4
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
4
            specific_clause_iterator<SpecificClause>(
448
4
                llvm::makeArrayRef(Clauses.end(), 0))};
449
4
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPInclusiveClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPInclusiveClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
48
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
48
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
48
            specific_clause_iterator<SpecificClause>(
448
48
                llvm::makeArrayRef(Clauses.end(), 0))};
449
48
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDistScheduleClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPDistScheduleClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
4.49k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
4.49k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
4.49k
            specific_clause_iterator<SpecificClause>(
448
4.49k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
4.49k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSIMDClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPSIMDClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
48
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
48
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
48
            specific_clause_iterator<SpecificClause>(
448
48
                llvm::makeArrayRef(Clauses.end(), 0))};
449
48
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPSeqCstClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPSeqCstClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
4.77k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
4.77k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
4.77k
            specific_clause_iterator<SpecificClause>(
448
4.77k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
4.77k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPAcqRelClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPAcqRelClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
4.03k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
4.03k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
4.03k
            specific_clause_iterator<SpecificClause>(
448
4.03k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
4.03k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPAcquireClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPAcquireClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
3.32k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
3.32k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
3.32k
            specific_clause_iterator<SpecificClause>(
448
3.32k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
3.32k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPReleaseClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPReleaseClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
2.61k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
2.61k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
2.61k
            specific_clause_iterator<SpecificClause>(
448
2.61k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
2.61k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPRelaxedClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPRelaxedClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
1.90k
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
1.90k
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
1.90k
            specific_clause_iterator<SpecificClause>(
448
1.90k
                llvm::makeArrayRef(Clauses.end(), 0))};
449
1.90k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPInitClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPInitClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
7
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
7
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
7
            specific_clause_iterator<SpecificClause>(
448
7
                llvm::makeArrayRef(Clauses.end(), 0))};
449
7
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUseClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPUseClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
2
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
2
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
2
            specific_clause_iterator<SpecificClause>(
448
2
                llvm::makeArrayRef(Clauses.end(), 0))};
449
2
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUseDevicePtrClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPUseDevicePtrClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
72
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
72
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
72
            specific_clause_iterator<SpecificClause>(
448
72
                llvm::makeArrayRef(Clauses.end(), 0))};
449
72
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUseDeviceAddrClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPUseDeviceAddrClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
72
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
72
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
72
            specific_clause_iterator<SpecificClause>(
448
72
                llvm::makeArrayRef(Clauses.end(), 0))};
449
72
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNogroupClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPNogroupClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
226
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
226
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
226
            specific_clause_iterator<SpecificClause>(
448
226
                llvm::makeArrayRef(Clauses.end(), 0))};
449
226
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPGrainsizeClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPGrainsizeClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
226
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
226
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
226
            specific_clause_iterator<SpecificClause>(
448
226
                llvm::makeArrayRef(Clauses.end(), 0))};
449
226
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNumTasksClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPNumTasksClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
445
208
  getClausesOfKind(ArrayRef<OMPClause *> Clauses) {
446
208
    return {specific_clause_iterator<SpecificClause>(Clauses),
447
208
            specific_clause_iterator<SpecificClause>(
448
208
                llvm::makeArrayRef(Clauses.end(), 0))};
449
208
  }
450
451
  template <typename SpecificClause>
452
  llvm::iterator_range<specific_clause_iterator<SpecificClause>>
453
590k
  getClausesOfKind() const {
454
590k
    return getClausesOfKind<SpecificClause>(clauses());
455
590k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDependClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPDependClause>() const
Line
Count
Source
453
11.7k
  getClausesOfKind() const {
454
11.7k
    return getClausesOfKind<SpecificClause>(clauses());
455
11.7k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPOrderedClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPOrderedClause>() const
Line
Count
Source
453
22.3k
  getClausesOfKind() const {
454
22.3k
    return getClausesOfKind<SpecificClause>(clauses());
455
22.3k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPDetachClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPDetachClause>() const
Line
Count
Source
453
930
  getClausesOfKind() const {
454
930
    return getClausesOfKind<SpecificClause>(clauses());
455
930
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNowaitClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPNowaitClause>() const
Line
Count
Source
453
19.9k
  getClausesOfKind() const {
454
19.9k
    return getClausesOfKind<SpecificClause>(clauses());
455
19.9k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPAffinityClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPAffinityClause>() const
Line
Count
Source
453
942
  getClausesOfKind() const {
454
942
    return getClausesOfKind<SpecificClause>(clauses());
455
942
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUsesAllocatorsClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPUsesAllocatorsClause>() const
Line
Count
Source
453
20.4k
  getClausesOfKind() const {
454
20.4k
    return getClausesOfKind<SpecificClause>(clauses());
455
20.4k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNumTeamsClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPNumTeamsClause>() const
Line
Count
Source
453
9.62k
  getClausesOfKind() const {
454
9.62k
    return getClausesOfKind<SpecificClause>(clauses());
455
9.62k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPIfClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPIfClause>() const
Line
Count
Source
453
28.2k
  getClausesOfKind() const {
454
28.2k
    return getClausesOfKind<SpecificClause>(clauses());
455
28.2k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNumThreadsClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPNumThreadsClause>() const
Line
Count
Source
453
5.81k
  getClausesOfKind() const {
454
5.81k
    return getClausesOfKind<SpecificClause>(clauses());
455
5.81k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPThreadLimitClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPThreadLimitClause>() const
Line
Count
Source
453
8.75k
  getClausesOfKind() const {
454
8.75k
    return getClausesOfKind<SpecificClause>(clauses());
455
8.75k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFirstprivateClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPFirstprivateClause>() const
Line
Count
Source
453
64.8k
  getClausesOfKind() const {
454
64.8k
    return getClausesOfKind<SpecificClause>(clauses());
455
64.8k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPInReductionClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPInReductionClause>() const
Line
Count
Source
453
10.3k
  getClausesOfKind() const {
454
10.3k
    return getClausesOfKind<SpecificClause>(clauses());
455
10.3k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPIsDevicePtrClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPIsDevicePtrClause>() const
Line
Count
Source
453
9.26k
  getClausesOfKind() const {
454
9.26k
    return getClausesOfKind<SpecificClause>(clauses());
455
9.26k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPMapClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPMapClause>() const
Line
Count
Source
453
20.6k
  getClausesOfKind() const {
454
20.6k
    return getClausesOfKind<SpecificClause>(clauses());
455
20.6k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPNontemporalClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPNontemporalClause>() const
Line
Count
Source
453
13.6k
  getClausesOfKind() const {
454
13.6k
    return getClausesOfKind<SpecificClause>(clauses());
455
13.6k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPPrivateClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPPrivateClause>() const
Line
Count
Source
453
69.6k
  getClausesOfKind() const {
454
69.6k
    return getClausesOfKind<SpecificClause>(clauses());
455
69.6k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPLastprivateClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPLastprivateClause>() const
Line
Count
Source
453
75.5k
  getClausesOfKind() const {
454
75.5k
    return getClausesOfKind<SpecificClause>(clauses());
455
75.5k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPReductionClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPReductionClause>() const
Line
Count
Source
453
115k
  getClausesOfKind() const {
454
115k
    return getClausesOfKind<SpecificClause>(clauses());
455
115k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPLinearClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPLinearClause>() const
Line
Count
Source
453
66.9k
  getClausesOfKind() const {
454
66.9k
    return getClausesOfKind<SpecificClause>(clauses());
455
66.9k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPScheduleClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPScheduleClause>() const
Line
Count
Source
453
406
  getClausesOfKind() const {
454
406
    return getClausesOfKind<SpecificClause>(clauses());
455
406
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPAlignedClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPAlignedClause>() const
Line
Count
Source
453
13.3k
  getClausesOfKind() const {
454
13.3k
    return getClausesOfKind<SpecificClause>(clauses());
455
13.3k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPCopyinClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPCopyinClause>() const
Line
Count
Source
453
1.02k
  getClausesOfKind() const {
454
1.02k
    return getClausesOfKind<SpecificClause>(clauses());
455
1.02k
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPFullClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPFullClause>() const
Line
Count
Source
453
18
  getClausesOfKind() const {
454
18
    return getClausesOfKind<SpecificClause>(clauses());
455
18
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPCopyprivateClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPCopyprivateClause>() const
Line
Count
Source
453
61
  getClausesOfKind() const {
454
61
    return getClausesOfKind<SpecificClause>(clauses());
455
61
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPTaskReductionClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPTaskReductionClause>() const
Line
Count
Source
453
30
  getClausesOfKind() const {
454
30
    return getClausesOfKind<SpecificClause>(clauses());
455
30
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPInclusiveClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPInclusiveClause>() const
Line
Count
Source
453
48
  getClausesOfKind() const {
454
48
    return getClausesOfKind<SpecificClause>(clauses());
455
48
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUseDevicePtrClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPUseDevicePtrClause>() const
Line
Count
Source
453
72
  getClausesOfKind() const {
454
72
    return getClausesOfKind<SpecificClause>(clauses());
455
72
  }
llvm::iterator_range<clang::OMPExecutableDirective::specific_clause_iterator<clang::OMPUseDeviceAddrClause> > clang::OMPExecutableDirective::getClausesOfKind<clang::OMPUseDeviceAddrClause>() const
Line
Count
Source
453
72
  getClausesOfKind() const {
454
72
    return getClausesOfKind<SpecificClause>(clauses());
455
72
  }
456
457
  /// Gets a single clause of the specified kind associated with the
458
  /// current directive iff there is only one clause of this kind (and assertion
459
  /// is fired if there is more than one clause is associated with the
460
  /// directive). Returns nullptr if no clause of this kind is associated with
461
  /// the directive.
462
  template <typename SpecificClause>
463
465k
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
465k
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
465k
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
10.2k
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
10.2k
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
10.2k
    }
471
455k
    return nullptr;
472
465k
  }
clang::OMPBindClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPBindClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
365k
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
365k
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
365k
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
172
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
172
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
172
    }
471
364k
    return nullptr;
472
365k
  }
clang::OMPHintClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPHintClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
107
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
107
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
107
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
12
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
12
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
12
    }
471
95
    return nullptr;
472
107
  }
clang::OMPFullClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPFullClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
101
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
101
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
101
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
13
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
13
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
13
    }
471
88
    return nullptr;
472
101
  }
clang::OMPPartialClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPPartialClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
116
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
116
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
116
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
77
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
77
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
77
    }
471
39
    return nullptr;
472
116
  }
clang::OMPDeviceClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPDeviceClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
10.1k
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
10.1k
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
10.1k
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
431
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
431
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
431
    }
471
9.73k
    return nullptr;
472
10.1k
  }
clang::OMPDetachClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPDetachClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
930
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
930
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
930
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
2
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
2
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
2
    }
471
928
    return nullptr;
472
930
  }
clang::OMPNumTeamsClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPNumTeamsClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
6.73k
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
6.73k
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
6.73k
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
1.59k
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
1.59k
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
1.59k
    }
471
5.14k
    return nullptr;
472
6.73k
  }
clang::OMPNumThreadsClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPNumThreadsClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
6.56k
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
6.56k
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
6.56k
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
677
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
677
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
677
    }
471
5.88k
    return nullptr;
472
6.56k
  }
clang::OMPThreadLimitClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPThreadLimitClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
6.22k
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
6.22k
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
6.22k
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
907
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
907
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
907
    }
471
5.32k
    return nullptr;
472
6.22k
  }
clang::OMPSimdlenClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPSimdlenClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
8.63k
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
8.63k
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
8.63k
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
249
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
249
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
249
    }
471
8.38k
    return nullptr;
472
8.63k
  }
clang::OMPSafelenClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPSafelenClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
8.62k
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
8.62k
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
8.62k
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
226
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
226
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
226
    }
471
8.40k
    return nullptr;
472
8.62k
  }
clang::OMPNowaitClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPNowaitClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
1.42k
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
1.42k
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
1.42k
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
30
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
30
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
30
    }
471
1.39k
    return nullptr;
472
1.42k
  }
clang::OMPProcBindClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPProcBindClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
6.23k
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
6.23k
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
6.23k
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
87
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
87
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
87
    }
471
6.15k
    return nullptr;
472
6.23k
  }
clang::OMPIfClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPIfClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
616
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
616
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
616
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
140
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
140
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
140
    }
471
476
    return nullptr;
472
616
  }
clang::OMPOrderClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPOrderClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
11.2k
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
11.2k
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
11.2k
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
3
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
3
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
3
    }
471
11.2k
    return nullptr;
472
11.2k
  }
clang::OMPOrderedClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPOrderedClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
4.77k
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
4.77k
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
4.77k
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
85
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
85
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
85
    }
471
4.68k
    return nullptr;
472
4.77k
  }
clang::OMPScheduleClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPScheduleClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
4.80k
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
4.80k
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
4.80k
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
1.23k
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
1.23k
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
1.23k
    }
471
3.57k
    return nullptr;
472
4.80k
  }
clang::OMPFilterClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPFilterClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
40
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
40
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
40
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
30
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
30
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
30
    }
471
10
    return nullptr;
472
40
  }
clang::OMPFinalClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPFinalClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
468
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
468
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
468
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
36
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
36
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
36
    }
471
432
    return nullptr;
472
468
  }
clang::OMPPriorityClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPPriorityClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
468
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
468
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
468
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
25
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
25
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
25
    }
471
443
    return nullptr;
472
468
  }
clang::OMPUntiedClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPUntiedClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
242
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
242
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
242
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
28
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
28
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
28
    }
471
214
    return nullptr;
472
242
  }
clang::OMPFlushClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPFlushClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
80
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
80
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
80
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
16
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
16
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
16
    }
471
64
    return nullptr;
472
80
  }
clang::OMPDepobjClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPDepobjClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
14
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
14
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
14
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
14
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
14
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
14
    }
471
0
    return nullptr;
472
14
  }
clang::OMPDependClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPDependClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
20
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
20
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
20
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
8
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
8
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
8
    }
471
12
    return nullptr;
472
20
  }
clang::OMPDestroyClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPDestroyClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
11
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
11
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
11
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
5
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
5
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
5
    }
471
6
    return nullptr;
472
11
  }
clang::OMPUpdateClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPUpdateClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
4
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
4
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
4
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
4
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
4
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
4
    }
471
0
    return nullptr;
472
4
  }
clang::OMPDistScheduleClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPDistScheduleClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
4.49k
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
4.49k
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
4.49k
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
447
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
447
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
447
    }
471
4.05k
    return nullptr;
472
4.49k
  }
clang::OMPSIMDClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPSIMDClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
48
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
48
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
48
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
16
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
16
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
16
    }
471
32
    return nullptr;
472
48
  }
clang::OMPSeqCstClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPSeqCstClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
4.77k
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
4.77k
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
4.77k
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
744
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
744
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
744
    }
471
4.03k
    return nullptr;
472
4.77k
  }
clang::OMPAcqRelClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPAcqRelClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
4.03k
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
4.03k
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
4.03k
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
708
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
708
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
708
    }
471
3.32k
    return nullptr;
472
4.03k
  }
clang::OMPAcquireClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPAcquireClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
3.32k
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
3.32k
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
3.32k
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
710
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
710
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
710
    }
471
2.61k
    return nullptr;
472
3.32k
  }
clang::OMPReleaseClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPReleaseClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
2.61k
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
2.61k
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
2.61k
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
712
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
712
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
712
    }
471
1.90k
    return nullptr;
472
2.61k
  }
clang::OMPRelaxedClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPRelaxedClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
1.90k
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
1.90k
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
1.90k
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
726
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
726
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
726
    }
471
1.17k
    return nullptr;
472
1.90k
  }
clang::OMPInitClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPInitClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
7
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
7
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
7
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
4
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
4
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
4
    }
471
3
    return nullptr;
472
7
  }
clang::OMPUseClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPUseClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
2
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
2
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
2
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
2
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
2
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
2
    }
471
0
    return nullptr;
472
2
  }
clang::OMPNogroupClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPNogroupClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
226
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
226
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
226
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
18
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
18
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
18
    }
471
208
    return nullptr;
472
226
  }
clang::OMPGrainsizeClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPGrainsizeClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
226
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
226
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
226
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
18
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
18
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
18
    }
471
208
    return nullptr;
472
226
  }
clang::OMPNumTasksClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPNumTasksClause>(llvm::ArrayRef<clang::OMPClause*>)
Line
Count
Source
463
208
  static const SpecificClause *getSingleClause(ArrayRef<OMPClause *> Clauses) {
464
208
    auto ClausesOfKind = getClausesOfKind<SpecificClause>(Clauses);
465
466
208
    if (ClausesOfKind.begin() != ClausesOfKind.end()) {
467
36
      assert(std::next(ClausesOfKind.begin()) == ClausesOfKind.end() &&
468
36
             "There are at least 2 clauses of the specified kind");
469
0
      return *ClausesOfKind.begin();
470
36
    }
471
172
    return nullptr;
472
208
  }
473
474
  template <typename SpecificClause>
475
100k
  const SpecificClause *getSingleClause() const {
476
100k
    return getSingleClause<SpecificClause>(clauses());
477
100k
  }
clang::OMPHintClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPHintClause>() const
Line
Count
Source
475
107
  const SpecificClause *getSingleClause() const {
476
107
    return getSingleClause<SpecificClause>(clauses());
477
107
  }
clang::OMPDeviceClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPDeviceClause>() const
Line
Count
Source
475
10.1k
  const SpecificClause *getSingleClause() const {
476
10.1k
    return getSingleClause<SpecificClause>(clauses());
477
10.1k
  }
clang::OMPDetachClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPDetachClause>() const
Line
Count
Source
475
930
  const SpecificClause *getSingleClause() const {
476
930
    return getSingleClause<SpecificClause>(clauses());
477
930
  }
clang::OMPNumTeamsClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPNumTeamsClause>() const
Line
Count
Source
475
6.73k
  const SpecificClause *getSingleClause() const {
476
6.73k
    return getSingleClause<SpecificClause>(clauses());
477
6.73k
  }
clang::OMPNumThreadsClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPNumThreadsClause>() const
Line
Count
Source
475
6.56k
  const SpecificClause *getSingleClause() const {
476
6.56k
    return getSingleClause<SpecificClause>(clauses());
477
6.56k
  }
clang::OMPThreadLimitClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPThreadLimitClause>() const
Line
Count
Source
475
6.22k
  const SpecificClause *getSingleClause() const {
476
6.22k
    return getSingleClause<SpecificClause>(clauses());
477
6.22k
  }
clang::OMPSimdlenClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPSimdlenClause>() const
Line
Count
Source
475
8.63k
  const SpecificClause *getSingleClause() const {
476
8.63k
    return getSingleClause<SpecificClause>(clauses());
477
8.63k
  }
clang::OMPSafelenClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPSafelenClause>() const
Line
Count
Source
475
8.62k
  const SpecificClause *getSingleClause() const {
476
8.62k
    return getSingleClause<SpecificClause>(clauses());
477
8.62k
  }
clang::OMPNowaitClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPNowaitClause>() const
Line
Count
Source
475
1.42k
  const SpecificClause *getSingleClause() const {
476
1.42k
    return getSingleClause<SpecificClause>(clauses());
477
1.42k
  }
clang::OMPProcBindClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPProcBindClause>() const
Line
Count
Source
475
6.23k
  const SpecificClause *getSingleClause() const {
476
6.23k
    return getSingleClause<SpecificClause>(clauses());
477
6.23k
  }
clang::OMPIfClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPIfClause>() const
Line
Count
Source
475
616
  const SpecificClause *getSingleClause() const {
476
616
    return getSingleClause<SpecificClause>(clauses());
477
616
  }
clang::OMPOrderClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPOrderClause>() const
Line
Count
Source
475
11.2k
  const SpecificClause *getSingleClause() const {
476
11.2k
    return getSingleClause<SpecificClause>(clauses());
477
11.2k
  }
clang::OMPPartialClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPPartialClause>() const
Line
Count
Source
475
15
  const SpecificClause *getSingleClause() const {
476
15
    return getSingleClause<SpecificClause>(clauses());
477
15
  }
clang::OMPOrderedClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPOrderedClause>() const
Line
Count
Source
475
4.77k
  const SpecificClause *getSingleClause() const {
476
4.77k
    return getSingleClause<SpecificClause>(clauses());
477
4.77k
  }
clang::OMPScheduleClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPScheduleClause>() const
Line
Count
Source
475
4.80k
  const SpecificClause *getSingleClause() const {
476
4.80k
    return getSingleClause<SpecificClause>(clauses());
477
4.80k
  }
clang::OMPFilterClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPFilterClause>() const
Line
Count
Source
475
40
  const SpecificClause *getSingleClause() const {
476
40
    return getSingleClause<SpecificClause>(clauses());
477
40
  }
clang::OMPFinalClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPFinalClause>() const
Line
Count
Source
475
468
  const SpecificClause *getSingleClause() const {
476
468
    return getSingleClause<SpecificClause>(clauses());
477
468
  }
clang::OMPPriorityClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPPriorityClause>() const
Line
Count
Source
475
468
  const SpecificClause *getSingleClause() const {
476
468
    return getSingleClause<SpecificClause>(clauses());
477
468
  }
clang::OMPUntiedClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPUntiedClause>() const
Line
Count
Source
475
242
  const SpecificClause *getSingleClause() const {
476
242
    return getSingleClause<SpecificClause>(clauses());
477
242
  }
clang::OMPFlushClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPFlushClause>() const
Line
Count
Source
475
80
  const SpecificClause *getSingleClause() const {
476
80
    return getSingleClause<SpecificClause>(clauses());
477
80
  }
clang::OMPDepobjClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPDepobjClause>() const
Line
Count
Source
475
14
  const SpecificClause *getSingleClause() const {
476
14
    return getSingleClause<SpecificClause>(clauses());
477
14
  }
clang::OMPDependClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPDependClause>() const
Line
Count
Source
475
20
  const SpecificClause *getSingleClause() const {
476
20
    return getSingleClause<SpecificClause>(clauses());
477
20
  }
clang::OMPDestroyClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPDestroyClause>() const
Line
Count
Source
475
11
  const SpecificClause *getSingleClause() const {
476
11
    return getSingleClause<SpecificClause>(clauses());
477
11
  }
clang::OMPUpdateClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPUpdateClause>() const
Line
Count
Source
475
4
  const SpecificClause *getSingleClause() const {
476
4
    return getSingleClause<SpecificClause>(clauses());
477
4
  }
clang::OMPDistScheduleClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPDistScheduleClause>() const
Line
Count
Source
475
4.49k
  const SpecificClause *getSingleClause() const {
476
4.49k
    return getSingleClause<SpecificClause>(clauses());
477
4.49k
  }
clang::OMPSIMDClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPSIMDClause>() const
Line
Count
Source
475
48
  const SpecificClause *getSingleClause() const {
476
48
    return getSingleClause<SpecificClause>(clauses());
477
48
  }
clang::OMPSeqCstClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPSeqCstClause>() const
Line
Count
Source
475
4.77k
  const SpecificClause *getSingleClause() const {
476
4.77k
    return getSingleClause<SpecificClause>(clauses());
477
4.77k
  }
clang::OMPAcqRelClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPAcqRelClause>() const
Line
Count
Source
475
4.03k
  const SpecificClause *getSingleClause() const {
476
4.03k
    return getSingleClause<SpecificClause>(clauses());
477
4.03k
  }
clang::OMPAcquireClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPAcquireClause>() const
Line
Count
Source
475
3.32k
  const SpecificClause *getSingleClause() const {
476
3.32k
    return getSingleClause<SpecificClause>(clauses());
477
3.32k
  }
clang::OMPReleaseClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPReleaseClause>() const
Line
Count
Source
475
2.61k
  const SpecificClause *getSingleClause() const {
476
2.61k
    return getSingleClause<SpecificClause>(clauses());
477
2.61k
  }
clang::OMPRelaxedClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPRelaxedClause>() const
Line
Count
Source
475
1.90k
  const SpecificClause *getSingleClause() const {
476
1.90k
    return getSingleClause<SpecificClause>(clauses());
477
1.90k
  }
clang::OMPInitClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPInitClause>() const
Line
Count
Source
475
7
  const SpecificClause *getSingleClause() const {
476
7
    return getSingleClause<SpecificClause>(clauses());
477
7
  }
clang::OMPUseClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPUseClause>() const
Line
Count
Source
475
2
  const SpecificClause *getSingleClause() const {
476
2
    return getSingleClause<SpecificClause>(clauses());
477
2
  }
clang::OMPNogroupClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPNogroupClause>() const
Line
Count
Source
475
226
  const SpecificClause *getSingleClause() const {
476
226
    return getSingleClause<SpecificClause>(clauses());
477
226
  }
clang::OMPGrainsizeClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPGrainsizeClause>() const
Line
Count
Source
475
226
  const SpecificClause *getSingleClause() const {
476
226
    return getSingleClause<SpecificClause>(clauses());
477
226
  }
clang::OMPNumTasksClause const* clang::OMPExecutableDirective::getSingleClause<clang::OMPNumTasksClause>() const
Line
Count
Source
475
208
  const SpecificClause *getSingleClause() const {
476
208
    return getSingleClause<SpecificClause>(clauses());
477
208
  }
478
479
  /// Returns true if the current directive has one or more clauses of a
480
  /// specific kind.
481
  template <typename SpecificClause>
482
81.7k
  bool hasClausesOfKind() const {
483
81.7k
    auto Clauses = getClausesOfKind<SpecificClause>();
484
81.7k
    return Clauses.begin() != Clauses.end();
485
81.7k
  }
bool clang::OMPExecutableDirective::hasClausesOfKind<clang::OMPDependClause>() const
Line
Count
Source
482
9.84k
  bool hasClausesOfKind() const {
483
9.84k
    auto Clauses = getClausesOfKind<SpecificClause>();
484
9.84k
    return Clauses.begin() != Clauses.end();
485
9.84k
  }
bool clang::OMPExecutableDirective::hasClausesOfKind<clang::OMPDetachClause>() const
Line
Count
Source
482
930
  bool hasClausesOfKind() const {
483
930
    auto Clauses = getClausesOfKind<SpecificClause>();
484
930
    return Clauses.begin() != Clauses.end();
485
930
  }
bool clang::OMPExecutableDirective::hasClausesOfKind<clang::OMPNowaitClause>() const
Line
Count
Source
482
19.9k
  bool hasClausesOfKind() const {
483
19.9k
    auto Clauses = getClausesOfKind<SpecificClause>();
484
19.9k
    return Clauses.begin() != Clauses.end();
485
19.9k
  }
bool clang::OMPExecutableDirective::hasClausesOfKind<clang::OMPAffinityClause>() const
Line
Count
Source
482
930
  bool hasClausesOfKind() const {
483
930
    auto Clauses = getClausesOfKind<SpecificClause>();
484
930
    return Clauses.begin() != Clauses.end();
485
930
  }
bool clang::OMPExecutableDirective::hasClausesOfKind<clang::OMPNumTeamsClause>() const
Line
Count
Source
482
9.62k
  bool hasClausesOfKind() const {
483
9.62k
    auto Clauses = getClausesOfKind<SpecificClause>();
484
9.62k
    return Clauses.begin() != Clauses.end();
485
9.62k
  }
bool clang::OMPExecutableDirective::hasClausesOfKind<clang::OMPIfClause>() const
Line
Count
Source
482
2.85k
  bool hasClausesOfKind() const {
483
2.85k
    auto Clauses = getClausesOfKind<SpecificClause>();
484
2.85k
    return Clauses.begin() != Clauses.end();
485
2.85k
  }
bool clang::OMPExecutableDirective::hasClausesOfKind<clang::OMPNumThreadsClause>() const
Line
Count
Source
482
5.81k
  bool hasClausesOfKind() const {
483
5.81k
    auto Clauses = getClausesOfKind<SpecificClause>();
484
5.81k
    return Clauses.begin() != Clauses.end();
485
5.81k
  }
bool clang::OMPExecutableDirective::hasClausesOfKind<clang::OMPThreadLimitClause>() const
Line
Count
Source
482
8.75k
  bool hasClausesOfKind() const {
483
8.75k
    auto Clauses = getClausesOfKind<SpecificClause>();
484
8.75k
    return Clauses.begin() != Clauses.end();
485
8.75k
  }
bool clang::OMPExecutableDirective::hasClausesOfKind<clang::OMPInReductionClause>() const
Line
Count
Source
482
8.98k
  bool hasClausesOfKind() const {
483
8.98k
    auto Clauses = getClausesOfKind<SpecificClause>();
484
8.98k
    return Clauses.begin() != Clauses.end();
485
8.98k
  }
bool clang::OMPExecutableDirective::hasClausesOfKind<clang::OMPNontemporalClause>() const
Line
Count
Source
482
13.4k
  bool hasClausesOfKind() const {
483
13.4k
    auto Clauses = getClausesOfKind<SpecificClause>();
484
13.4k
    return Clauses.begin() != Clauses.end();
485
13.4k
  }
bool clang::OMPExecutableDirective::hasClausesOfKind<clang::OMPOrderedClause>() const
Line
Count
Source
482
237
  bool hasClausesOfKind() const {
483
237
    auto Clauses = getClausesOfKind<SpecificClause>();
484
237
    return Clauses.begin() != Clauses.end();
485
237
  }
bool clang::OMPExecutableDirective::hasClausesOfKind<clang::OMPScheduleClause>() const
Line
Count
Source
482
234
  bool hasClausesOfKind() const {
483
234
    auto Clauses = getClausesOfKind<SpecificClause>();
484
234
    return Clauses.begin() != Clauses.end();
485
234
  }
bool clang::OMPExecutableDirective::hasClausesOfKind<clang::OMPFullClause>() const
Line
Count
Source
482
18
  bool hasClausesOfKind() const {
483
18
    auto Clauses = getClausesOfKind<SpecificClause>();
484
18
    return Clauses.begin() != Clauses.end();
485
18
  }
bool clang::OMPExecutableDirective::hasClausesOfKind<clang::OMPInclusiveClause>() const
Line
Count
Source
482
48
  bool hasClausesOfKind() const {
483
48
    auto Clauses = getClausesOfKind<SpecificClause>();
484
48
    return Clauses.begin() != Clauses.end();
485
48
  }
486
487
  /// Returns starting location of directive kind.
488
425k
  SourceLocation getBeginLoc() const { return StartLoc; }
489
  /// Returns ending location of directive.
490
197k
  SourceLocation getEndLoc() const { return EndLoc; }
491
492
  /// Set starting location of directive kind.
493
  ///
494
  /// \param Loc New starting location of directive.
495
  ///
496
22.4k
  void setLocStart(SourceLocation Loc) { StartLoc = Loc; }
497
  /// Set ending location of directive.
498
  ///
499
  /// \param Loc New ending location of directive.
500
  ///
501
22.4k
  void setLocEnd(SourceLocation Loc) { EndLoc = Loc; }
502
503
  /// Get number of clauses.
504
22
  unsigned getNumClauses() const {
505
22
    if (!Data)
506
0
      return 0;
507
22
    return Data->getNumClauses();
508
22
  }
509
510
  /// Returns specified clause.
511
  ///
512
  /// \param I Number of clause.
513
  ///
514
0
  OMPClause *getClause(unsigned I) const { return clauses()[I]; }
515
516
  /// Returns true if directive has associated statement.
517
932k
  bool hasAssociatedStmt() const { return Data && 
Data->hasAssociatedStmt()930k
; }
518
519
  /// Returns statement associated with the directive.
520
41.9k
  const Stmt *getAssociatedStmt() const {
521
41.9k
    return const_cast<OMPExecutableDirective *>(this)->getAssociatedStmt();
522
41.9k
  }
523
239k
  Stmt *getAssociatedStmt() {
524
239k
    assert(hasAssociatedStmt() &&
525
239k
           "Expected directive with the associated statement.");
526
0
    return Data->getAssociatedStmt();
527
239k
  }
528
529
  /// Returns the captured statement associated with the
530
  /// component region within the (combined) directive.
531
  ///
532
  /// \param RegionKind Component region kind.
533
84.5k
  const CapturedStmt *getCapturedStmt(OpenMPDirectiveKind RegionKind) const {
534
84.5k
    assert(hasAssociatedStmt() &&
535
84.5k
           "Expected directive with the associated statement.");
536
0
    SmallVector<OpenMPDirectiveKind, 4> CaptureRegions;
537
84.5k
    getOpenMPCaptureRegions(CaptureRegions, getDirectiveKind());
538
84.5k
    return Data->getCapturedStmt(RegionKind, CaptureRegions);
539
84.5k
  }
540
541
  /// Get innermost captured statement for the construct.
542
177k
  CapturedStmt *getInnermostCapturedStmt() {
543
177k
    assert(hasAssociatedStmt() &&
544
177k
           "Expected directive with the associated statement.");
545
0
    SmallVector<OpenMPDirectiveKind, 4> CaptureRegions;
546
177k
    getOpenMPCaptureRegions(CaptureRegions, getDirectiveKind());
547
177k
    return Data->getInnermostCapturedStmt(CaptureRegions);
548
177k
  }
549
550
79.8k
  const CapturedStmt *getInnermostCapturedStmt() const {
551
79.8k
    return const_cast<OMPExecutableDirective *>(this)
552
79.8k
        ->getInnermostCapturedStmt();
553
79.8k
  }
554
555
6.85M
  OpenMPDirectiveKind getDirectiveKind() const { return Kind; }
556
557
2.54M
  static bool classof(const Stmt *S) {
558
2.54M
    return S->getStmtClass() >= firstOMPExecutableDirectiveConstant &&
559
2.54M
           
S->getStmtClass() <= lastOMPExecutableDirectiveConstant2.31M
;
560
2.54M
  }
561
562
48.1k
  child_range children() {
563
48.1k
    if (!Data)
564
126
      return child_range(child_iterator(), child_iterator());
565
47.9k
    return Data->getAssociatedStmtAsRange();
566
48.1k
  }
567
568
0
  const_child_range children() const {
569
0
    return const_cast<OMPExecutableDirective *>(this)->children();
570
0
  }
571
572
1.90M
  ArrayRef<OMPClause *> clauses() const {
573
1.90M
    if (!Data)
574
4.91k
      return llvm::None;
575
1.89M
    return Data->getClauses();
576
1.90M
  }
577
578
  /// Returns whether or not this is a Standalone directive.
579
  ///
580
  /// Stand-alone directives are executable directives
581
  /// that have no associated user code.
582
  bool isStandaloneDirective() const;
583
584
  /// Returns the AST node representing OpenMP structured-block of this
585
  /// OpenMP executable directive,
586
  /// Prerequisite: Executable Directive must not be Standalone directive.
587
84
  const Stmt *getStructuredBlock() const {
588
84
    return const_cast<OMPExecutableDirective *>(this)->getStructuredBlock();
589
84
  }
590
  Stmt *getStructuredBlock();
591
592
242
  const Stmt *getRawStmt() const {
593
242
    return const_cast<OMPExecutableDirective *>(this)->getRawStmt();
594
242
  }
595
156k
  Stmt *getRawStmt() {
596
156k
    assert(hasAssociatedStmt() &&
597
156k
           "Expected directive with the associated statement.");
598
0
    return Data->getRawStmt();
599
156k
  }
600
};
601
602
/// This represents '#pragma omp parallel' directive.
603
///
604
/// \code
605
/// #pragma omp parallel private(a,b) reduction(+: c,d)
606
/// \endcode
607
/// In this example directive '#pragma omp parallel' has clauses 'private'
608
/// with the variables 'a' and 'b' and 'reduction' with operator '+' and
609
/// variables 'c' and 'd'.
610
///
611
class OMPParallelDirective : public OMPExecutableDirective {
612
  friend class ASTStmtReader;
613
  friend class OMPExecutableDirective;
614
  /// true if the construct has inner cancel directive.
615
  bool HasCancel = false;
616
617
  /// Build directive with the given start and end location.
618
  ///
619
  /// \param StartLoc Starting location of the directive (directive keyword).
620
  /// \param EndLoc Ending Location of the directive.
621
  ///
622
  OMPParallelDirective(SourceLocation StartLoc, SourceLocation EndLoc)
623
      : OMPExecutableDirective(OMPParallelDirectiveClass,
624
27.9k
                               llvm::omp::OMPD_parallel, StartLoc, EndLoc) {}
625
626
  /// Build an empty directive.
627
  ///
628
  explicit OMPParallelDirective()
629
      : OMPExecutableDirective(OMPParallelDirectiveClass,
630
                               llvm::omp::OMPD_parallel, SourceLocation(),
631
790
                               SourceLocation()) {}
632
633
  /// Sets special task reduction descriptor.
634
27.9k
  void setTaskReductionRefExpr(Expr *E) { Data->getChildren()[0] = E; }
635
636
  /// Set cancel state.
637
28.7k
  void setHasCancel(bool Has) { HasCancel = Has; }
638
639
public:
640
  /// Creates directive with a list of \a Clauses.
641
  ///
642
  /// \param C AST context.
643
  /// \param StartLoc Starting location of the directive kind.
644
  /// \param EndLoc Ending Location of the directive.
645
  /// \param Clauses List of clauses.
646
  /// \param AssociatedStmt Statement associated with the directive.
647
  /// \param TaskRedRef Task reduction special reference expression to handle
648
  /// taskgroup descriptor.
649
  /// \param HasCancel true if this directive has inner cancel directive.
650
  ///
651
  static OMPParallelDirective *
652
  Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc,
653
         ArrayRef<OMPClause *> Clauses, Stmt *AssociatedStmt, Expr *TaskRedRef,
654
         bool HasCancel);
655
656
  /// Creates an empty directive with the place for \a N clauses.
657
  ///
658
  /// \param C AST context.
659
  /// \param NumClauses Number of clauses.
660
  ///
661
  static OMPParallelDirective *CreateEmpty(const ASTContext &C,
662
                                           unsigned NumClauses, EmptyShell);
663
664
  /// Returns special task reduction reference expression.
665
2
  Expr *getTaskReductionRefExpr() {
666
2
    return cast_or_null<Expr>(Data->getChildren()[0]);
667
2
  }
668
2
  const Expr *getTaskReductionRefExpr() const {
669
2
    return const_cast<OMPParallelDirective *>(this)->getTaskReductionRefExpr();
670
2
  }
671
672
  /// Return true if current directive has inner cancel directive.
673
1.82k
  bool hasCancel() const { return HasCancel; }
674
675
23.9k
  static bool classof(const Stmt *T) {
676
23.9k
    return T->getStmtClass() == OMPParallelDirectiveClass;
677
23.9k
  }
678
};
679
680
/// The base class for all loop-based directives, including loop transformation
681
/// directives.
682
class OMPLoopBasedDirective : public OMPExecutableDirective {
683
  friend class ASTStmtReader;
684
685
protected:
686
  /// Number of collapsed loops as specified by 'collapse' clause.
687
  unsigned NumAssociatedLoops = 0;
688
689
  /// Build instance of loop directive of class \a Kind.
690
  ///
691
  /// \param SC Statement class.
692
  /// \param Kind Kind of OpenMP directive.
693
  /// \param StartLoc Starting location of the directive (directive keyword).
694
  /// \param EndLoc Ending location of the directive.
695
  /// \param NumAssociatedLoops Number of loops associated with the construct.
696
  ///
697
  OMPLoopBasedDirective(StmtClass SC, OpenMPDirectiveKind Kind,
698
                        SourceLocation StartLoc, SourceLocation EndLoc,
699
                        unsigned NumAssociatedLoops)
700
      : OMPExecutableDirective(SC, Kind, StartLoc, EndLoc),
701
162k
        NumAssociatedLoops(NumAssociatedLoops) {}
702
703
public:
704
  /// The expressions built to support OpenMP loops in combined/composite
705
  /// pragmas (e.g. pragma omp distribute parallel for)
706
  struct DistCombinedHelperExprs {
707
    /// DistributeLowerBound - used when composing 'omp distribute' with
708
    /// 'omp for' in a same construct.
709
    Expr *LB;
710
    /// DistributeUpperBound - used when composing 'omp distribute' with
711
    /// 'omp for' in a same construct.
712
    Expr *UB;
713
    /// DistributeEnsureUpperBound - used when composing 'omp distribute'
714
    ///  with 'omp for' in a same construct, EUB depends on DistUB
715
    Expr *EUB;
716
    /// Distribute loop iteration variable init used when composing 'omp
717
    /// distribute'
718
    ///  with 'omp for' in a same construct
719
    Expr *Init;
720
    /// Distribute Loop condition used when composing 'omp distribute'
721
    ///  with 'omp for' in a same construct
722
    Expr *Cond;
723
    /// Update of LowerBound for statically scheduled omp loops for
724
    /// outer loop in combined constructs (e.g. 'distribute parallel for')
725
    Expr *NLB;
726
    /// Update of UpperBound for statically scheduled omp loops for
727
    /// outer loop in combined constructs (e.g. 'distribute parallel for')
728
    Expr *NUB;
729
    /// Distribute Loop condition used when composing 'omp distribute'
730
    ///  with 'omp for' in a same construct when schedule is chunked.
731
    Expr *DistCond;
732
    /// 'omp parallel for' loop condition used when composed with
733
    /// 'omp distribute' in the same construct and when schedule is
734
    /// chunked and the chunk size is 1.
735
    Expr *ParForInDistCond;
736
  };
737
738
  /// The expressions built for the OpenMP loop CodeGen for the
739
  /// whole collapsed loop nest.
740
  struct HelperExprs {
741
    /// Loop iteration variable.
742
    Expr *IterationVarRef;
743
    /// Loop last iteration number.
744
    Expr *LastIteration;
745
    /// Loop number of iterations.
746
    Expr *NumIterations;
747
    /// Calculation of last iteration.
748
    Expr *CalcLastIteration;
749
    /// Loop pre-condition.
750
    Expr *PreCond;
751
    /// Loop condition.
752
    Expr *Cond;
753
    /// Loop iteration variable init.
754
    Expr *Init;
755
    /// Loop increment.
756
    Expr *Inc;
757
    /// IsLastIteration - local flag variable passed to runtime.
758
    Expr *IL;
759
    /// LowerBound - local variable passed to runtime.
760
    Expr *LB;
761
    /// UpperBound - local variable passed to runtime.
762
    Expr *UB;
763
    /// Stride - local variable passed to runtime.
764
    Expr *ST;
765
    /// EnsureUpperBound -- expression UB = min(UB, NumIterations).
766
    Expr *EUB;
767
    /// Update of LowerBound for statically scheduled 'omp for' loops.
768
    Expr *NLB;
769
    /// Update of UpperBound for statically scheduled 'omp for' loops.
770
    Expr *NUB;
771
    /// PreviousLowerBound - local variable passed to runtime in the
772
    /// enclosing schedule or null if that does not apply.
773
    Expr *PrevLB;
774
    /// PreviousUpperBound - local variable passed to runtime in the
775
    /// enclosing schedule or null if that does not apply.
776
    Expr *PrevUB;
777
    /// DistInc - increment expression for distribute loop when found
778
    /// combined with a further loop level (e.g. in 'distribute parallel for')
779
    /// expression IV = IV + ST
780
    Expr *DistInc;
781
    /// PrevEUB - expression similar to EUB but to be used when loop
782
    /// scheduling uses PrevLB and PrevUB (e.g.  in 'distribute parallel for'
783
    /// when ensuring that the UB is either the calculated UB by the runtime or
784
    /// the end of the assigned distribute chunk)
785
    /// expression UB = min (UB, PrevUB)
786
    Expr *PrevEUB;
787
    /// Counters Loop counters.
788
    SmallVector<Expr *, 4> Counters;
789
    /// PrivateCounters Loop counters.
790
    SmallVector<Expr *, 4> PrivateCounters;
791
    /// Expressions for loop counters inits for CodeGen.
792
    SmallVector<Expr *, 4> Inits;
793
    /// Expressions for loop counters update for CodeGen.
794
    SmallVector<Expr *, 4> Updates;
795
    /// Final loop counter values for GodeGen.
796
    SmallVector<Expr *, 4> Finals;
797
    /// List of counters required for the generation of the non-rectangular
798
    /// loops.
799
    SmallVector<Expr *, 4> DependentCounters;
800
    /// List of initializers required for the generation of the non-rectangular
801
    /// loops.
802
    SmallVector<Expr *, 4> DependentInits;
803
    /// List of final conditions required for the generation of the
804
    /// non-rectangular loops.
805
    SmallVector<Expr *, 4> FinalsConditions;
806
    /// Init statement for all captured expressions.
807
    Stmt *PreInits;
808
809
    /// Expressions used when combining OpenMP loop pragmas
810
    DistCombinedHelperExprs DistCombinedFields;
811
812
    /// Check if all the expressions are built (does not check the
813
    /// worksharing ones).
814
109k
    bool builtAll() {
815
109k
      return IterationVarRef != nullptr && LastIteration != nullptr &&
816
109k
             NumIterations != nullptr && PreCond != nullptr &&
817
109k
             Cond != nullptr && Init != nullptr && Inc != nullptr;
818
109k
    }
819
820
    /// Initialize all the fields to null.
821
    /// \param Size Number of elements in the
822
    /// counters/finals/updates/dependent_counters/dependent_inits/finals_conditions
823
    /// arrays.
824
156k
    void clear(unsigned Size) {
825
156k
      IterationVarRef = nullptr;
826
156k
      LastIteration = nullptr;
827
156k
      CalcLastIteration = nullptr;
828
156k
      PreCond = nullptr;
829
156k
      Cond = nullptr;
830
156k
      Init = nullptr;
831
156k
      Inc = nullptr;
832
156k
      IL = nullptr;
833
156k
      LB = nullptr;
834
156k
      UB = nullptr;
835
156k
      ST = nullptr;
836
156k
      EUB = nullptr;
837
156k
      NLB = nullptr;
838
156k
      NUB = nullptr;
839
156k
      NumIterations = nullptr;
840
156k
      PrevLB = nullptr;
841
156k
      PrevUB = nullptr;
842
156k
      DistInc = nullptr;
843
156k
      PrevEUB = nullptr;
844
156k
      Counters.resize(Size);
845
156k
      PrivateCounters.resize(Size);
846
156k
      Inits.resize(Size);
847
156k
      Updates.resize(Size);
848
156k
      Finals.resize(Size);
849
156k
      DependentCounters.resize(Size);
850
156k
      DependentInits.resize(Size);
851
156k
      FinalsConditions.resize(Size);
852
314k
      for (unsigned I = 0; I < Size; 
++I158k
) {
853
158k
        Counters[I] = nullptr;
854
158k
        PrivateCounters[I] = nullptr;
855
158k
        Inits[I] = nullptr;
856
158k
        Updates[I] = nullptr;
857
158k
        Finals[I] = nullptr;
858
158k
        DependentCounters[I] = nullptr;
859
158k
        DependentInits[I] = nullptr;
860
158k
        FinalsConditions[I] = nullptr;
861
158k
      }
862
156k
      PreInits = nullptr;
863
156k
      DistCombinedFields.LB = nullptr;
864
156k
      DistCombinedFields.UB = nullptr;
865
156k
      DistCombinedFields.EUB = nullptr;
866
156k
      DistCombinedFields.Init = nullptr;
867
156k
      DistCombinedFields.Cond = nullptr;
868
156k
      DistCombinedFields.NLB = nullptr;
869
156k
      DistCombinedFields.NUB = nullptr;
870
156k
      DistCombinedFields.DistCond = nullptr;
871
156k
      DistCombinedFields.ParForInDistCond = nullptr;
872
156k
    }
873
  };
874
875
  /// Get number of collapsed loops.
876
3.82M
  unsigned getLoopsNumber() const { return NumAssociatedLoops; }
877
878