Coverage Report

Created: 2019-07-24 05:18

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/tools/clang/lib/Sema/TreeTransform.h
Line
Count
Source (jump to first uncovered line)
1
//===------- TreeTransform.h - Semantic Tree Transformation -----*- 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
//  This file implements a semantic tree transformation that takes a given
9
//  AST and rebuilds it, possibly transforming some nodes in the process.
10
//
11
//===----------------------------------------------------------------------===//
12
13
#ifndef LLVM_CLANG_LIB_SEMA_TREETRANSFORM_H
14
#define LLVM_CLANG_LIB_SEMA_TREETRANSFORM_H
15
16
#include "CoroutineStmtBuilder.h"
17
#include "TypeLocBuilder.h"
18
#include "clang/AST/Decl.h"
19
#include "clang/AST/DeclObjC.h"
20
#include "clang/AST/DeclTemplate.h"
21
#include "clang/AST/Expr.h"
22
#include "clang/AST/ExprCXX.h"
23
#include "clang/AST/ExprObjC.h"
24
#include "clang/AST/ExprOpenMP.h"
25
#include "clang/AST/Stmt.h"
26
#include "clang/AST/StmtCXX.h"
27
#include "clang/AST/StmtObjC.h"
28
#include "clang/AST/StmtOpenMP.h"
29
#include "clang/Sema/Designator.h"
30
#include "clang/Sema/Lookup.h"
31
#include "clang/Sema/Ownership.h"
32
#include "clang/Sema/ParsedTemplate.h"
33
#include "clang/Sema/ScopeInfo.h"
34
#include "clang/Sema/SemaDiagnostic.h"
35
#include "clang/Sema/SemaInternal.h"
36
#include "llvm/ADT/ArrayRef.h"
37
#include "llvm/Support/ErrorHandling.h"
38
#include <algorithm>
39
40
namespace clang {
41
using namespace sema;
42
43
/// A semantic tree transformation that allows one to transform one
44
/// abstract syntax tree into another.
45
///
46
/// A new tree transformation is defined by creating a new subclass \c X of
47
/// \c TreeTransform<X> and then overriding certain operations to provide
48
/// behavior specific to that transformation. For example, template
49
/// instantiation is implemented as a tree transformation where the
50
/// transformation of TemplateTypeParmType nodes involves substituting the
51
/// template arguments for their corresponding template parameters; a similar
52
/// transformation is performed for non-type template parameters and
53
/// template template parameters.
54
///
55
/// This tree-transformation template uses static polymorphism to allow
56
/// subclasses to customize any of its operations. Thus, a subclass can
57
/// override any of the transformation or rebuild operators by providing an
58
/// operation with the same signature as the default implementation. The
59
/// overriding function should not be virtual.
60
///
61
/// Semantic tree transformations are split into two stages, either of which
62
/// can be replaced by a subclass. The "transform" step transforms an AST node
63
/// or the parts of an AST node using the various transformation functions,
64
/// then passes the pieces on to the "rebuild" step, which constructs a new AST
65
/// node of the appropriate kind from the pieces. The default transformation
66
/// routines recursively transform the operands to composite AST nodes (e.g.,
67
/// the pointee type of a PointerType node) and, if any of those operand nodes
68
/// were changed by the transformation, invokes the rebuild operation to create
69
/// a new AST node.
70
///
71
/// Subclasses can customize the transformation at various levels. The
72
/// most coarse-grained transformations involve replacing TransformType(),
73
/// TransformExpr(), TransformDecl(), TransformNestedNameSpecifierLoc(),
74
/// TransformTemplateName(), or TransformTemplateArgument() with entirely
75
/// new implementations.
76
///
77
/// For more fine-grained transformations, subclasses can replace any of the
78
/// \c TransformXXX functions (where XXX is the name of an AST node, e.g.,
79
/// PointerType, StmtExpr) to alter the transformation. As mentioned previously,
80
/// replacing TransformTemplateTypeParmType() allows template instantiation
81
/// to substitute template arguments for their corresponding template
82
/// parameters. Additionally, subclasses can override the \c RebuildXXX
83
/// functions to control how AST nodes are rebuilt when their operands change.
84
/// By default, \c TreeTransform will invoke semantic analysis to rebuild
85
/// AST nodes. However, certain other tree transformations (e.g, cloning) may
86
/// be able to use more efficient rebuild steps.
87
///
88
/// There are a handful of other functions that can be overridden, allowing one
89
/// to avoid traversing nodes that don't need any transformation
90
/// (\c AlreadyTransformed()), force rebuilding AST nodes even when their
91
/// operands have not changed (\c AlwaysRebuild()), and customize the
92
/// default locations and entity names used for type-checking
93
/// (\c getBaseLocation(), \c getBaseEntity()).
94
template<typename Derived>
95
class TreeTransform {
96
  /// Private RAII object that helps us forget and then re-remember
97
  /// the template argument corresponding to a partially-substituted parameter
98
  /// pack.
99
  class ForgetPartiallySubstitutedPackRAII {
100
    Derived &Self;
101
    TemplateArgument Old;
102
103
  public:
104
492
    ForgetPartiallySubstitutedPackRAII(Derived &Self) : Self(Self) {
105
492
      Old = Self.ForgetPartiallySubstitutedPack();
106
492
    }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::ForgetPartiallySubstitutedPackRAII::ForgetPartiallySubstitutedPackRAII((anonymous namespace)::TransformToPE&)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::ForgetPartiallySubstitutedPackRAII::ForgetPartiallySubstitutedPackRAII((anonymous namespace)::TransformTypos&)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::ForgetPartiallySubstitutedPackRAII::ForgetPartiallySubstitutedPackRAII((anonymous namespace)::TransformExprToCaptures&)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::ForgetPartiallySubstitutedPackRAII::ForgetPartiallySubstitutedPackRAII((anonymous namespace)::ExtractTypeForDeductionGuide&)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::ForgetPartiallySubstitutedPackRAII::ForgetPartiallySubstitutedPackRAII((anonymous namespace)::CurrentInstantiationRebuilder&)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::ForgetPartiallySubstitutedPackRAII::ForgetPartiallySubstitutedPackRAII((anonymous namespace)::SubstituteDeducedTypeTransform&)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::ForgetPartiallySubstitutedPackRAII::ForgetPartiallySubstitutedPackRAII((anonymous namespace)::TemplateInstantiator&)
Line
Count
Source
104
492
    ForgetPartiallySubstitutedPackRAII(Derived &Self) : Self(Self) {
105
492
      Old = Self.ForgetPartiallySubstitutedPack();
106
492
    }
107
108
492
    ~ForgetPartiallySubstitutedPackRAII() {
109
492
      Self.RememberPartiallySubstitutedPack(Old);
110
492
    }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::ForgetPartiallySubstitutedPackRAII::~ForgetPartiallySubstitutedPackRAII()
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::ForgetPartiallySubstitutedPackRAII::~ForgetPartiallySubstitutedPackRAII()
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::ForgetPartiallySubstitutedPackRAII::~ForgetPartiallySubstitutedPackRAII()
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::ForgetPartiallySubstitutedPackRAII::~ForgetPartiallySubstitutedPackRAII()
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::ForgetPartiallySubstitutedPackRAII::~ForgetPartiallySubstitutedPackRAII()
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::ForgetPartiallySubstitutedPackRAII::~ForgetPartiallySubstitutedPackRAII()
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::ForgetPartiallySubstitutedPackRAII::~ForgetPartiallySubstitutedPackRAII()
Line
Count
Source
108
492
    ~ForgetPartiallySubstitutedPackRAII() {
109
492
      Self.RememberPartiallySubstitutedPack(Old);
110
492
    }
111
  };
112
113
protected:
114
  Sema &SemaRef;
115
116
  /// The set of local declarations that have been transformed, for
117
  /// cases where we are forced to build new declarations within the transformer
118
  /// rather than in the subclass (e.g., lambda closure types).
119
  llvm::DenseMap<Decl *, Decl *> TransformedLocalDecls;
120
121
public:
122
  /// Initializes a new tree transformer.
123
13.2M
  TreeTransform(Sema &SemaRef) : SemaRef(SemaRef) { }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::TreeTransform(clang::Sema&)
Line
Count
Source
123
1.21k
  TreeTransform(Sema &SemaRef) : SemaRef(SemaRef) { }
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::TreeTransform(clang::Sema&)
Line
Count
Source
123
1.47k
  TreeTransform(Sema &SemaRef) : SemaRef(SemaRef) { }
SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::TreeTransform(clang::Sema&)
Line
Count
Source
123
24
  TreeTransform(Sema &SemaRef) : SemaRef(SemaRef) { }
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::TreeTransform(clang::Sema&)
Line
Count
Source
123
117
  TreeTransform(Sema &SemaRef) : SemaRef(SemaRef) { }
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TreeTransform(clang::Sema&)
Line
Count
Source
123
383k
  TreeTransform(Sema &SemaRef) : SemaRef(SemaRef) { }
SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::TreeTransform(clang::Sema&)
Line
Count
Source
123
52.1k
  TreeTransform(Sema &SemaRef) : SemaRef(SemaRef) { }
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TreeTransform(clang::Sema&)
Line
Count
Source
123
12.8M
  TreeTransform(Sema &SemaRef) : SemaRef(SemaRef) { }
124
125
  /// Retrieves a reference to the derived class.
126
229M
  Derived &getDerived() { return static_cast<Derived&>(*this); }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::getDerived()
Line
Count
Source
126
12.7k
  Derived &getDerived() { return static_cast<Derived&>(*this); }
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::getDerived()
Line
Count
Source
126
6.09k
  Derived &getDerived() { return static_cast<Derived&>(*this); }
SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::getDerived()
Line
Count
Source
126
632
  Derived &getDerived() { return static_cast<Derived&>(*this); }
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::getDerived()
Line
Count
Source
126
1.88k
  Derived &getDerived() { return static_cast<Derived&>(*this); }
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::getDerived()
Line
Count
Source
126
12.2M
  Derived &getDerived() { return static_cast<Derived&>(*this); }
SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::getDerived()
Line
Count
Source
126
166k
  Derived &getDerived() { return static_cast<Derived&>(*this); }
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::getDerived()
Line
Count
Source
126
217M
  Derived &getDerived() { return static_cast<Derived&>(*this); }
127
128
  /// Retrieves a reference to the derived class.
129
  const Derived &getDerived() const {
130
    return static_cast<const Derived&>(*this);
131
  }
132
133
4
  static inline ExprResult Owned(Expr *E) { return E; }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::Owned(clang::Expr*)
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::Owned(clang::Expr*)
Line
Count
Source
133
2
  static inline ExprResult Owned(Expr *E) { return E; }
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::Owned(clang::Expr*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::Owned(clang::Expr*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::Owned(clang::Expr*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::Owned(clang::Expr*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::Owned(clang::Expr*)
Line
Count
Source
133
2
  static inline ExprResult Owned(Expr *E) { return E; }
134
285
  static inline StmtResult Owned(Stmt *S) { return S; }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::Owned(clang::Stmt*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::Owned(clang::Stmt*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::Owned(clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::Owned(clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::Owned(clang::Stmt*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::Owned(clang::Stmt*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::Owned(clang::Stmt*)
Line
Count
Source
134
285
  static inline StmtResult Owned(Stmt *S) { return S; }
135
136
  /// Retrieves a reference to the semantic analysis object used for
137
  /// this tree transform.
138
25.8M
  Sema &getSema() const { return SemaRef; }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::getSema() const
Line
Count
Source
138
2.71k
  Sema &getSema() const { return SemaRef; }
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::getSema() const
Line
Count
Source
138
422
  Sema &getSema() const { return SemaRef; }
SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::getSema() const
Line
Count
Source
138
152
  Sema &getSema() const { return SemaRef; }
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::getSema() const
Line
Count
Source
138
41
  Sema &getSema() const { return SemaRef; }
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::getSema() const
Line
Count
Source
138
153k
  Sema &getSema() const { return SemaRef; }
SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::getSema() const
Line
Count
Source
138
4.84k
  Sema &getSema() const { return SemaRef; }
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::getSema() const
Line
Count
Source
138
25.7M
  Sema &getSema() const { return SemaRef; }
139
140
  /// Whether the transformation should always rebuild AST nodes, even
141
  /// if none of the children have changed.
142
  ///
143
  /// Subclasses may override this function to specify when the transformation
144
  /// should rebuild all AST nodes.
145
  ///
146
  /// We must always rebuild all AST nodes when performing variadic template
147
  /// pack expansion, in order to avoid violating the AST invariant that each
148
  /// statement node appears at most once in its containing declaration.
149
17.9M
  bool AlwaysRebuild() { return SemaRef.ArgumentPackSubstitutionIndex != -1; }
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::AlwaysRebuild()
Line
Count
Source
149
449
  bool AlwaysRebuild() { return SemaRef.ArgumentPackSubstitutionIndex != -1; }
SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::AlwaysRebuild()
Line
Count
Source
149
88
  bool AlwaysRebuild() { return SemaRef.ArgumentPackSubstitutionIndex != -1; }
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::AlwaysRebuild()
Line
Count
Source
149
105
  bool AlwaysRebuild() { return SemaRef.ArgumentPackSubstitutionIndex != -1; }
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::AlwaysRebuild()
Line
Count
Source
149
521k
  bool AlwaysRebuild() { return SemaRef.ArgumentPackSubstitutionIndex != -1; }
SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::AlwaysRebuild()
Line
Count
Source
149
12.9k
  bool AlwaysRebuild() { return SemaRef.ArgumentPackSubstitutionIndex != -1; }
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::AlwaysRebuild()
Line
Count
Source
149
17.4M
  bool AlwaysRebuild() { return SemaRef.ArgumentPackSubstitutionIndex != -1; }
150
151
  /// Whether the transformation is forming an expression or statement that
152
  /// replaces the original. In this case, we'll reuse mangling numbers from
153
  /// existing lambdas.
154
1.48k
  bool ReplacingOriginal() { return false; }
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::ReplacingOriginal()
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::ReplacingOriginal()
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::ReplacingOriginal()
Line
Count
Source
154
1.48k
  bool ReplacingOriginal() { return false; }
155
156
  /// Returns the location of the entity being transformed, if that
157
  /// information was not available elsewhere in the AST.
158
  ///
159
  /// By default, returns no source-location information. Subclasses can
160
  /// provide an alternative implementation that provides better location
161
  /// information.
162
10.4k
  SourceLocation getBaseLocation() { return SourceLocation(); }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::getBaseLocation()
Line
Count
Source
162
40
  SourceLocation getBaseLocation() { return SourceLocation(); }
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::getBaseLocation()
Line
Count
Source
162
62
  SourceLocation getBaseLocation() { return SourceLocation(); }
SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::getBaseLocation()
Line
Count
Source
162
8
  SourceLocation getBaseLocation() { return SourceLocation(); }
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::getBaseLocation()
Line
Count
Source
162
193
  SourceLocation getBaseLocation() { return SourceLocation(); }
SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::getBaseLocation()
Line
Count
Source
162
10.1k
  SourceLocation getBaseLocation() { return SourceLocation(); }
163
164
  /// Returns the name of the entity being transformed, if that
165
  /// information was not available elsewhere in the AST.
166
  ///
167
  /// By default, returns an empty name. Subclasses can provide an alternative
168
  /// implementation with a more precise name.
169
23.5k
  DeclarationName getBaseEntity() { return DeclarationName(); }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::getBaseEntity()
Line
Count
Source
169
116
  DeclarationName getBaseEntity() { return DeclarationName(); }
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::getBaseEntity()
Line
Count
Source
169
123
  DeclarationName getBaseEntity() { return DeclarationName(); }
SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::getBaseEntity()
Line
Count
Source
169
16
  DeclarationName getBaseEntity() { return DeclarationName(); }
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::getBaseEntity()
Line
Count
Source
169
329
  DeclarationName getBaseEntity() { return DeclarationName(); }
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::getBaseEntity()
SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::getBaseEntity()
Line
Count
Source
169
22.6k
  DeclarationName getBaseEntity() { return DeclarationName(); }
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::getBaseEntity()
Line
Count
Source
169
317
  DeclarationName getBaseEntity() { return DeclarationName(); }
170
171
  /// Sets the "base" location and entity when that
172
  /// information is known based on another transformation.
173
  ///
174
  /// By default, the source location and entity are ignored. Subclasses can
175
  /// override this function to provide a customized implementation.
176
5.87k
  void setBase(SourceLocation Loc, DeclarationName Entity) { }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::setBase(clang::SourceLocation, clang::DeclarationName)
Line
Count
Source
176
67
  void setBase(SourceLocation Loc, DeclarationName Entity) { }
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::setBase(clang::SourceLocation, clang::DeclarationName)
Line
Count
Source
176
122
  void setBase(SourceLocation Loc, DeclarationName Entity) { }
SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::setBase(clang::SourceLocation, clang::DeclarationName)
Line
Count
Source
176
16
  void setBase(SourceLocation Loc, DeclarationName Entity) { }
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::setBase(clang::SourceLocation, clang::DeclarationName)
Line
Count
Source
176
326
  void setBase(SourceLocation Loc, DeclarationName Entity) { }
SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::setBase(clang::SourceLocation, clang::DeclarationName)
Line
Count
Source
176
5.34k
  void setBase(SourceLocation Loc, DeclarationName Entity) { }
177
178
  /// RAII object that temporarily sets the base location and entity
179
  /// used for reporting diagnostics in types.
180
  class TemporaryBase {
181
    TreeTransform &Self;
182
    SourceLocation OldLocation;
183
    DeclarationName OldEntity;
184
185
  public:
186
    TemporaryBase(TreeTransform &Self, SourceLocation Location,
187
11.6M
                  DeclarationName Entity) : Self(Self) {
188
11.6M
      OldLocation = Self.getDerived().getBaseLocation();
189
11.6M
      OldEntity = Self.getDerived().getBaseEntity();
190
11.6M
191
11.6M
      if (Location.isValid())
192
11.5M
        Self.getDerived().setBase(Location, Entity);
193
11.6M
    }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::TemporaryBase::TemporaryBase(clang::TreeTransform<(anonymous namespace)::TransformToPE>&, clang::SourceLocation, clang::DeclarationName)
Line
Count
Source
187
34
                  DeclarationName Entity) : Self(Self) {
188
34
      OldLocation = Self.getDerived().getBaseLocation();
189
34
      OldEntity = Self.getDerived().getBaseEntity();
190
34
191
34
      if (Location.isValid())
192
33
        Self.getDerived().setBase(Location, Entity);
193
34
    }
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::TemporaryBase::TemporaryBase(clang::TreeTransform<(anonymous namespace)::TransformTypos>&, clang::SourceLocation, clang::DeclarationName)
Line
Count
Source
187
61
                  DeclarationName Entity) : Self(Self) {
188
61
      OldLocation = Self.getDerived().getBaseLocation();
189
61
      OldEntity = Self.getDerived().getBaseEntity();
190
61
191
61
      if (Location.isValid())
192
61
        Self.getDerived().setBase(Location, Entity);
193
61
    }
SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::TemporaryBase::TemporaryBase(clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>&, clang::SourceLocation, clang::DeclarationName)
Line
Count
Source
187
8
                  DeclarationName Entity) : Self(Self) {
188
8
      OldLocation = Self.getDerived().getBaseLocation();
189
8
      OldEntity = Self.getDerived().getBaseEntity();
190
8
191
8
      if (Location.isValid())
192
8
        Self.getDerived().setBase(Location, Entity);
193
8
    }
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::TemporaryBase::TemporaryBase(clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>&, clang::SourceLocation, clang::DeclarationName)
Line
Count
Source
187
173
                  DeclarationName Entity) : Self(Self) {
188
173
      OldLocation = Self.getDerived().getBaseLocation();
189
173
      OldEntity = Self.getDerived().getBaseEntity();
190
173
191
173
      if (Location.isValid())
192
153
        Self.getDerived().setBase(Location, Entity);
193
173
    }
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TemporaryBase::TemporaryBase(clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>&, clang::SourceLocation, clang::DeclarationName)
Line
Count
Source
187
864k
                  DeclarationName Entity) : Self(Self) {
188
864k
      OldLocation = Self.getDerived().getBaseLocation();
189
864k
      OldEntity = Self.getDerived().getBaseEntity();
190
864k
191
864k
      if (Location.isValid())
192
864k
        Self.getDerived().setBase(Location, Entity);
193
864k
    }
SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::TemporaryBase::TemporaryBase(clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>&, clang::SourceLocation, clang::DeclarationName)
Line
Count
Source
187
5.11k
                  DeclarationName Entity) : Self(Self) {
188
5.11k
      OldLocation = Self.getDerived().getBaseLocation();
189
5.11k
      OldEntity = Self.getDerived().getBaseEntity();
190
5.11k
191
5.11k
      if (Location.isValid())
192
230
        Self.getDerived().setBase(Location, Entity);
193
5.11k
    }
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TemporaryBase::TemporaryBase(clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>&, clang::SourceLocation, clang::DeclarationName)
Line
Count
Source
187
10.7M
                  DeclarationName Entity) : Self(Self) {
188
10.7M
      OldLocation = Self.getDerived().getBaseLocation();
189
10.7M
      OldEntity = Self.getDerived().getBaseEntity();
190
10.7M
191
10.7M
      if (Location.isValid())
192
10.6M
        Self.getDerived().setBase(Location, Entity);
193
10.7M
    }
194
195
11.6M
    ~TemporaryBase() {
196
11.6M
      Self.getDerived().setBase(OldLocation, OldEntity);
197
11.6M
    }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::TemporaryBase::~TemporaryBase()
Line
Count
Source
195
34
    ~TemporaryBase() {
196
34
      Self.getDerived().setBase(OldLocation, OldEntity);
197
34
    }
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::TemporaryBase::~TemporaryBase()
Line
Count
Source
195
61
    ~TemporaryBase() {
196
61
      Self.getDerived().setBase(OldLocation, OldEntity);
197
61
    }
SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::TemporaryBase::~TemporaryBase()
Line
Count
Source
195
8
    ~TemporaryBase() {
196
8
      Self.getDerived().setBase(OldLocation, OldEntity);
197
8
    }
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::TemporaryBase::~TemporaryBase()
Line
Count
Source
195
173
    ~TemporaryBase() {
196
173
      Self.getDerived().setBase(OldLocation, OldEntity);
197
173
    }
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TemporaryBase::~TemporaryBase()
Line
Count
Source
195
864k
    ~TemporaryBase() {
196
864k
      Self.getDerived().setBase(OldLocation, OldEntity);
197
864k
    }
SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::TemporaryBase::~TemporaryBase()
Line
Count
Source
195
5.11k
    ~TemporaryBase() {
196
5.11k
      Self.getDerived().setBase(OldLocation, OldEntity);
197
5.11k
    }
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TemporaryBase::~TemporaryBase()
Line
Count
Source
195
10.7M
    ~TemporaryBase() {
196
10.7M
      Self.getDerived().setBase(OldLocation, OldEntity);
197
10.7M
    }
198
  };
199
200
  /// Determine whether the given type \p T has already been
201
  /// transformed.
202
  ///
203
  /// Subclasses can provide an alternative implementation of this routine
204
  /// to short-circuit evaluation when it is known that a given type will
205
  /// not change. For example, template instantiation need not traverse
206
  /// non-dependent types.
207
10.1k
  bool AlreadyTransformed(QualType T) {
208
10.1k
    return T.isNull();
209
10.1k
  }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::AlreadyTransformed(clang::QualType)
Line
Count
Source
207
41
  bool AlreadyTransformed(QualType T) {
208
41
    return T.isNull();
209
41
  }
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::AlreadyTransformed(clang::QualType)
Line
Count
Source
207
61
  bool AlreadyTransformed(QualType T) {
208
61
    return T.isNull();
209
61
  }
SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::AlreadyTransformed(clang::QualType)
Line
Count
Source
207
16
  bool AlreadyTransformed(QualType T) {
208
16
    return T.isNull();
209
16
  }
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::AlreadyTransformed(clang::QualType)
Line
Count
Source
207
178
  bool AlreadyTransformed(QualType T) {
208
178
    return T.isNull();
209
178
  }
SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::AlreadyTransformed(clang::QualType)
Line
Count
Source
207
9.82k
  bool AlreadyTransformed(QualType T) {
208
9.82k
    return T.isNull();
209
9.82k
  }
210
211
  /// Determine whether the given call argument should be dropped, e.g.,
212
  /// because it is a default argument.
213
  ///
214
  /// Subclasses can provide an alternative implementation of this routine to
215
  /// determine which kinds of call arguments get dropped. By default,
216
  /// CXXDefaultArgument nodes are dropped (prior to transformation).
217
753k
  bool DropCallArgument(Expr *E) {
218
753k
    return E->isDefaultArgument();
219
753k
  }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::DropCallArgument(clang::Expr*)
Line
Count
Source
217
35
  bool DropCallArgument(Expr *E) {
218
35
    return E->isDefaultArgument();
219
35
  }
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::DropCallArgument(clang::Expr*)
Line
Count
Source
217
263
  bool DropCallArgument(Expr *E) {
218
263
    return E->isDefaultArgument();
219
263
  }
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::DropCallArgument(clang::Expr*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::DropCallArgument(clang::Expr*)
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::DropCallArgument(clang::Expr*)
Line
Count
Source
217
5
  bool DropCallArgument(Expr *E) {
218
5
    return E->isDefaultArgument();
219
5
  }
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::DropCallArgument(clang::Expr*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::DropCallArgument(clang::Expr*)
Line
Count
Source
217
753k
  bool DropCallArgument(Expr *E) {
218
753k
    return E->isDefaultArgument();
219
753k
  }
220
221
  /// Determine whether we should expand a pack expansion with the
222
  /// given set of parameter packs into separate arguments by repeatedly
223
  /// transforming the pattern.
224
  ///
225
  /// By default, the transformer never tries to expand pack expansions.
226
  /// Subclasses can override this routine to provide different behavior.
227
  ///
228
  /// \param EllipsisLoc The location of the ellipsis that identifies the
229
  /// pack expansion.
230
  ///
231
  /// \param PatternRange The source range that covers the entire pattern of
232
  /// the pack expansion.
233
  ///
234
  /// \param Unexpanded The set of unexpanded parameter packs within the
235
  /// pattern.
236
  ///
237
  /// \param ShouldExpand Will be set to \c true if the transformer should
238
  /// expand the corresponding pack expansions into separate arguments. When
239
  /// set, \c NumExpansions must also be set.
240
  ///
241
  /// \param RetainExpansion Whether the caller should add an unexpanded
242
  /// pack expansion after all of the expanded arguments. This is used
243
  /// when extending explicitly-specified template argument packs per
244
  /// C++0x [temp.arg.explicit]p9.
245
  ///
246
  /// \param NumExpansions The number of separate arguments that will be in
247
  /// the expanded form of the corresponding pack expansion. This is both an
248
  /// input and an output parameter, which can be set by the caller if the
249
  /// number of expansions is known a priori (e.g., due to a prior substitution)
250
  /// and will be set by the callee when the number of expansions is known.
251
  /// The callee must set this value when \c ShouldExpand is \c true; it may
252
  /// set this value in other cases.
253
  ///
254
  /// \returns true if an error occurred (e.g., because the parameter packs
255
  /// are to be instantiated with arguments of different lengths), false
256
  /// otherwise. If false, \c ShouldExpand (and possibly \c NumExpansions)
257
  /// must be set.
258
  bool TryExpandParameterPacks(SourceLocation EllipsisLoc,
259
                               SourceRange PatternRange,
260
                               ArrayRef<UnexpandedParameterPack> Unexpanded,
261
                               bool &ShouldExpand,
262
                               bool &RetainExpansion,
263
18.1k
                               Optional<unsigned> &NumExpansions) {
264
18.1k
    ShouldExpand = false;
265
18.1k
    return false;
266
18.1k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::TryExpandParameterPacks(clang::SourceLocation, clang::SourceRange, llvm::ArrayRef<std::__1::pair<llvm::PointerUnion<clang::TemplateTypeParmType const*, clang::NamedDecl*>, clang::SourceLocation> >, bool&, bool&, llvm::Optional<unsigned int>&)
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::TryExpandParameterPacks(clang::SourceLocation, clang::SourceRange, llvm::ArrayRef<std::__1::pair<llvm::PointerUnion<clang::TemplateTypeParmType const*, clang::NamedDecl*>, clang::SourceLocation> >, bool&, bool&, llvm::Optional<unsigned int>&)
Line
Count
Source
263
5
                               Optional<unsigned> &NumExpansions) {
264
5
    ShouldExpand = false;
265
5
    return false;
266
5
  }
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::TryExpandParameterPacks(clang::SourceLocation, clang::SourceRange, llvm::ArrayRef<std::__1::pair<llvm::PointerUnion<clang::TemplateTypeParmType const*, clang::NamedDecl*>, clang::SourceLocation> >, bool&, bool&, llvm::Optional<unsigned int>&)
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::TryExpandParameterPacks(clang::SourceLocation, clang::SourceRange, llvm::ArrayRef<std::__1::pair<llvm::PointerUnion<clang::TemplateTypeParmType const*, clang::NamedDecl*>, clang::SourceLocation> >, bool&, bool&, llvm::Optional<unsigned int>&)
Line
Count
Source
263
3
                               Optional<unsigned> &NumExpansions) {
264
3
    ShouldExpand = false;
265
3
    return false;
266
3
  }
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TryExpandParameterPacks(clang::SourceLocation, clang::SourceRange, llvm::ArrayRef<std::__1::pair<llvm::PointerUnion<clang::TemplateTypeParmType const*, clang::NamedDecl*>, clang::SourceLocation> >, bool&, bool&, llvm::Optional<unsigned int>&)
Line
Count
Source
263
18.1k
                               Optional<unsigned> &NumExpansions) {
264
18.1k
    ShouldExpand = false;
265
18.1k
    return false;
266
18.1k
  }
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::TryExpandParameterPacks(clang::SourceLocation, clang::SourceRange, llvm::ArrayRef<std::__1::pair<llvm::PointerUnion<clang::TemplateTypeParmType const*, clang::NamedDecl*>, clang::SourceLocation> >, bool&, bool&, llvm::Optional<unsigned int>&)
267
268
  /// "Forget" about the partially-substituted pack template argument,
269
  /// when performing an instantiation that must preserve the parameter pack
270
  /// use.
271
  ///
272
  /// This routine is meant to be overridden by the template instantiator.
273
0
  TemplateArgument ForgetPartiallySubstitutedPack() {
274
0
    return TemplateArgument();
275
0
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::ForgetPartiallySubstitutedPack()
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::ForgetPartiallySubstitutedPack()
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::ForgetPartiallySubstitutedPack()
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::ForgetPartiallySubstitutedPack()
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::ForgetPartiallySubstitutedPack()
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::ForgetPartiallySubstitutedPack()
276
277
  /// "Remember" the partially-substituted pack template argument
278
  /// after performing an instantiation that must preserve the parameter pack
279
  /// use.
280
  ///
281
  /// This routine is meant to be overridden by the template instantiator.
282
0
  void RememberPartiallySubstitutedPack(TemplateArgument Arg) { }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RememberPartiallySubstitutedPack(clang::TemplateArgument)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RememberPartiallySubstitutedPack(clang::TemplateArgument)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RememberPartiallySubstitutedPack(clang::TemplateArgument)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RememberPartiallySubstitutedPack(clang::TemplateArgument)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RememberPartiallySubstitutedPack(clang::TemplateArgument)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RememberPartiallySubstitutedPack(clang::TemplateArgument)
283
284
  /// Note to the derived class when a function parameter pack is
285
  /// being expanded.
286
0
  void ExpandingFunctionParameterPack(ParmVarDecl *Pack) { }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::ExpandingFunctionParameterPack(clang::ParmVarDecl*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::ExpandingFunctionParameterPack(clang::ParmVarDecl*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::ExpandingFunctionParameterPack(clang::ParmVarDecl*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::ExpandingFunctionParameterPack(clang::ParmVarDecl*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::ExpandingFunctionParameterPack(clang::ParmVarDecl*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::ExpandingFunctionParameterPack(clang::ParmVarDecl*)
287
288
  /// Transforms the given type into another type.
289
  ///
290
  /// By default, this routine transforms a type by creating a
291
  /// TypeSourceInfo for it and delegating to the appropriate
292
  /// function.  This is expensive, but we don't mind, because
293
  /// this method is deprecated anyway;  all users should be
294
  /// switched to storing TypeSourceInfos.
295
  ///
296
  /// \returns the transformed type.
297
  QualType TransformType(QualType T);
298
299
  /// Transforms the given type-with-location into a new
300
  /// type-with-location.
301
  ///
302
  /// By default, this routine transforms a type by delegating to the
303
  /// appropriate TransformXXXType to build a new type.  Subclasses
304
  /// may override this function (to take over all type
305
  /// transformations) or some set of the TransformXXXType functions
306
  /// to alter the transformation.
307
  TypeSourceInfo *TransformType(TypeSourceInfo *DI);
308
309
  /// Transform the given type-with-location into a new
310
  /// type, collecting location information in the given builder
311
  /// as necessary.
312
  ///
313
  QualType TransformType(TypeLocBuilder &TLB, TypeLoc TL);
314
315
  /// Transform a type that is permitted to produce a
316
  /// DeducedTemplateSpecializationType.
317
  ///
318
  /// This is used in the (relatively rare) contexts where it is acceptable
319
  /// for transformation to produce a class template type with deduced
320
  /// template arguments.
321
  /// @{
322
  QualType TransformTypeWithDeducedTST(QualType T);
323
  TypeSourceInfo *TransformTypeWithDeducedTST(TypeSourceInfo *DI);
324
  /// @}
325
326
  /// The reason why the value of a statement is not discarded, if any.
327
  enum StmtDiscardKind {
328
    SDK_Discarded,
329
    SDK_NotDiscarded,
330
    SDK_StmtExprResult,
331
  };
332
333
  /// Transform the given statement.
334
  ///
335
  /// By default, this routine transforms a statement by delegating to the
336
  /// appropriate TransformXXXStmt function to transform a specific kind of
337
  /// statement or the TransformExpr() function to transform an expression.
338
  /// Subclasses may override this function to transform statements using some
339
  /// other mechanism.
340
  ///
341
  /// \returns the transformed statement.
342
  StmtResult TransformStmt(Stmt *S, StmtDiscardKind SDK = SDK_Discarded);
343
344
  /// Transform the given statement.
345
  ///
346
  /// By default, this routine transforms a statement by delegating to the
347
  /// appropriate TransformOMPXXXClause function to transform a specific kind
348
  /// of clause. Subclasses may override this function to transform statements
349
  /// using some other mechanism.
350
  ///
351
  /// \returns the transformed OpenMP clause.
352
  OMPClause *TransformOMPClause(OMPClause *S);
353
354
  /// Transform the given attribute.
355
  ///
356
  /// By default, this routine transforms a statement by delegating to the
357
  /// appropriate TransformXXXAttr function to transform a specific kind
358
  /// of attribute. Subclasses may override this function to transform
359
  /// attributed statements using some other mechanism.
360
  ///
361
  /// \returns the transformed attribute
362
  const Attr *TransformAttr(const Attr *S);
363
364
/// Transform the specified attribute.
365
///
366
/// Subclasses should override the transformation of attributes with a pragma
367
/// spelling to transform expressions stored within the attribute.
368
///
369
/// \returns the transformed attribute.
370
#define ATTR(X)
371
#define PRAGMA_SPELLING_ATTR(X)                                                \
372
0
  const X##Attr *Transform##X##Attr(const X##Attr *R) { return R; }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::TransformInitSegAttr(clang::InitSegAttr const*)
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::TransformLoopHintAttr(clang::LoopHintAttr const*)
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::TransformOMPDeclareSimdDeclAttr(clang::OMPDeclareSimdDeclAttr const*)
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::TransformOMPDeclareTargetDeclAttr(clang::OMPDeclareTargetDeclAttr const*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::TransformInitSegAttr(clang::InitSegAttr const*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::TransformLoopHintAttr(clang::LoopHintAttr const*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::TransformOMPDeclareSimdDeclAttr(clang::OMPDeclareSimdDeclAttr const*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::TransformOMPDeclareTargetDeclAttr(clang::OMPDeclareTargetDeclAttr const*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::TransformInitSegAttr(clang::InitSegAttr const*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::TransformLoopHintAttr(clang::LoopHintAttr const*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::TransformOMPDeclareSimdDeclAttr(clang::OMPDeclareSimdDeclAttr const*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::TransformOMPDeclareTargetDeclAttr(clang::OMPDeclareTargetDeclAttr const*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::TransformInitSegAttr(clang::InitSegAttr const*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::TransformLoopHintAttr(clang::LoopHintAttr const*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::TransformOMPDeclareSimdDeclAttr(clang::OMPDeclareSimdDeclAttr const*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::TransformOMPDeclareTargetDeclAttr(clang::OMPDeclareTargetDeclAttr const*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformInitSegAttr(clang::InitSegAttr const*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformLoopHintAttr(clang::LoopHintAttr const*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformOMPDeclareSimdDeclAttr(clang::OMPDeclareSimdDeclAttr const*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformOMPDeclareTargetDeclAttr(clang::OMPDeclareTargetDeclAttr const*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::TransformInitSegAttr(clang::InitSegAttr const*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::TransformLoopHintAttr(clang::LoopHintAttr const*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::TransformOMPDeclareSimdDeclAttr(clang::OMPDeclareSimdDeclAttr const*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::TransformOMPDeclareTargetDeclAttr(clang::OMPDeclareTargetDeclAttr const*)
Unexecuted instantiation: SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformInitSegAttr(clang::InitSegAttr const*)
Unexecuted instantiation: SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformOMPDeclareSimdDeclAttr(clang::OMPDeclareSimdDeclAttr const*)
Unexecuted instantiation: SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformOMPDeclareTargetDeclAttr(clang::OMPDeclareTargetDeclAttr const*)
373
#include "clang/Basic/AttrList.inc"
374
375
  /// Transform the given expression.
376
  ///
377
  /// By default, this routine transforms an expression by delegating to the
378
  /// appropriate TransformXXXExpr function to build a new expression.
379
  /// Subclasses may override this function to transform expressions using some
380
  /// other mechanism.
381
  ///
382
  /// \returns the transformed expression.
383
  ExprResult TransformExpr(Expr *E);
384
385
  /// Transform the given initializer.
386
  ///
387
  /// By default, this routine transforms an initializer by stripping off the
388
  /// semantic nodes added by initialization, then passing the result to
389
  /// TransformExpr or TransformExprs.
390
  ///
391
  /// \returns the transformed initializer.
392
  ExprResult TransformInitializer(Expr *Init, bool NotCopyInit);
393
394
  /// Transform the given list of expressions.
395
  ///
396
  /// This routine transforms a list of expressions by invoking
397
  /// \c TransformExpr() for each subexpression. However, it also provides
398
  /// support for variadic templates by expanding any pack expansions (if the
399
  /// derived class permits such expansion) along the way. When pack expansions
400
  /// are present, the number of outputs may not equal the number of inputs.
401
  ///
402
  /// \param Inputs The set of expressions to be transformed.
403
  ///
404
  /// \param NumInputs The number of expressions in \c Inputs.
405
  ///
406
  /// \param IsCall If \c true, then this transform is being performed on
407
  /// function-call arguments, and any arguments that should be dropped, will
408
  /// be.
409
  ///
410
  /// \param Outputs The transformed input expressions will be added to this
411
  /// vector.
412
  ///
413
  /// \param ArgChanged If non-NULL, will be set \c true if any argument changed
414
  /// due to transformation.
415
  ///
416
  /// \returns true if an error occurred, false otherwise.
417
  bool TransformExprs(Expr *const *Inputs, unsigned NumInputs, bool IsCall,
418
                      SmallVectorImpl<Expr *> &Outputs,
419
                      bool *ArgChanged = nullptr);
420
421
  /// Transform the given declaration, which is referenced from a type
422
  /// or expression.
423
  ///
424
  /// By default, acts as the identity function on declarations, unless the
425
  /// transformer has had to transform the declaration itself. Subclasses
426
  /// may override this function to provide alternate behavior.
427
455k
  Decl *TransformDecl(SourceLocation Loc, Decl *D) {
428
455k
    llvm::DenseMap<Decl *, Decl *>::iterator Known
429
455k
      = TransformedLocalDecls.find(D);
430
455k
    if (Known != TransformedLocalDecls.end())
431
0
      return Known->second;
432
455k
433
455k
    return D;
434
455k
  }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::TransformDecl(clang::SourceLocation, clang::Decl*)
Line
Count
Source
427
1.29k
  Decl *TransformDecl(SourceLocation Loc, Decl *D) {
428
1.29k
    llvm::DenseMap<Decl *, Decl *>::iterator Known
429
1.29k
      = TransformedLocalDecls.find(D);
430
1.29k
    if (Known != TransformedLocalDecls.end())
431
0
      return Known->second;
432
1.29k
433
1.29k
    return D;
434
1.29k
  }
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::TransformDecl(clang::SourceLocation, clang::Decl*)
Line
Count
Source
427
290
  Decl *TransformDecl(SourceLocation Loc, Decl *D) {
428
290
    llvm::DenseMap<Decl *, Decl *>::iterator Known
429
290
      = TransformedLocalDecls.find(D);
430
290
    if (Known != TransformedLocalDecls.end())
431
0
      return Known->second;
432
290
433
290
    return D;
434
290
  }
SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::TransformDecl(clang::SourceLocation, clang::Decl*)
Line
Count
Source
427
48
  Decl *TransformDecl(SourceLocation Loc, Decl *D) {
428
48
    llvm::DenseMap<Decl *, Decl *>::iterator Known
429
48
      = TransformedLocalDecls.find(D);
430
48
    if (Known != TransformedLocalDecls.end())
431
0
      return Known->second;
432
48
433
48
    return D;
434
48
  }
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::TransformDecl(clang::SourceLocation, clang::Decl*)
Line
Count
Source
427
42
  Decl *TransformDecl(SourceLocation Loc, Decl *D) {
428
42
    llvm::DenseMap<Decl *, Decl *>::iterator Known
429
42
      = TransformedLocalDecls.find(D);
430
42
    if (Known != TransformedLocalDecls.end())
431
0
      return Known->second;
432
42
433
42
    return D;
434
42
  }
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformDecl(clang::SourceLocation, clang::Decl*)
Line
Count
Source
427
453k
  Decl *TransformDecl(SourceLocation Loc, Decl *D) {
428
453k
    llvm::DenseMap<Decl *, Decl *>::iterator Known
429
453k
      = TransformedLocalDecls.find(D);
430
453k
    if (Known != TransformedLocalDecls.end())
431
0
      return Known->second;
432
453k
433
453k
    return D;
434
453k
  }
SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::TransformDecl(clang::SourceLocation, clang::Decl*)
Line
Count
Source
427
76
  Decl *TransformDecl(SourceLocation Loc, Decl *D) {
428
76
    llvm::DenseMap<Decl *, Decl *>::iterator Known
429
76
      = TransformedLocalDecls.find(D);
430
76
    if (Known != TransformedLocalDecls.end())
431
0
      return Known->second;
432
76
433
76
    return D;
434
76
  }
435
436
  /// Transform the specified condition.
437
  ///
438
  /// By default, this transforms the variable and expression and rebuilds
439
  /// the condition.
440
  Sema::ConditionResult TransformCondition(SourceLocation Loc, VarDecl *Var,
441
                                           Expr *Expr,
442
                                           Sema::ConditionKind Kind);
443
444
  /// Transform the attributes associated with the given declaration and
445
  /// place them on the new declaration.
446
  ///
447
  /// By default, this operation does nothing. Subclasses may override this
448
  /// behavior to transform attributes.
449
5
  void transformAttrs(Decl *Old, Decl *New) { }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::transformAttrs(clang::Decl*, clang::Decl*)
Line
Count
Source
449
5
  void transformAttrs(Decl *Old, Decl *New) { }
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::transformAttrs(clang::Decl*, clang::Decl*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::transformAttrs(clang::Decl*, clang::Decl*)
450
451
  /// Note that a local declaration has been transformed by this
452
  /// transformer.
453
  ///
454
  /// Local declarations are typically transformed via a call to
455
  /// TransformDefinition. However, in some cases (e.g., lambda expressions),
456
  /// the transformer itself has to transform the declarations. This routine
457
  /// can be overridden by a subclass that keeps track of such mappings.
458
10
  void transformedLocalDecl(Decl *Old, ArrayRef<Decl *> New) {
459
10
    assert(New.size() == 1 &&
460
10
           "must override transformedLocalDecl if performing pack expansion");
461
10
    TransformedLocalDecls[Old] = New.front();
462
10
  }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::transformedLocalDecl(clang::Decl*, llvm::ArrayRef<clang::Decl*>)
Line
Count
Source
458
10
  void transformedLocalDecl(Decl *Old, ArrayRef<Decl *> New) {
459
10
    assert(New.size() == 1 &&
460
10
           "must override transformedLocalDecl if performing pack expansion");
461
10
    TransformedLocalDecls[Old] = New.front();
462
10
  }
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::transformedLocalDecl(clang::Decl*, llvm::ArrayRef<clang::Decl*>)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::transformedLocalDecl(clang::Decl*, llvm::ArrayRef<clang::Decl*>)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::transformedLocalDecl(clang::Decl*, llvm::ArrayRef<clang::Decl*>)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::transformedLocalDecl(clang::Decl*, llvm::ArrayRef<clang::Decl*>)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::transformedLocalDecl(clang::Decl*, llvm::ArrayRef<clang::Decl*>)
463
464
  /// Transform the definition of the given declaration.
465
  ///
466
  /// By default, invokes TransformDecl() to transform the declaration.
467
  /// Subclasses may override this function to provide alternate behavior.
468
0
  Decl *TransformDefinition(SourceLocation Loc, Decl *D) {
469
0
    return getDerived().TransformDecl(Loc, D);
470
0
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::TransformDefinition(clang::SourceLocation, clang::Decl*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::TransformDefinition(clang::SourceLocation, clang::Decl*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::TransformDefinition(clang::SourceLocation, clang::Decl*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::TransformDefinition(clang::SourceLocation, clang::Decl*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformDefinition(clang::SourceLocation, clang::Decl*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::TransformDefinition(clang::SourceLocation, clang::Decl*)
471
472
  /// Transform the given declaration, which was the first part of a
473
  /// nested-name-specifier in a member access expression.
474
  ///
475
  /// This specific declaration transformation only applies to the first
476
  /// identifier in a nested-name-specifier of a member access expression, e.g.,
477
  /// the \c T in \c x->T::member
478
  ///
479
  /// By default, invokes TransformDecl() to transform the declaration.
480
  /// Subclasses may override this function to provide alternate behavior.
481
22
  NamedDecl *TransformFirstQualifierInScope(NamedDecl *D, SourceLocation Loc) {
482
22
    return cast_or_null<NamedDecl>(getDerived().TransformDecl(Loc, D));
483
22
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::TransformFirstQualifierInScope(clang::NamedDecl*, clang::SourceLocation)
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::TransformFirstQualifierInScope(clang::NamedDecl*, clang::SourceLocation)
Line
Count
Source
481
22
  NamedDecl *TransformFirstQualifierInScope(NamedDecl *D, SourceLocation Loc) {
482
22
    return cast_or_null<NamedDecl>(getDerived().TransformDecl(Loc, D));
483
22
  }
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::TransformFirstQualifierInScope(clang::NamedDecl*, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::TransformFirstQualifierInScope(clang::NamedDecl*, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformFirstQualifierInScope(clang::NamedDecl*, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::TransformFirstQualifierInScope(clang::NamedDecl*, clang::SourceLocation)
484
485
  /// Transform the set of declarations in an OverloadExpr.
486
  bool TransformOverloadExprDecls(OverloadExpr *Old, bool RequiresADL,
487
                                  LookupResult &R);
488
489
  /// Transform the given nested-name-specifier with source-location
490
  /// information.
491
  ///
492
  /// By default, transforms all of the types and declarations within the
493
  /// nested-name-specifier. Subclasses may override this function to provide
494
  /// alternate behavior.
495
  NestedNameSpecifierLoc
496
  TransformNestedNameSpecifierLoc(NestedNameSpecifierLoc NNS,
497
                                  QualType ObjectType = QualType(),
498
                                  NamedDecl *FirstQualifierInScope = nullptr);
499
500
  /// Transform the given declaration name.
501
  ///
502
  /// By default, transforms the types of conversion function, constructor,
503
  /// and destructor names and then (if needed) rebuilds the declaration name.
504
  /// Identifiers and selectors are returned unmodified. Sublcasses may
505
  /// override this function to provide alternate behavior.
506
  DeclarationNameInfo
507
  TransformDeclarationNameInfo(const DeclarationNameInfo &NameInfo);
508
509
  /// Transform the given template name.
510
  ///
511
  /// \param SS The nested-name-specifier that qualifies the template
512
  /// name. This nested-name-specifier must already have been transformed.
513
  ///
514
  /// \param Name The template name to transform.
515
  ///
516
  /// \param NameLoc The source location of the template name.
517
  ///
518
  /// \param ObjectType If we're translating a template name within a member
519
  /// access expression, this is the type of the object whose member template
520
  /// is being referenced.
521
  ///
522
  /// \param FirstQualifierInScope If the first part of a nested-name-specifier
523
  /// also refers to a name within the current (lexical) scope, this is the
524
  /// declaration it refers to.
525
  ///
526
  /// By default, transforms the template name by transforming the declarations
527
  /// and nested-name-specifiers that occur within the template name.
528
  /// Subclasses may override this function to provide alternate behavior.
529
  TemplateName
530
  TransformTemplateName(CXXScopeSpec &SS, TemplateName Name,
531
                        SourceLocation NameLoc,
532
                        QualType ObjectType = QualType(),
533
                        NamedDecl *FirstQualifierInScope = nullptr,
534
                        bool AllowInjectedClassName = false);
535
536
  /// Transform the given template argument.
537
  ///
538
  /// By default, this operation transforms the type, expression, or
539
  /// declaration stored within the template argument and constructs a
540
  /// new template argument from the transformed result. Subclasses may
541
  /// override this function to provide alternate behavior.
542
  ///
543
  /// Returns true if there was an error.
544
  bool TransformTemplateArgument(const TemplateArgumentLoc &Input,
545
                                 TemplateArgumentLoc &Output,
546
                                 bool Uneval = false);
547
548
  /// Transform the given set of template arguments.
549
  ///
550
  /// By default, this operation transforms all of the template arguments
551
  /// in the input set using \c TransformTemplateArgument(), and appends
552
  /// the transformed arguments to the output list.
553
  ///
554
  /// Note that this overload of \c TransformTemplateArguments() is merely
555
  /// a convenience function. Subclasses that wish to override this behavior
556
  /// should override the iterator-based member template version.
557
  ///
558
  /// \param Inputs The set of template arguments to be transformed.
559
  ///
560
  /// \param NumInputs The number of template arguments in \p Inputs.
561
  ///
562
  /// \param Outputs The set of transformed template arguments output by this
563
  /// routine.
564
  ///
565
  /// Returns true if an error occurred.
566
  bool TransformTemplateArguments(const TemplateArgumentLoc *Inputs,
567
                                  unsigned NumInputs,
568
                                  TemplateArgumentListInfo &Outputs,
569
502k
                                  bool Uneval = false) {
570
502k
    return TransformTemplateArguments(Inputs, Inputs + NumInputs, Outputs,
571
502k
                                      Uneval);
572
502k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::TransformTemplateArguments(clang::TemplateArgumentLoc const*, unsigned int, clang::TemplateArgumentListInfo&, bool)
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::TransformTemplateArguments(clang::TemplateArgumentLoc const*, unsigned int, clang::TemplateArgumentListInfo&, bool)
Line
Count
Source
569
4
                                  bool Uneval = false) {
570
4
    return TransformTemplateArguments(Inputs, Inputs + NumInputs, Outputs,
571
4
                                      Uneval);
572
4
  }
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::TransformTemplateArguments(clang::TemplateArgumentLoc const*, unsigned int, clang::TemplateArgumentListInfo&, bool)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::TransformTemplateArguments(clang::TemplateArgumentLoc const*, unsigned int, clang::TemplateArgumentListInfo&, bool)
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformTemplateArguments(clang::TemplateArgumentLoc const*, unsigned int, clang::TemplateArgumentListInfo&, bool)
Line
Count
Source
569
7.17k
                                  bool Uneval = false) {
570
7.17k
    return TransformTemplateArguments(Inputs, Inputs + NumInputs, Outputs,
571
7.17k
                                      Uneval);
572
7.17k
  }
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::TransformTemplateArguments(clang::TemplateArgumentLoc const*, unsigned int, clang::TemplateArgumentListInfo&, bool)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformTemplateArguments(clang::TemplateArgumentLoc const*, unsigned int, clang::TemplateArgumentListInfo&, bool)
Line
Count
Source
569
495k
                                  bool Uneval = false) {
570
495k
    return TransformTemplateArguments(Inputs, Inputs + NumInputs, Outputs,
571
495k
                                      Uneval);
572
495k
  }
573
574
  /// Transform the given set of template arguments.
575
  ///
576
  /// By default, this operation transforms all of the template arguments
577
  /// in the input set using \c TransformTemplateArgument(), and appends
578
  /// the transformed arguments to the output list.
579
  ///
580
  /// \param First An iterator to the first template argument.
581
  ///
582
  /// \param Last An iterator one step past the last template argument.
583
  ///
584
  /// \param Outputs The set of transformed template arguments output by this
585
  /// routine.
586
  ///
587
  /// Returns true if an error occurred.
588
  template<typename InputIterator>
589
  bool TransformTemplateArguments(InputIterator First,
590
                                  InputIterator Last,
591
                                  TemplateArgumentListInfo &Outputs,
592
                                  bool Uneval = false);
593
594
  /// Fakes up a TemplateArgumentLoc for a given TemplateArgument.
595
  void InventTemplateArgumentLoc(const TemplateArgument &Arg,
596
                                 TemplateArgumentLoc &ArgLoc);
597
598
  /// Fakes up a TypeSourceInfo for a type.
599
0
  TypeSourceInfo *InventTypeSourceInfo(QualType T) {
600
0
    return SemaRef.Context.getTrivialTypeSourceInfo(T,
601
0
                       getDerived().getBaseLocation());
602
0
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::InventTypeSourceInfo(clang::QualType)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::InventTypeSourceInfo(clang::QualType)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::InventTypeSourceInfo(clang::QualType)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::InventTypeSourceInfo(clang::QualType)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::InventTypeSourceInfo(clang::QualType)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::InventTypeSourceInfo(clang::QualType)
Unexecuted instantiation: SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::InventTypeSourceInfo(clang::QualType)
603
604
#define ABSTRACT_TYPELOC(CLASS, PARENT)
605
#define TYPELOC(CLASS, PARENT)                                   \
606
  QualType Transform##CLASS##Type(TypeLocBuilder &TLB, CLASS##TypeLoc T);
607
#include "clang/AST/TypeLocNodes.def"
608
609
  template<typename Fn>
610
  QualType TransformFunctionProtoType(TypeLocBuilder &TLB,
611
                                      FunctionProtoTypeLoc TL,
612
                                      CXXRecordDecl *ThisContext,
613
                                      Qualifiers ThisTypeQuals,
614
                                      Fn TransformExceptionSpec);
615
616
  bool TransformExceptionSpec(SourceLocation Loc,
617
                              FunctionProtoType::ExceptionSpecInfo &ESI,
618
                              SmallVectorImpl<QualType> &Exceptions,
619
                              bool &Changed);
620
621
  StmtResult TransformSEHHandler(Stmt *Handler);
622
623
  QualType
624
  TransformTemplateSpecializationType(TypeLocBuilder &TLB,
625
                                      TemplateSpecializationTypeLoc TL,
626
                                      TemplateName Template);
627
628
  QualType
629
  TransformDependentTemplateSpecializationType(TypeLocBuilder &TLB,
630
                                      DependentTemplateSpecializationTypeLoc TL,
631
                                               TemplateName Template,
632
                                               CXXScopeSpec &SS);
633
634
  QualType TransformDependentTemplateSpecializationType(
635
      TypeLocBuilder &TLB, DependentTemplateSpecializationTypeLoc TL,
636
      NestedNameSpecifierLoc QualifierLoc);
637
638
  /// Transforms the parameters of a function type into the
639
  /// given vectors.
640
  ///
641
  /// The result vectors should be kept in sync; null entries in the
642
  /// variables vector are acceptable.
643
  ///
644
  /// Return true on error.
645
  bool TransformFunctionTypeParams(
646
      SourceLocation Loc, ArrayRef<ParmVarDecl *> Params,
647
      const QualType *ParamTypes,
648
      const FunctionProtoType::ExtParameterInfo *ParamInfos,
649
      SmallVectorImpl<QualType> &PTypes, SmallVectorImpl<ParmVarDecl *> *PVars,
650
      Sema::ExtParameterInfoBuilder &PInfos);
651
652
  /// Transforms a single function-type parameter.  Return null
653
  /// on error.
654
  ///
655
  /// \param indexAdjustment - A number to add to the parameter's
656
  ///   scope index;  can be negative
657
  ParmVarDecl *TransformFunctionTypeParam(ParmVarDecl *OldParm,
658
                                          int indexAdjustment,
659
                                          Optional<unsigned> NumExpansions,
660
                                          bool ExpectParameterPack);
661
662
  /// Transform the body of a lambda-expression.
663
  StmtResult TransformLambdaBody(LambdaExpr *E, Stmt *Body);
664
  /// Alternative implementation of TransformLambdaBody that skips transforming
665
  /// the body.
666
  StmtResult SkipLambdaBody(LambdaExpr *E, Stmt *Body);
667
668
  QualType TransformReferenceType(TypeLocBuilder &TLB, ReferenceTypeLoc TL);
669
670
  StmtResult TransformCompoundStmt(CompoundStmt *S, bool IsStmtExpr);
671
  ExprResult TransformCXXNamedCastExpr(CXXNamedCastExpr *E);
672
673
  TemplateParameterList *TransformTemplateParameterList(
674
5
        TemplateParameterList *TPL) {
675
5
    return TPL;
676
5
  }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::TransformTemplateParameterList(clang::TemplateParameterList*)
Line
Count
Source
674
5
        TemplateParameterList *TPL) {
675
5
    return TPL;
676
5
  }
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::TransformTemplateParameterList(clang::TemplateParameterList*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::TransformTemplateParameterList(clang::TemplateParameterList*)
677
678
  ExprResult TransformAddressOfOperand(Expr *E);
679
680
  ExprResult TransformDependentScopeDeclRefExpr(DependentScopeDeclRefExpr *E,
681
                                                bool IsAddressOfOperand,
682
                                                TypeSourceInfo **RecoveryTSI);
683
684
  ExprResult TransformParenDependentScopeDeclRefExpr(
685
      ParenExpr *PE, DependentScopeDeclRefExpr *DRE, bool IsAddressOfOperand,
686
      TypeSourceInfo **RecoveryTSI);
687
688
  StmtResult TransformOMPExecutableDirective(OMPExecutableDirective *S);
689
690
// FIXME: We use LLVM_ATTRIBUTE_NOINLINE because inlining causes a ridiculous
691
// amount of stack usage with clang.
692
#define STMT(Node, Parent)                        \
693
  LLVM_ATTRIBUTE_NOINLINE \
694
  StmtResult Transform##Node(Node *S);
695
#define VALUESTMT(Node, Parent)                   \
696
  LLVM_ATTRIBUTE_NOINLINE \
697
  StmtResult Transform##Node(Node *S, StmtDiscardKind SDK);
698
#define EXPR(Node, Parent)                        \
699
  LLVM_ATTRIBUTE_NOINLINE \
700
  ExprResult Transform##Node(Node *E);
701
#define ABSTRACT_STMT(Stmt)
702
#include "clang/AST/StmtNodes.inc"
703
704
#define OPENMP_CLAUSE(Name, Class)                        \
705
  LLVM_ATTRIBUTE_NOINLINE \
706
  OMPClause *Transform ## Class(Class *S);
707
#include "clang/Basic/OpenMPKinds.def"
708
709
  /// Build a new qualified type given its unqualified type and type location.
710
  ///
711
  /// By default, this routine adds type qualifiers only to types that can
712
  /// have qualifiers, and silently suppresses those qualifiers that are not
713
  /// permitted. Subclasses may override this routine to provide different
714
  /// behavior.
715
  QualType RebuildQualifiedType(QualType T, QualifiedTypeLoc TL);
716
717
  /// Build a new pointer type given its pointee type.
718
  ///
719
  /// By default, performs semantic analysis when building the pointer type.
720
  /// Subclasses may override this routine to provide different behavior.
721
  QualType RebuildPointerType(QualType PointeeType, SourceLocation Sigil);
722
723
  /// Build a new block pointer type given its pointee type.
724
  ///
725
  /// By default, performs semantic analysis when building the block pointer
726
  /// type. Subclasses may override this routine to provide different behavior.
727
  QualType RebuildBlockPointerType(QualType PointeeType, SourceLocation Sigil);
728
729
  /// Build a new reference type given the type it references.
730
  ///
731
  /// By default, performs semantic analysis when building the
732
  /// reference type. Subclasses may override this routine to provide
733
  /// different behavior.
734
  ///
735
  /// \param LValue whether the type was written with an lvalue sigil
736
  /// or an rvalue sigil.
737
  QualType RebuildReferenceType(QualType ReferentType,
738
                                bool LValue,
739
                                SourceLocation Sigil);
740
741
  /// Build a new member pointer type given the pointee type and the
742
  /// class type it refers into.
743
  ///
744
  /// By default, performs semantic analysis when building the member pointer
745
  /// type. Subclasses may override this routine to provide different behavior.
746
  QualType RebuildMemberPointerType(QualType PointeeType, QualType ClassType,
747
                                    SourceLocation Sigil);
748
749
  QualType RebuildObjCTypeParamType(const ObjCTypeParamDecl *Decl,
750
                                    SourceLocation ProtocolLAngleLoc,
751
                                    ArrayRef<ObjCProtocolDecl *> Protocols,
752
                                    ArrayRef<SourceLocation> ProtocolLocs,
753
                                    SourceLocation ProtocolRAngleLoc);
754
755
  /// Build an Objective-C object type.
756
  ///
757
  /// By default, performs semantic analysis when building the object type.
758
  /// Subclasses may override this routine to provide different behavior.
759
  QualType RebuildObjCObjectType(QualType BaseType,
760
                                 SourceLocation Loc,
761
                                 SourceLocation TypeArgsLAngleLoc,
762
                                 ArrayRef<TypeSourceInfo *> TypeArgs,
763
                                 SourceLocation TypeArgsRAngleLoc,
764
                                 SourceLocation ProtocolLAngleLoc,
765
                                 ArrayRef<ObjCProtocolDecl *> Protocols,
766
                                 ArrayRef<SourceLocation> ProtocolLocs,
767
                                 SourceLocation ProtocolRAngleLoc);
768
769
  /// Build a new Objective-C object pointer type given the pointee type.
770
  ///
771
  /// By default, directly builds the pointer type, with no additional semantic
772
  /// analysis.
773
  QualType RebuildObjCObjectPointerType(QualType PointeeType,
774
                                        SourceLocation Star);
775
776
  /// Build a new array type given the element type, size
777
  /// modifier, size of the array (if known), size expression, and index type
778
  /// qualifiers.
779
  ///
780
  /// By default, performs semantic analysis when building the array type.
781
  /// Subclasses may override this routine to provide different behavior.
782
  /// Also by default, all of the other Rebuild*Array
783
  QualType RebuildArrayType(QualType ElementType,
784
                            ArrayType::ArraySizeModifier SizeMod,
785
                            const llvm::APInt *Size,
786
                            Expr *SizeExpr,
787
                            unsigned IndexTypeQuals,
788
                            SourceRange BracketsRange);
789
790
  /// Build a new constant array type given the element type, size
791
  /// modifier, (known) size of the array, and index type qualifiers.
792
  ///
793
  /// By default, performs semantic analysis when building the array type.
794
  /// Subclasses may override this routine to provide different behavior.
795
  QualType RebuildConstantArrayType(QualType ElementType,
796
                                    ArrayType::ArraySizeModifier SizeMod,
797
                                    const llvm::APInt &Size,
798
                                    unsigned IndexTypeQuals,
799
                                    SourceRange BracketsRange);
800
801
  /// Build a new incomplete array type given the element type, size
802
  /// modifier, and index type qualifiers.
803
  ///
804
  /// By default, performs semantic analysis when building the array type.
805
  /// Subclasses may override this routine to provide different behavior.
806
  QualType RebuildIncompleteArrayType(QualType ElementType,
807
                                      ArrayType::ArraySizeModifier SizeMod,
808
                                      unsigned IndexTypeQuals,
809
                                      SourceRange BracketsRange);
810
811
  /// Build a new variable-length array type given the element type,
812
  /// size modifier, size expression, and index type qualifiers.
813
  ///
814
  /// By default, performs semantic analysis when building the array type.
815
  /// Subclasses may override this routine to provide different behavior.
816
  QualType RebuildVariableArrayType(QualType ElementType,
817
                                    ArrayType::ArraySizeModifier SizeMod,
818
                                    Expr *SizeExpr,
819
                                    unsigned IndexTypeQuals,
820
                                    SourceRange BracketsRange);
821
822
  /// Build a new dependent-sized array type given the element type,
823
  /// size modifier, size expression, and index type qualifiers.
824
  ///
825
  /// By default, performs semantic analysis when building the array type.
826
  /// Subclasses may override this routine to provide different behavior.
827
  QualType RebuildDependentSizedArrayType(QualType ElementType,
828
                                          ArrayType::ArraySizeModifier SizeMod,
829
                                          Expr *SizeExpr,
830
                                          unsigned IndexTypeQuals,
831
                                          SourceRange BracketsRange);
832
833
  /// Build a new vector type given the element type and
834
  /// number of elements.
835
  ///
836
  /// By default, performs semantic analysis when building the vector type.
837
  /// Subclasses may override this routine to provide different behavior.
838
  QualType RebuildVectorType(QualType ElementType, unsigned NumElements,
839
                             VectorType::VectorKind VecKind);
840
841
  /// Build a new potentially dependently-sized extended vector type
842
  /// given the element type and number of elements.
843
  ///
844
  /// By default, performs semantic analysis when building the vector type.
845
  /// Subclasses may override this routine to provide different behavior.
846
  QualType RebuildDependentVectorType(QualType ElementType, Expr *SizeExpr,
847
                                           SourceLocation AttributeLoc,
848
                                           VectorType::VectorKind);
849
850
  /// Build a new extended vector type given the element type and
851
  /// number of elements.
852
  ///
853
  /// By default, performs semantic analysis when building the vector type.
854
  /// Subclasses may override this routine to provide different behavior.
855
  QualType RebuildExtVectorType(QualType ElementType, unsigned NumElements,
856
                                SourceLocation AttributeLoc);
857
858
  /// Build a new potentially dependently-sized extended vector type
859
  /// given the element type and number of elements.
860
  ///
861
  /// By default, performs semantic analysis when building the vector type.
862
  /// Subclasses may override this routine to provide different behavior.
863
  QualType RebuildDependentSizedExtVectorType(QualType ElementType,
864
                                              Expr *SizeExpr,
865
                                              SourceLocation AttributeLoc);
866
867
  /// Build a new DependentAddressSpaceType or return the pointee
868
  /// type variable with the correct address space (retrieved from
869
  /// AddrSpaceExpr) applied to it. The former will be returned in cases
870
  /// where the address space remains dependent.
871
  ///
872
  /// By default, performs semantic analysis when building the type with address
873
  /// space applied. Subclasses may override this routine to provide different
874
  /// behavior.
875
  QualType RebuildDependentAddressSpaceType(QualType PointeeType,
876
                                            Expr *AddrSpaceExpr,
877
                                            SourceLocation AttributeLoc);
878
879
  /// Build a new function type.
880
  ///
881
  /// By default, performs semantic analysis when building the function type.
882
  /// Subclasses may override this routine to provide different behavior.
883
  QualType RebuildFunctionProtoType(QualType T,
884
                                    MutableArrayRef<QualType> ParamTypes,
885
                                    const FunctionProtoType::ExtProtoInfo &EPI);
886
887
  /// Build a new unprototyped function type.
888
  QualType RebuildFunctionNoProtoType(QualType ResultType);
889
890
  /// Rebuild an unresolved typename type, given the decl that
891
  /// the UnresolvedUsingTypenameDecl was transformed to.
892
  QualType RebuildUnresolvedUsingType(SourceLocation NameLoc, Decl *D);
893
894
  /// Build a new typedef type.
895
1.66M
  QualType RebuildTypedefType(TypedefNameDecl *Typedef) {
896
1.66M
    return SemaRef.Context.getTypeDeclType(Typedef);
897
1.66M
  }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildTypedefType(clang::TypedefNameDecl*)
Line
Count
Source
895
1
  QualType RebuildTypedefType(TypedefNameDecl *Typedef) {
896
1
    return SemaRef.Context.getTypeDeclType(Typedef);
897
1
  }
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildTypedefType(clang::TypedefNameDecl*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildTypedefType(clang::TypedefNameDecl*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildTypedefType(clang::TypedefNameDecl*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildTypedefType(clang::TypedefNameDecl*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildTypedefType(clang::TypedefNameDecl*)
Line
Count
Source
895
1.66M
  QualType RebuildTypedefType(TypedefNameDecl *Typedef) {
896
1.66M
    return SemaRef.Context.getTypeDeclType(Typedef);
897
1.66M
  }
898
899
  /// Build a new MacroDefined type.
900
  QualType RebuildMacroQualifiedType(QualType T,
901
23
                                     const IdentifierInfo *MacroII) {
902
23
    return SemaRef.Context.getMacroQualifiedType(T, MacroII);
903
23
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildMacroQualifiedType(clang::QualType, clang::IdentifierInfo const*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildMacroQualifiedType(clang::QualType, clang::IdentifierInfo const*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildMacroQualifiedType(clang::QualType, clang::IdentifierInfo const*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildMacroQualifiedType(clang::QualType, clang::IdentifierInfo const*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildMacroQualifiedType(clang::QualType, clang::IdentifierInfo const*)
SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildMacroQualifiedType(clang::QualType, clang::IdentifierInfo const*)
Line
Count
Source
901
8
                                     const IdentifierInfo *MacroII) {
902
8
    return SemaRef.Context.getMacroQualifiedType(T, MacroII);
903
8
  }
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildMacroQualifiedType(clang::QualType, clang::IdentifierInfo const*)
Line
Count
Source
901
15
                                     const IdentifierInfo *MacroII) {
902
15
    return SemaRef.Context.getMacroQualifiedType(T, MacroII);
903
15
  }
904
905
  /// Build a new class/struct/union type.
906
65.6k
  QualType RebuildRecordType(RecordDecl *Record) {
907
65.6k
    return SemaRef.Context.getTypeDeclType(Record);
908
65.6k
  }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildRecordType(clang::RecordDecl*)
Line
Count
Source
906
27
  QualType RebuildRecordType(RecordDecl *Record) {
907
27
    return SemaRef.Context.getTypeDeclType(Record);
908
27
  }
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildRecordType(clang::RecordDecl*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildRecordType(clang::RecordDecl*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildRecordType(clang::RecordDecl*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildRecordType(clang::RecordDecl*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildRecordType(clang::RecordDecl*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildRecordType(clang::RecordDecl*)
Line
Count
Source
906
65.6k
  QualType RebuildRecordType(RecordDecl *Record) {
907
65.6k
    return SemaRef.Context.getTypeDeclType(Record);
908
65.6k
  }
909
910
  /// Build a new Enum type.
911
130
  QualType RebuildEnumType(EnumDecl *Enum) {
912
130
    return SemaRef.Context.getTypeDeclType(Enum);
913
130
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildEnumType(clang::EnumDecl*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildEnumType(clang::EnumDecl*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildEnumType(clang::EnumDecl*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildEnumType(clang::EnumDecl*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildEnumType(clang::EnumDecl*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildEnumType(clang::EnumDecl*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildEnumType(clang::EnumDecl*)
Line
Count
Source
911
130
  QualType RebuildEnumType(EnumDecl *Enum) {
912
130
    return SemaRef.Context.getTypeDeclType(Enum);
913
130
  }
914
915
  /// Build a new typeof(expr) type.
916
  ///
917
  /// By default, performs semantic analysis when building the typeof type.
918
  /// Subclasses may override this routine to provide different behavior.
919
  QualType RebuildTypeOfExprType(Expr *Underlying, SourceLocation Loc);
920
921
  /// Build a new typeof(type) type.
922
  ///
923
  /// By default, builds a new TypeOfType with the given underlying type.
924
  QualType RebuildTypeOfType(QualType Underlying);
925
926
  /// Build a new unary transform type.
927
  QualType RebuildUnaryTransformType(QualType BaseType,
928
                                     UnaryTransformType::UTTKind UKind,
929
                                     SourceLocation Loc);
930
931
  /// Build a new C++11 decltype type.
932
  ///
933
  /// By default, performs semantic analysis when building the decltype type.
934
  /// Subclasses may override this routine to provide different behavior.
935
  QualType RebuildDecltypeType(Expr *Underlying, SourceLocation Loc);
936
937
  /// Build a new C++11 auto type.
938
  ///
939
  /// By default, builds a new AutoType with the given deduced type.
940
1.38k
  QualType RebuildAutoType(QualType Deduced, AutoTypeKeyword Keyword) {
941
1.38k
    // Note, IsDependent is always false here: we implicitly convert an 'auto'
942
1.38k
    // which has been deduced to a dependent type into an undeduced 'auto', so
943
1.38k
    // that we'll retry deduction after the transformation.
944
1.38k
    return SemaRef.Context.getAutoType(Deduced, Keyword,
945
1.38k
                                       /*IsDependent*/ false);
946
1.38k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildAutoType(clang::QualType, clang::AutoTypeKeyword)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildAutoType(clang::QualType, clang::AutoTypeKeyword)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildAutoType(clang::QualType, clang::AutoTypeKeyword)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildAutoType(clang::QualType, clang::AutoTypeKeyword)
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildAutoType(clang::QualType, clang::AutoTypeKeyword)
Line
Count
Source
940
9
  QualType RebuildAutoType(QualType Deduced, AutoTypeKeyword Keyword) {
941
9
    // Note, IsDependent is always false here: we implicitly convert an 'auto'
942
9
    // which has been deduced to a dependent type into an undeduced 'auto', so
943
9
    // that we'll retry deduction after the transformation.
944
9
    return SemaRef.Context.getAutoType(Deduced, Keyword,
945
9
                                       /*IsDependent*/ false);
946
9
  }
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildAutoType(clang::QualType, clang::AutoTypeKeyword)
Line
Count
Source
940
1.37k
  QualType RebuildAutoType(QualType Deduced, AutoTypeKeyword Keyword) {
941
1.37k
    // Note, IsDependent is always false here: we implicitly convert an 'auto'
942
1.37k
    // which has been deduced to a dependent type into an undeduced 'auto', so
943
1.37k
    // that we'll retry deduction after the transformation.
944
1.37k
    return SemaRef.Context.getAutoType(Deduced, Keyword,
945
1.37k
                                       /*IsDependent*/ false);
946
1.37k
  }
947
948
  /// By default, builds a new DeducedTemplateSpecializationType with the given
949
  /// deduced type.
950
  QualType RebuildDeducedTemplateSpecializationType(TemplateName Template,
951
5
      QualType Deduced) {
952
5
    return SemaRef.Context.getDeducedTemplateSpecializationType(
953
5
        Template, Deduced, /*IsDependent*/ false);
954
5
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildDeducedTemplateSpecializationType(clang::TemplateName, clang::QualType)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildDeducedTemplateSpecializationType(clang::TemplateName, clang::QualType)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildDeducedTemplateSpecializationType(clang::TemplateName, clang::QualType)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildDeducedTemplateSpecializationType(clang::TemplateName, clang::QualType)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildDeducedTemplateSpecializationType(clang::TemplateName, clang::QualType)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildDeducedTemplateSpecializationType(clang::TemplateName, clang::QualType)
Line
Count
Source
951
5
      QualType Deduced) {
952
5
    return SemaRef.Context.getDeducedTemplateSpecializationType(
953
5
        Template, Deduced, /*IsDependent*/ false);
954
5
  }
955
956
  /// Build a new template specialization type.
957
  ///
958
  /// By default, performs semantic analysis when building the template
959
  /// specialization type. Subclasses may override this routine to provide
960
  /// different behavior.
961
  QualType RebuildTemplateSpecializationType(TemplateName Template,
962
                                             SourceLocation TemplateLoc,
963
                                             TemplateArgumentListInfo &Args);
964
965
  /// Build a new parenthesized type.
966
  ///
967
  /// By default, builds a new ParenType type from the inner type.
968
  /// Subclasses may override this routine to provide different behavior.
969
5.80k
  QualType RebuildParenType(QualType InnerType) {
970
5.80k
    return SemaRef.BuildParenType(InnerType);
971
5.80k
  }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildParenType(clang::QualType)
Line
Count
Source
969
14
  QualType RebuildParenType(QualType InnerType) {
970
14
    return SemaRef.BuildParenType(InnerType);
971
14
  }
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildParenType(clang::QualType)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildParenType(clang::QualType)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildParenType(clang::QualType)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildParenType(clang::QualType)
SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildParenType(clang::QualType)
Line
Count
Source
969
116
  QualType RebuildParenType(QualType InnerType) {
970
116
    return SemaRef.BuildParenType(InnerType);
971
116
  }
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildParenType(clang::QualType)
Line
Count
Source
969
5.67k
  QualType RebuildParenType(QualType InnerType) {
970
5.67k
    return SemaRef.BuildParenType(InnerType);
971
5.67k
  }
972
973
  /// Build a new qualified name type.
974
  ///
975
  /// By default, builds a new ElaboratedType type from the keyword,
976
  /// the nested-name-specifier and the named type.
977
  /// Subclasses may override this routine to provide different behavior.
978
  QualType RebuildElaboratedType(SourceLocation KeywordLoc,
979
                                 ElaboratedTypeKeyword Keyword,
980
                                 NestedNameSpecifierLoc QualifierLoc,
981
30.0k
                                 QualType Named) {
982
30.0k
    return SemaRef.Context.getElaboratedType(Keyword,
983
30.0k
                                         QualifierLoc.getNestedNameSpecifier(),
984
30.0k
                                             Named);
985
30.0k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildElaboratedType(clang::SourceLocation, clang::ElaboratedTypeKeyword, clang::NestedNameSpecifierLoc, clang::QualType)
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildElaboratedType(clang::SourceLocation, clang::ElaboratedTypeKeyword, clang::NestedNameSpecifierLoc, clang::QualType)
Line
Count
Source
981
2
                                 QualType Named) {
982
2
    return SemaRef.Context.getElaboratedType(Keyword,
983
2
                                         QualifierLoc.getNestedNameSpecifier(),
984
2
                                             Named);
985
2
  }
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildElaboratedType(clang::SourceLocation, clang::ElaboratedTypeKeyword, clang::NestedNameSpecifierLoc, clang::QualType)
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildElaboratedType(clang::SourceLocation, clang::ElaboratedTypeKeyword, clang::NestedNameSpecifierLoc, clang::QualType)
Line
Count
Source
981
3
                                 QualType Named) {
982
3
    return SemaRef.Context.getElaboratedType(Keyword,
983
3
                                         QualifierLoc.getNestedNameSpecifier(),
984
3
                                             Named);
985
3
  }
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildElaboratedType(clang::SourceLocation, clang::ElaboratedTypeKeyword, clang::NestedNameSpecifierLoc, clang::QualType)
Line
Count
Source
981
6
                                 QualType Named) {
982
6
    return SemaRef.Context.getElaboratedType(Keyword,
983
6
                                         QualifierLoc.getNestedNameSpecifier(),
984
6
                                             Named);
985
6
  }
SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildElaboratedType(clang::SourceLocation, clang::ElaboratedTypeKeyword, clang::NestedNameSpecifierLoc, clang::QualType)
Line
Count
Source
981
29
                                 QualType Named) {
982
29
    return SemaRef.Context.getElaboratedType(Keyword,
983
29
                                         QualifierLoc.getNestedNameSpecifier(),
984
29
                                             Named);
985
29
  }
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildElaboratedType(clang::SourceLocation, clang::ElaboratedTypeKeyword, clang::NestedNameSpecifierLoc, clang::QualType)
Line
Count
Source
981
29.9k
                                 QualType Named) {
982
29.9k
    return SemaRef.Context.getElaboratedType(Keyword,
983
29.9k
                                         QualifierLoc.getNestedNameSpecifier(),
984
29.9k
                                             Named);
985
29.9k
  }
986
987
  /// Build a new typename type that refers to a template-id.
988
  ///
989
  /// By default, builds a new DependentNameType type from the
990
  /// nested-name-specifier and the given type. Subclasses may override
991
  /// this routine to provide different behavior.
992
  QualType RebuildDependentTemplateSpecializationType(
993
                                          ElaboratedTypeKeyword Keyword,
994
                                          NestedNameSpecifierLoc QualifierLoc,
995
                                          SourceLocation TemplateKWLoc,
996
                                          const IdentifierInfo *Name,
997
                                          SourceLocation NameLoc,
998
                                          TemplateArgumentListInfo &Args,
999
56.2k
                                          bool AllowInjectedClassName) {
1000
56.2k
    // Rebuild the template name.
1001
56.2k
    // TODO: avoid TemplateName abstraction
1002
56.2k
    CXXScopeSpec SS;
1003
56.2k
    SS.Adopt(QualifierLoc);
1004
56.2k
    TemplateName InstName = getDerived().RebuildTemplateName(
1005
56.2k
        SS, TemplateKWLoc, *Name, NameLoc, QualType(), nullptr,
1006
56.2k
        AllowInjectedClassName);
1007
56.2k
1008
56.2k
    if (InstName.isNull())
1009
4.55k
      return QualType();
1010
51.6k
1011
51.6k
    // If it's still dependent, make a dependent specialization.
1012
51.6k
    if (InstName.getAsDependentTemplateName())
1013
24.2k
      return SemaRef.Context.getDependentTemplateSpecializationType(Keyword,
1014
24.2k
                                          QualifierLoc.getNestedNameSpecifier(),
1015
24.2k
                                                                    Name,
1016
24.2k
                                                                    Args);
1017
27.4k
1018
27.4k
    // Otherwise, make an elaborated type wrapping a non-dependent
1019
27.4k
    // specialization.
1020
27.4k
    QualType T =
1021
27.4k
    getDerived().RebuildTemplateSpecializationType(InstName, NameLoc, Args);
1022
27.4k
    if (T.isNull()) 
return QualType()12
;
1023
27.4k
1024
27.4k
    if (Keyword == ETK_None && 
QualifierLoc.getNestedNameSpecifier() == nullptr14
)
1025
0
      return T;
1026
27.4k
1027
27.4k
    return SemaRef.Context.getElaboratedType(Keyword,
1028
27.4k
                                       QualifierLoc.getNestedNameSpecifier(),
1029
27.4k
                                             T);
1030
27.4k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildDependentTemplateSpecializationType(clang::ElaboratedTypeKeyword, clang::NestedNameSpecifierLoc, clang::SourceLocation, clang::IdentifierInfo const*, clang::SourceLocation, clang::TemplateArgumentListInfo&, bool)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildDependentTemplateSpecializationType(clang::ElaboratedTypeKeyword, clang::NestedNameSpecifierLoc, clang::SourceLocation, clang::IdentifierInfo const*, clang::SourceLocation, clang::TemplateArgumentListInfo&, bool)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildDependentTemplateSpecializationType(clang::ElaboratedTypeKeyword, clang::NestedNameSpecifierLoc, clang::SourceLocation, clang::IdentifierInfo const*, clang::SourceLocation, clang::TemplateArgumentListInfo&, bool)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildDependentTemplateSpecializationType(clang::ElaboratedTypeKeyword, clang::NestedNameSpecifierLoc, clang::SourceLocation, clang::IdentifierInfo const*, clang::SourceLocation, clang::TemplateArgumentListInfo&, bool)
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildDependentTemplateSpecializationType(clang::ElaboratedTypeKeyword, clang::NestedNameSpecifierLoc, clang::SourceLocation, clang::IdentifierInfo const*, clang::SourceLocation, clang::TemplateArgumentListInfo&, bool)
Line
Count
Source
999
12
                                          bool AllowInjectedClassName) {
1000
12
    // Rebuild the template name.
1001
12
    // TODO: avoid TemplateName abstraction
1002
12
    CXXScopeSpec SS;
1003
12
    SS.Adopt(QualifierLoc);
1004
12
    TemplateName InstName = getDerived().RebuildTemplateName(
1005
12
        SS, TemplateKWLoc, *Name, NameLoc, QualType(), nullptr,
1006
12
        AllowInjectedClassName);
1007
12
1008
12
    if (InstName.isNull())
1009
0
      return QualType();
1010
12
1011
12
    // If it's still dependent, make a dependent specialization.
1012
12
    if (InstName.getAsDependentTemplateName())
1013
4
      return SemaRef.Context.getDependentTemplateSpecializationType(Keyword,
1014
4
                                          QualifierLoc.getNestedNameSpecifier(),
1015
4
                                                                    Name,
1016
4
                                                                    Args);
1017
8
1018
8
    // Otherwise, make an elaborated type wrapping a non-dependent
1019
8
    // specialization.
1020
8
    QualType T =
1021
8
    getDerived().RebuildTemplateSpecializationType(InstName, NameLoc, Args);
1022
8
    if (T.isNull()) 
return QualType()0
;
1023
8
1024
8
    if (Keyword == ETK_None && 
QualifierLoc.getNestedNameSpecifier() == nullptr0
)
1025
0
      return T;
1026
8
1027
8
    return SemaRef.Context.getElaboratedType(Keyword,
1028
8
                                       QualifierLoc.getNestedNameSpecifier(),
1029
8
                                             T);
1030
8
  }
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildDependentTemplateSpecializationType(clang::ElaboratedTypeKeyword, clang::NestedNameSpecifierLoc, clang::SourceLocation, clang::IdentifierInfo const*, clang::SourceLocation, clang::TemplateArgumentListInfo&, bool)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildDependentTemplateSpecializationType(clang::ElaboratedTypeKeyword, clang::NestedNameSpecifierLoc, clang::SourceLocation, clang::IdentifierInfo const*, clang::SourceLocation, clang::TemplateArgumentListInfo&, bool)
Line
Count
Source
999
56.2k
                                          bool AllowInjectedClassName) {
1000
56.2k
    // Rebuild the template name.
1001
56.2k
    // TODO: avoid TemplateName abstraction
1002
56.2k
    CXXScopeSpec SS;
1003
56.2k
    SS.Adopt(QualifierLoc);
1004
56.2k
    TemplateName InstName = getDerived().RebuildTemplateName(
1005
56.2k
        SS, TemplateKWLoc, *Name, NameLoc, QualType(), nullptr,
1006
56.2k
        AllowInjectedClassName);
1007
56.2k
1008
56.2k
    if (InstName.isNull())
1009
4.55k
      return QualType();
1010
51.6k
1011
51.6k
    // If it's still dependent, make a dependent specialization.
1012
51.6k
    if (InstName.getAsDependentTemplateName())
1013
24.2k
      return SemaRef.Context.getDependentTemplateSpecializationType(Keyword,
1014
24.2k
                                          QualifierLoc.getNestedNameSpecifier(),
1015
24.2k
                                                                    Name,
1016
24.2k
                                                                    Args);
1017
27.4k
1018
27.4k
    // Otherwise, make an elaborated type wrapping a non-dependent
1019
27.4k
    // specialization.
1020
27.4k
    QualType T =
1021
27.4k
    getDerived().RebuildTemplateSpecializationType(InstName, NameLoc, Args);
1022
27.4k
    if (T.isNull()) 
return QualType()12
;
1023
27.4k
1024
27.4k
    if (Keyword == ETK_None && 
QualifierLoc.getNestedNameSpecifier() == nullptr14
)
1025
0
      return T;
1026
27.4k
1027
27.4k
    return SemaRef.Context.getElaboratedType(Keyword,
1028
27.4k
                                       QualifierLoc.getNestedNameSpecifier(),
1029
27.4k
                                             T);
1030
27.4k
  }
1031
1032
  /// Build a new typename type that refers to an identifier.
1033
  ///
1034
  /// By default, performs semantic analysis when building the typename type
1035
  /// (or elaborated type). Subclasses may override this routine to provide
1036
  /// different behavior.
1037
  QualType RebuildDependentNameType(ElaboratedTypeKeyword Keyword,
1038
                                    SourceLocation KeywordLoc,
1039
                                    NestedNameSpecifierLoc QualifierLoc,
1040
                                    const IdentifierInfo *Id,
1041
                                    SourceLocation IdLoc,
1042
1.60M
                                    bool DeducedTSTContext) {
1043
1.60M
    CXXScopeSpec SS;
1044
1.60M
    SS.Adopt(QualifierLoc);
1045
1.60M
1046
1.60M
    if (QualifierLoc.getNestedNameSpecifier()->isDependent()) {
1047
485k
      // If the name is still dependent, just build a new dependent name type.
1048
485k
      if (!SemaRef.computeDeclContext(SS))
1049
443k
        return SemaRef.Context.getDependentNameType(Keyword,
1050
443k
                                          QualifierLoc.getNestedNameSpecifier(),
1051
443k
                                                    Id);
1052
1.16M
    }
1053
1.16M
1054
1.16M
    if (Keyword == ETK_None || 
Keyword == ETK_Typename1.15M
) {
1055
1.16M
      QualType T = SemaRef.CheckTypenameType(Keyword, KeywordLoc, QualifierLoc,
1056
1.16M
                                             *Id, IdLoc);
1057
1.16M
      // If a dependent name resolves to a deduced template specialization type,
1058
1.16M
      // check that we're in one of the syntactic contexts permitting it.
1059
1.16M
      if (!DeducedTSTContext) {
1060
1.14M
        if (auto *Deduced = dyn_cast_or_null<DeducedTemplateSpecializationType>(
1061
9
                T.isNull() ? nullptr : T->getContainedDeducedType())) {
1062
9
          SemaRef.Diag(IdLoc, diag::err_dependent_deduced_tst)
1063
9
            << (int)SemaRef.getTemplateNameKindForDiagnostics(
1064
9
                   Deduced->getTemplateName())
1065
9
            << QualType(QualifierLoc.getNestedNameSpecifier()->getAsType(), 0);
1066
9
          if (auto *TD = Deduced->getTemplateName().getAsTemplateDecl())
1067
9
            SemaRef.Diag(TD->getLocation(), diag::note_template_decl_here);
1068
9
          return QualType();
1069
9
        }
1070
1.16M
      }
1071
1.16M
      return T;
1072
1.16M
    }
1073
47
1074
47
    TagTypeKind Kind = TypeWithKeyword::getTagTypeKindForKeyword(Keyword);
1075
47
1076
47
    // We had a dependent elaborated-type-specifier that has been transformed
1077
47
    // into a non-dependent elaborated-type-specifier. Find the tag we're
1078
47
    // referring to.
1079
47
    LookupResult Result(SemaRef, Id, IdLoc, Sema::LookupTagName);
1080
47
    DeclContext *DC = SemaRef.computeDeclContext(SS, false);
1081
47
    if (!DC)
1082
0
      return QualType();
1083
47
1084
47
    if (SemaRef.RequireCompleteDeclContext(SS, DC))
1085
2
      return QualType();
1086
45
1087
45
    TagDecl *Tag = nullptr;
1088
45
    SemaRef.LookupQualifiedName(Result, DC);
1089
45
    switch (Result.getResultKind()) {
1090
45
      case LookupResult::NotFound:
1091
4
      case LookupResult::NotFoundInCurrentInstantiation:
1092
4
        break;
1093
4
1094
41
      case LookupResult::Found:
1095
41
        Tag = Result.getAsSingle<TagDecl>();
1096
41
        break;
1097
4
1098
4
      case LookupResult::FoundOverloaded:
1099
0
      case LookupResult::FoundUnresolvedValue:
1100
0
        llvm_unreachable("Tag lookup cannot find non-tags");
1101
0
1102
0
      case LookupResult::Ambiguous:
1103
0
        // Let the LookupResult structure handle ambiguities.
1104
0
        return QualType();
1105
45
    }
1106
45
1107
45
    if (!Tag) {
1108
10
      // Check where the name exists but isn't a tag type and use that to emit
1109
10
      // better diagnostics.
1110
10
      LookupResult Result(SemaRef, Id, IdLoc, Sema::LookupTagName);
1111
10
      SemaRef.LookupQualifiedName(Result, DC);
1112
10
      switch (Result.getResultKind()) {
1113
10
        case LookupResult::Found:
1114
6
        case LookupResult::FoundOverloaded:
1115
6
        case LookupResult::FoundUnresolvedValue: {
1116
6
          NamedDecl *SomeDecl = Result.getRepresentativeDecl();
1117
6
          Sema::NonTagKind NTK = SemaRef.getNonTagTypeDeclKind(SomeDecl, Kind);
1118
6
          SemaRef.Diag(IdLoc, diag::err_tag_reference_non_tag) << SomeDecl
1119
6
                                                               << NTK << Kind;
1120
6
          SemaRef.Diag(SomeDecl->getLocation(), diag::note_declared_at);
1121
6
          break;
1122
6
        }
1123
6
        default:
1124
4
          SemaRef.Diag(IdLoc, diag::err_not_tag_in_scope)
1125
4
              << Kind << Id << DC << QualifierLoc.getSourceRange();
1126
4
          break;
1127
10
      }
1128
10
      return QualType();
1129
10
    }
1130
35
1131
35
    if (!SemaRef.isAcceptableTagRedeclaration(Tag, Kind, /*isDefinition*/false,
1132
35
                                              IdLoc, Id)) {
1133
4
      SemaRef.Diag(KeywordLoc, diag::err_use_with_wrong_tag) << Id;
1134
4
      SemaRef.Diag(Tag->getLocation(), diag::note_previous_use);
1135
4
      return QualType();
1136
4
    }
1137
31
1138
31
    // Build the elaborated-type-specifier type.
1139
31
    QualType T = SemaRef.Context.getTypeDeclType(Tag);
1140
31
    return SemaRef.Context.getElaboratedType(Keyword,
1141
31
                                         QualifierLoc.getNestedNameSpecifier(),
1142
31
                                             T);
1143
31
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildDependentNameType(clang::ElaboratedTypeKeyword, clang::SourceLocation, clang::NestedNameSpecifierLoc, clang::IdentifierInfo const*, clang::SourceLocation, bool)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildDependentNameType(clang::ElaboratedTypeKeyword, clang::SourceLocation, clang::NestedNameSpecifierLoc, clang::IdentifierInfo const*, clang::SourceLocation, bool)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildDependentNameType(clang::ElaboratedTypeKeyword, clang::SourceLocation, clang::NestedNameSpecifierLoc, clang::IdentifierInfo const*, clang::SourceLocation, bool)
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildDependentNameType(clang::ElaboratedTypeKeyword, clang::SourceLocation, clang::NestedNameSpecifierLoc, clang::IdentifierInfo const*, clang::SourceLocation, bool)
Line
Count
Source
1042
5
                                    bool DeducedTSTContext) {
1043
5
    CXXScopeSpec SS;
1044
5
    SS.Adopt(QualifierLoc);
1045
5
1046
5
    if (QualifierLoc.getNestedNameSpecifier()->isDependent()) {
1047
5
      // If the name is still dependent, just build a new dependent name type.
1048
5
      if (!SemaRef.computeDeclContext(SS))
1049
5
        return SemaRef.Context.getDependentNameType(Keyword,
1050
5
                                          QualifierLoc.getNestedNameSpecifier(),
1051
5
                                                    Id);
1052
0
    }
1053
0
1054
0
    if (Keyword == ETK_None || Keyword == ETK_Typename) {
1055
0
      QualType T = SemaRef.CheckTypenameType(Keyword, KeywordLoc, QualifierLoc,
1056
0
                                             *Id, IdLoc);
1057
0
      // If a dependent name resolves to a deduced template specialization type,
1058
0
      // check that we're in one of the syntactic contexts permitting it.
1059
0
      if (!DeducedTSTContext) {
1060
0
        if (auto *Deduced = dyn_cast_or_null<DeducedTemplateSpecializationType>(
1061
0
                T.isNull() ? nullptr : T->getContainedDeducedType())) {
1062
0
          SemaRef.Diag(IdLoc, diag::err_dependent_deduced_tst)
1063
0
            << (int)SemaRef.getTemplateNameKindForDiagnostics(
1064
0
                   Deduced->getTemplateName())
1065
0
            << QualType(QualifierLoc.getNestedNameSpecifier()->getAsType(), 0);
1066
0
          if (auto *TD = Deduced->getTemplateName().getAsTemplateDecl())
1067
0
            SemaRef.Diag(TD->getLocation(), diag::note_template_decl_here);
1068
0
          return QualType();
1069
0
        }
1070
0
      }
1071
0
      return T;
1072
0
    }
1073
0
1074
0
    TagTypeKind Kind = TypeWithKeyword::getTagTypeKindForKeyword(Keyword);
1075
0
1076
0
    // We had a dependent elaborated-type-specifier that has been transformed
1077
0
    // into a non-dependent elaborated-type-specifier. Find the tag we're
1078
0
    // referring to.
1079
0
    LookupResult Result(SemaRef, Id, IdLoc, Sema::LookupTagName);
1080
0
    DeclContext *DC = SemaRef.computeDeclContext(SS, false);
1081
0
    if (!DC)
1082
0
      return QualType();
1083
0
1084
0
    if (SemaRef.RequireCompleteDeclContext(SS, DC))
1085
0
      return QualType();
1086
0
1087
0
    TagDecl *Tag = nullptr;
1088
0
    SemaRef.LookupQualifiedName(Result, DC);
1089
0
    switch (Result.getResultKind()) {
1090
0
      case LookupResult::NotFound:
1091
0
      case LookupResult::NotFoundInCurrentInstantiation:
1092
0
        break;
1093
0
1094
0
      case LookupResult::Found:
1095
0
        Tag = Result.getAsSingle<TagDecl>();
1096
0
        break;
1097
0
1098
0
      case LookupResult::FoundOverloaded:
1099
0
      case LookupResult::FoundUnresolvedValue:
1100
0
        llvm_unreachable("Tag lookup cannot find non-tags");
1101
0
1102
0
      case LookupResult::Ambiguous:
1103
0
        // Let the LookupResult structure handle ambiguities.
1104
0
        return QualType();
1105
0
    }
1106
0
1107
0
    if (!Tag) {
1108
0
      // Check where the name exists but isn't a tag type and use that to emit
1109
0
      // better diagnostics.
1110
0
      LookupResult Result(SemaRef, Id, IdLoc, Sema::LookupTagName);
1111
0
      SemaRef.LookupQualifiedName(Result, DC);
1112
0
      switch (Result.getResultKind()) {
1113
0
        case LookupResult::Found:
1114
0
        case LookupResult::FoundOverloaded:
1115
0
        case LookupResult::FoundUnresolvedValue: {
1116
0
          NamedDecl *SomeDecl = Result.getRepresentativeDecl();
1117
0
          Sema::NonTagKind NTK = SemaRef.getNonTagTypeDeclKind(SomeDecl, Kind);
1118
0
          SemaRef.Diag(IdLoc, diag::err_tag_reference_non_tag) << SomeDecl
1119
0
                                                               << NTK << Kind;
1120
0
          SemaRef.Diag(SomeDecl->getLocation(), diag::note_declared_at);
1121
0
          break;
1122
0
        }
1123
0
        default:
1124
0
          SemaRef.Diag(IdLoc, diag::err_not_tag_in_scope)
1125
0
              << Kind << Id << DC << QualifierLoc.getSourceRange();
1126
0
          break;
1127
0
      }
1128
0
      return QualType();
1129
0
    }
1130
0
1131
0
    if (!SemaRef.isAcceptableTagRedeclaration(Tag, Kind, /*isDefinition*/false,
1132
0
                                              IdLoc, Id)) {
1133
0
      SemaRef.Diag(KeywordLoc, diag::err_use_with_wrong_tag) << Id;
1134
0
      SemaRef.Diag(Tag->getLocation(), diag::note_previous_use);
1135
0
      return QualType();
1136
0
    }
1137
0
1138
0
    // Build the elaborated-type-specifier type.
1139
0
    QualType T = SemaRef.Context.getTypeDeclType(Tag);
1140
0
    return SemaRef.Context.getElaboratedType(Keyword,
1141
0
                                         QualifierLoc.getNestedNameSpecifier(),
1142
0
                                             T);
1143
0
  }
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildDependentNameType(clang::ElaboratedTypeKeyword, clang::SourceLocation, clang::NestedNameSpecifierLoc, clang::IdentifierInfo const*, clang::SourceLocation, bool)
Line
Count
Source
1042
54.9k
                                    bool DeducedTSTContext) {
1043
54.9k
    CXXScopeSpec SS;
1044
54.9k
    SS.Adopt(QualifierLoc);
1045
54.9k
1046
54.9k
    if (QualifierLoc.getNestedNameSpecifier()->isDependent()) {
1047
54.9k
      // If the name is still dependent, just build a new dependent name type.
1048
54.9k
      if (!SemaRef.computeDeclContext(SS))
1049
15.9k
        return SemaRef.Context.getDependentNameType(Keyword,
1050
15.9k
                                          QualifierLoc.getNestedNameSpecifier(),
1051
15.9k
                                                    Id);
1052
38.9k
    }
1053
38.9k
1054
38.9k
    if (Keyword == ETK_None || 
Keyword == ETK_Typename38.9k
) {
1055
38.9k
      QualType T = SemaRef.CheckTypenameType(Keyword, KeywordLoc, QualifierLoc,
1056
38.9k
                                             *Id, IdLoc);
1057
38.9k
      // If a dependent name resolves to a deduced template specialization type,
1058
38.9k
      // check that we're in one of the syntactic contexts permitting it.
1059
38.9k
      if (!DeducedTSTContext) {
1060
38.9k
        if (auto *Deduced = dyn_cast_or_null<DeducedTemplateSpecializationType>(
1061
0
                T.isNull() ? nullptr : T->getContainedDeducedType())) {
1062
0
          SemaRef.Diag(IdLoc, diag::err_dependent_deduced_tst)
1063
0
            << (int)SemaRef.getTemplateNameKindForDiagnostics(
1064
0
                   Deduced->getTemplateName())
1065
0
            << QualType(QualifierLoc.getNestedNameSpecifier()->getAsType(), 0);
1066
0
          if (auto *TD = Deduced->getTemplateName().getAsTemplateDecl())
1067
0
            SemaRef.Diag(TD->getLocation(), diag::note_template_decl_here);
1068
0
          return QualType();
1069
0
        }
1070
38.9k
      }
1071
38.9k
      return T;
1072
38.9k
    }
1073
2
1074
2
    TagTypeKind Kind = TypeWithKeyword::getTagTypeKindForKeyword(Keyword);
1075
2
1076
2
    // We had a dependent elaborated-type-specifier that has been transformed
1077
2
    // into a non-dependent elaborated-type-specifier. Find the tag we're
1078
2
    // referring to.
1079
2
    LookupResult Result(SemaRef, Id, IdLoc, Sema::LookupTagName);
1080
2
    DeclContext *DC = SemaRef.computeDeclContext(SS, false);
1081
2
    if (!DC)
1082
0
      return QualType();
1083
2
1084
2
    if (SemaRef.RequireCompleteDeclContext(SS, DC))
1085
0
      return QualType();
1086
2
1087
2
    TagDecl *Tag = nullptr;
1088
2
    SemaRef.LookupQualifiedName(Result, DC);
1089
2
    switch (Result.getResultKind()) {
1090
2
      case LookupResult::NotFound:
1091
0
      case LookupResult::NotFoundInCurrentInstantiation:
1092
0
        break;
1093
0
1094
2
      case LookupResult::Found:
1095
2
        Tag = Result.getAsSingle<TagDecl>();
1096
2
        break;
1097
0
1098
0
      case LookupResult::FoundOverloaded:
1099
0
      case LookupResult::FoundUnresolvedValue:
1100
0
        llvm_unreachable("Tag lookup cannot find non-tags");
1101
0
1102
0
      case LookupResult::Ambiguous:
1103
0
        // Let the LookupResult structure handle ambiguities.
1104
0
        return QualType();
1105
2
    }
1106
2
1107
2
    if (!Tag) {
1108
0
      // Check where the name exists but isn't a tag type and use that to emit
1109
0
      // better diagnostics.
1110
0
      LookupResult Result(SemaRef, Id, IdLoc, Sema::LookupTagName);
1111
0
      SemaRef.LookupQualifiedName(Result, DC);
1112
0
      switch (Result.getResultKind()) {
1113
0
        case LookupResult::Found:
1114
0
        case LookupResult::FoundOverloaded:
1115
0
        case LookupResult::FoundUnresolvedValue: {
1116
0
          NamedDecl *SomeDecl = Result.getRepresentativeDecl();
1117
0
          Sema::NonTagKind NTK = SemaRef.getNonTagTypeDeclKind(SomeDecl, Kind);
1118
0
          SemaRef.Diag(IdLoc, diag::err_tag_reference_non_tag) << SomeDecl
1119
0
                                                               << NTK << Kind;
1120
0
          SemaRef.Diag(SomeDecl->getLocation(), diag::note_declared_at);
1121
0
          break;
1122
0
        }
1123
0
        default:
1124
0
          SemaRef.Diag(IdLoc, diag::err_not_tag_in_scope)
1125
0
              << Kind << Id << DC << QualifierLoc.getSourceRange();
1126
0
          break;
1127
0
      }
1128
0
      return QualType();
1129
0
    }
1130
2
1131
2
    if (!SemaRef.isAcceptableTagRedeclaration(Tag, Kind, /*isDefinition*/false,
1132
2
                                              IdLoc, Id)) {
1133
0
      SemaRef.Diag(KeywordLoc, diag::err_use_with_wrong_tag) << Id;
1134
0
      SemaRef.Diag(Tag->getLocation(), diag::note_previous_use);
1135
0
      return QualType();
1136
0
    }
1137
2
1138
2
    // Build the elaborated-type-specifier type.
1139
2
    QualType T = SemaRef.Context.getTypeDeclType(Tag);
1140
2
    return SemaRef.Context.getElaboratedType(Keyword,
1141
2
                                         QualifierLoc.getNestedNameSpecifier(),
1142
2
                                             T);
1143
2
  }
SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildDependentNameType(clang::ElaboratedTypeKeyword, clang::SourceLocation, clang::NestedNameSpecifierLoc, clang::IdentifierInfo const*, clang::SourceLocation, bool)
Line
Count
Source
1042
8
                                    bool DeducedTSTContext) {
1043
8
    CXXScopeSpec SS;
1044
8
    SS.Adopt(QualifierLoc);
1045
8
1046
8
    if (QualifierLoc.getNestedNameSpecifier()->isDependent()) {
1047
8
      // If the name is still dependent, just build a new dependent name type.
1048
8
      if (!SemaRef.computeDeclContext(SS))
1049
8
        return SemaRef.Context.getDependentNameType(Keyword,
1050
8
                                          QualifierLoc.getNestedNameSpecifier(),
1051
8
                                                    Id);
1052
0
    }
1053
0
1054
0
    if (Keyword == ETK_None || Keyword == ETK_Typename) {
1055
0
      QualType T = SemaRef.CheckTypenameType(Keyword, KeywordLoc, QualifierLoc,
1056
0
                                             *Id, IdLoc);
1057
0
      // If a dependent name resolves to a deduced template specialization type,
1058
0
      // check that we're in one of the syntactic contexts permitting it.
1059
0
      if (!DeducedTSTContext) {
1060
0
        if (auto *Deduced = dyn_cast_or_null<DeducedTemplateSpecializationType>(
1061
0
                T.isNull() ? nullptr : T->getContainedDeducedType())) {
1062
0
          SemaRef.Diag(IdLoc, diag::err_dependent_deduced_tst)
1063
0
            << (int)SemaRef.getTemplateNameKindForDiagnostics(
1064
0
                   Deduced->getTemplateName())
1065
0
            << QualType(QualifierLoc.getNestedNameSpecifier()->getAsType(), 0);
1066
0
          if (auto *TD = Deduced->getTemplateName().getAsTemplateDecl())
1067
0
            SemaRef.Diag(TD->getLocation(), diag::note_template_decl_here);
1068
0
          return QualType();
1069
0
        }
1070
0
      }
1071
0
      return T;
1072
0
    }
1073
0
1074
0
    TagTypeKind Kind = TypeWithKeyword::getTagTypeKindForKeyword(Keyword);
1075
0
1076
0
    // We had a dependent elaborated-type-specifier that has been transformed
1077
0
    // into a non-dependent elaborated-type-specifier. Find the tag we're
1078
0
    // referring to.
1079
0
    LookupResult Result(SemaRef, Id, IdLoc, Sema::LookupTagName);
1080
0
    DeclContext *DC = SemaRef.computeDeclContext(SS, false);
1081
0
    if (!DC)
1082
0
      return QualType();
1083
0
1084
0
    if (SemaRef.RequireCompleteDeclContext(SS, DC))
1085
0
      return QualType();
1086
0
1087
0
    TagDecl *Tag = nullptr;
1088
0
    SemaRef.LookupQualifiedName(Result, DC);
1089
0
    switch (Result.getResultKind()) {
1090
0
      case LookupResult::NotFound:
1091
0
      case LookupResult::NotFoundInCurrentInstantiation:
1092
0
        break;
1093
0
1094
0
      case LookupResult::Found:
1095
0
        Tag = Result.getAsSingle<TagDecl>();
1096
0
        break;
1097
0
1098
0
      case LookupResult::FoundOverloaded:
1099
0
      case LookupResult::FoundUnresolvedValue:
1100
0
        llvm_unreachable("Tag lookup cannot find non-tags");
1101
0
1102
0
      case LookupResult::Ambiguous:
1103
0
        // Let the LookupResult structure handle ambiguities.
1104
0
        return QualType();
1105
0
    }
1106
0
1107
0
    if (!Tag) {
1108
0
      // Check where the name exists but isn't a tag type and use that to emit
1109
0
      // better diagnostics.
1110
0
      LookupResult Result(SemaRef, Id, IdLoc, Sema::LookupTagName);
1111
0
      SemaRef.LookupQualifiedName(Result, DC);
1112
0
      switch (Result.getResultKind()) {
1113
0
        case LookupResult::Found:
1114
0
        case LookupResult::FoundOverloaded:
1115
0
        case LookupResult::FoundUnresolvedValue: {
1116
0
          NamedDecl *SomeDecl = Result.getRepresentativeDecl();
1117
0
          Sema::NonTagKind NTK = SemaRef.getNonTagTypeDeclKind(SomeDecl, Kind);
1118
0
          SemaRef.Diag(IdLoc, diag::err_tag_reference_non_tag) << SomeDecl
1119
0
                                                               << NTK << Kind;
1120
0
          SemaRef.Diag(SomeDecl->getLocation(), diag::note_declared_at);
1121
0
          break;
1122
0
        }
1123
0
        default:
1124
0
          SemaRef.Diag(IdLoc, diag::err_not_tag_in_scope)
1125
0
              << Kind << Id << DC << QualifierLoc.getSourceRange();
1126
0
          break;
1127
0
      }
1128
0
      return QualType();
1129
0
    }
1130
0
1131
0
    if (!SemaRef.isAcceptableTagRedeclaration(Tag, Kind, /*isDefinition*/false,
1132
0
                                              IdLoc, Id)) {
1133
0
      SemaRef.Diag(KeywordLoc, diag::err_use_with_wrong_tag) << Id;
1134
0
      SemaRef.Diag(Tag->getLocation(), diag::note_previous_use);
1135
0
      return QualType();
1136
0
    }
1137
0
1138
0
    // Build the elaborated-type-specifier type.
1139
0
    QualType T = SemaRef.Context.getTypeDeclType(Tag);
1140
0
    return SemaRef.Context.getElaboratedType(Keyword,
1141
0
                                         QualifierLoc.getNestedNameSpecifier(),
1142
0
                                             T);
1143
0
  }
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildDependentNameType(clang::ElaboratedTypeKeyword, clang::SourceLocation, clang::NestedNameSpecifierLoc, clang::IdentifierInfo const*, clang::SourceLocation, bool)
Line
Count
Source
1042
1.54M
                                    bool DeducedTSTContext) {
1043
1.54M
    CXXScopeSpec SS;
1044
1.54M
    SS.Adopt(QualifierLoc);
1045
1.54M
1046
1.54M
    if (QualifierLoc.getNestedNameSpecifier()->isDependent()) {
1047
430k
      // If the name is still dependent, just build a new dependent name type.
1048
430k
      if (!SemaRef.computeDeclContext(SS))
1049
427k
        return SemaRef.Context.getDependentNameType(Keyword,
1050
427k
                                          QualifierLoc.getNestedNameSpecifier(),
1051
427k
                                                    Id);
1052
1.12M
    }
1053
1.12M
1054
1.12M
    if (Keyword == ETK_None || 
Keyword == ETK_Typename1.12M
) {
1055
1.12M
      QualType T = SemaRef.CheckTypenameType(Keyword, KeywordLoc, QualifierLoc,
1056
1.12M
                                             *Id, IdLoc);
1057
1.12M
      // If a dependent name resolves to a deduced template specialization type,
1058
1.12M
      // check that we're in one of the syntactic contexts permitting it.
1059
1.12M
      if (!DeducedTSTContext) {
1060
1.10M
        if (auto *Deduced = dyn_cast_or_null<DeducedTemplateSpecializationType>(
1061
9
                T.isNull() ? nullptr : T->getContainedDeducedType())) {
1062
9
          SemaRef.Diag(IdLoc, diag::err_dependent_deduced_tst)
1063
9
            << (int)SemaRef.getTemplateNameKindForDiagnostics(
1064
9
                   Deduced->getTemplateName())
1065
9
            << QualType(QualifierLoc.getNestedNameSpecifier()->getAsType(), 0);
1066
9
          if (auto *TD = Deduced->getTemplateName().getAsTemplateDecl())
1067
9
            SemaRef.Diag(TD->getLocation(), diag::note_template_decl_here);
1068
9
          return QualType();
1069
9
        }
1070
1.12M
      }
1071
1.12M
      return T;
1072
1.12M
    }
1073
45
1074
45
    TagTypeKind Kind = TypeWithKeyword::getTagTypeKindForKeyword(Keyword);
1075
45
1076
45
    // We had a dependent elaborated-type-specifier that has been transformed
1077
45
    // into a non-dependent elaborated-type-specifier. Find the tag we're
1078
45
    // referring to.
1079
45
    LookupResult Result(SemaRef, Id, IdLoc, Sema::LookupTagName);
1080
45
    DeclContext *DC = SemaRef.computeDeclContext(SS, false);
1081
45
    if (!DC)
1082
0
      return QualType();
1083
45
1084
45
    if (SemaRef.RequireCompleteDeclContext(SS, DC))
1085
2
      return QualType();
1086
43
1087
43
    TagDecl *Tag = nullptr;
1088
43
    SemaRef.LookupQualifiedName(Result, DC);
1089
43
    switch (Result.getResultKind()) {
1090
43
      case LookupResult::NotFound:
1091
4
      case LookupResult::NotFoundInCurrentInstantiation:
1092
4
        break;
1093
4
1094
39
      case LookupResult::Found:
1095
39
        Tag = Result.getAsSingle<TagDecl>();
1096
39
        break;
1097
4
1098
4
      case LookupResult::FoundOverloaded:
1099
0
      case LookupResult::FoundUnresolvedValue:
1100
0
        llvm_unreachable("Tag lookup cannot find non-tags");
1101
0
1102
0
      case LookupResult::Ambiguous:
1103
0
        // Let the LookupResult structure handle ambiguities.
1104
0
        return QualType();
1105
43
    }
1106
43
1107
43
    if (!Tag) {
1108
10
      // Check where the name exists but isn't a tag type and use that to emit
1109
10
      // better diagnostics.
1110
10
      LookupResult Result(SemaRef, Id, IdLoc, Sema::LookupTagName);
1111
10
      SemaRef.LookupQualifiedName(Result, DC);
1112
10
      switch (Result.getResultKind()) {
1113
10
        case LookupResult::Found:
1114
6
        case LookupResult::FoundOverloaded:
1115
6
        case LookupResult::FoundUnresolvedValue: {
1116
6
          NamedDecl *SomeDecl = Result.getRepresentativeDecl();
1117
6
          Sema::NonTagKind NTK = SemaRef.getNonTagTypeDeclKind(SomeDecl, Kind);
1118
6
          SemaRef.Diag(IdLoc, diag::err_tag_reference_non_tag) << SomeDecl
1119
6
                                                               << NTK << Kind;
1120
6
          SemaRef.Diag(SomeDecl->getLocation(), diag::note_declared_at);
1121
6
          break;
1122
6
        }
1123
6
        default:
1124
4
          SemaRef.Diag(IdLoc, diag::err_not_tag_in_scope)
1125
4
              << Kind << Id << DC << QualifierLoc.getSourceRange();
1126
4
          break;
1127
10
      }
1128
10
      return QualType();
1129
10
    }
1130
33
1131
33
    if (!SemaRef.isAcceptableTagRedeclaration(Tag, Kind, /*isDefinition*/false,
1132
33
                                              IdLoc, Id)) {
1133
4
      SemaRef.Diag(KeywordLoc, diag::err_use_with_wrong_tag) << Id;
1134
4
      SemaRef.Diag(Tag->getLocation(), diag::note_previous_use);
1135
4
      return QualType();
1136
4
    }
1137
29
1138
29
    // Build the elaborated-type-specifier type.
1139
29
    QualType T = SemaRef.Context.getTypeDeclType(Tag);
1140
29
    return SemaRef.Context.getElaboratedType(Keyword,
1141
29
                                         QualifierLoc.getNestedNameSpecifier(),
1142
29
                                             T);
1143
29
  }
1144
1145
  /// Build a new pack expansion type.
1146
  ///
1147
  /// By default, builds a new PackExpansionType type from the given pattern.
1148
  /// Subclasses may override this routine to provide different behavior.
1149
  QualType RebuildPackExpansionType(QualType Pattern,
1150
                                    SourceRange PatternRange,
1151
                                    SourceLocation EllipsisLoc,
1152
175
                                    Optional<unsigned> NumExpansions) {
1153
175
    return getSema().CheckPackExpansion(Pattern, PatternRange, EllipsisLoc,
1154
175
                                        NumExpansions);
1155
175
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildPackExpansionType(clang::QualType, clang::SourceRange, clang::SourceLocation, llvm::Optional<unsigned int>)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildPackExpansionType(clang::QualType, clang::SourceRange, clang::SourceLocation, llvm::Optional<unsigned int>)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildPackExpansionType(clang::QualType, clang::SourceRange, clang::SourceLocation, llvm::Optional<unsigned int>)
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildPackExpansionType(clang::QualType, clang::SourceRange, clang::SourceLocation, llvm::Optional<unsigned int>)
Line
Count
Source
1152
2
                                    Optional<unsigned> NumExpansions) {
1153
2
    return getSema().CheckPackExpansion(Pattern, PatternRange, EllipsisLoc,
1154
2
                                        NumExpansions);
1155
2
  }
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildPackExpansionType(clang::QualType, clang::SourceRange, clang::SourceLocation, llvm::Optional<unsigned int>)
SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildPackExpansionType(clang::QualType, clang::SourceRange, clang::SourceLocation, llvm::Optional<unsigned int>)
Line
Count
Source
1152
50
                                    Optional<unsigned> NumExpansions) {
1153
50
    return getSema().CheckPackExpansion(Pattern, PatternRange, EllipsisLoc,
1154
50
                                        NumExpansions);
1155
50
  }
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildPackExpansionType(clang::QualType, clang::SourceRange, clang::SourceLocation, llvm::Optional<unsigned int>)
Line
Count
Source
1152
123
                                    Optional<unsigned> NumExpansions) {
1153
123
    return getSema().CheckPackExpansion(Pattern, PatternRange, EllipsisLoc,
1154
123
                                        NumExpansions);
1155
123
  }
1156
1157
  /// Build a new atomic type given its value type.
1158
  ///
1159
  /// By default, performs semantic analysis when building the atomic type.
1160
  /// Subclasses may override this routine to provide different behavior.
1161
  QualType RebuildAtomicType(QualType ValueType, SourceLocation KWLoc);
1162
1163
  /// Build a new pipe type given its value type.
1164
  QualType RebuildPipeType(QualType ValueType, SourceLocation KWLoc,
1165
                           bool isReadPipe);
1166
1167
  /// Build a new template name given a nested name specifier, a flag
1168
  /// indicating whether the "template" keyword was provided, and the template
1169
  /// that the template name refers to.
1170
  ///
1171
  /// By default, builds the new template name directly. Subclasses may override
1172
  /// this routine to provide different behavior.
1173
  TemplateName RebuildTemplateName(CXXScopeSpec &SS,
1174
                                   bool TemplateKW,
1175
                                   TemplateDecl *Template);
1176
1177
  /// Build a new template name given a nested name specifier and the
1178
  /// name that is referred to as a template.
1179
  ///
1180
  /// By default, performs semantic analysis to determine whether the name can
1181
  /// be resolved to a specific template, then builds the appropriate kind of
1182
  /// template name. Subclasses may override this routine to provide different
1183
  /// behavior.
1184
  TemplateName RebuildTemplateName(CXXScopeSpec &SS,
1185
                                   SourceLocation TemplateKWLoc,
1186
                                   const IdentifierInfo &Name,
1187
                                   SourceLocation NameLoc, QualType ObjectType,
1188
                                   NamedDecl *FirstQualifierInScope,
1189
                                   bool AllowInjectedClassName);
1190
1191
  /// Build a new template name given a nested name specifier and the
1192
  /// overloaded operator name that is referred to as a template.
1193
  ///
1194
  /// By default, performs semantic analysis to determine whether the name can
1195
  /// be resolved to a specific template, then builds the appropriate kind of
1196
  /// template name. Subclasses may override this routine to provide different
1197
  /// behavior.
1198
  TemplateName RebuildTemplateName(CXXScopeSpec &SS,
1199
                                   SourceLocation TemplateKWLoc,
1200
                                   OverloadedOperatorKind Operator,
1201
                                   SourceLocation NameLoc, QualType ObjectType,
1202
                                   bool AllowInjectedClassName);
1203
1204
  /// Build a new template name given a template template parameter pack
1205
  /// and the
1206
  ///
1207
  /// By default, performs semantic analysis to determine whether the name can
1208
  /// be resolved to a specific template, then builds the appropriate kind of
1209
  /// template name. Subclasses may override this routine to provide different
1210
  /// behavior.
1211
  TemplateName RebuildTemplateName(TemplateTemplateParmDecl *Param,
1212
0
                                   const TemplateArgument &ArgPack) {
1213
0
    return getSema().Context.getSubstTemplateTemplateParmPack(Param, ArgPack);
1214
0
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildTemplateName(clang::TemplateTemplateParmDecl*, clang::TemplateArgument const&)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildTemplateName(clang::TemplateTemplateParmDecl*, clang::TemplateArgument const&)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildTemplateName(clang::TemplateTemplateParmDecl*, clang::TemplateArgument const&)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildTemplateName(clang::TemplateTemplateParmDecl*, clang::TemplateArgument const&)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildTemplateName(clang::TemplateTemplateParmDecl*, clang::TemplateArgument const&)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildTemplateName(clang::TemplateTemplateParmDecl*, clang::TemplateArgument const&)
Unexecuted instantiation: SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildTemplateName(clang::TemplateTemplateParmDecl*, clang::TemplateArgument const&)
1215
1216
  /// Build a new compound statement.
1217
  ///
1218
  /// By default, performs semantic analysis to build the new statement.
1219
  /// Subclasses may override this routine to provide different behavior.
1220
  StmtResult RebuildCompoundStmt(SourceLocation LBraceLoc,
1221
                                       MultiStmtArg Statements,
1222
                                       SourceLocation RBraceLoc,
1223
381k
                                       bool IsStmtExpr) {
1224
381k
    return getSema().ActOnCompoundStmt(LBraceLoc, RBraceLoc, Statements,
1225
381k
                                       IsStmtExpr);
1226
381k
  }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildCompoundStmt(clang::SourceLocation, llvm::MutableArrayRef<clang::Stmt*>, clang::SourceLocation, bool)
Line
Count
Source
1223
1
                                       bool IsStmtExpr) {
1224
1
    return getSema().ActOnCompoundStmt(LBraceLoc, RBraceLoc, Statements,
1225
1
                                       IsStmtExpr);
1226
1
  }
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildCompoundStmt(clang::SourceLocation, llvm::MutableArrayRef<clang::Stmt*>, clang::SourceLocation, bool)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildCompoundStmt(clang::SourceLocation, llvm::MutableArrayRef<clang::Stmt*>, clang::SourceLocation, bool)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildCompoundStmt(clang::SourceLocation, llvm::MutableArrayRef<clang::Stmt*>, clang::SourceLocation, bool)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildCompoundStmt(clang::SourceLocation, llvm::MutableArrayRef<clang::Stmt*>, clang::SourceLocation, bool)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildCompoundStmt(clang::SourceLocation, llvm::MutableArrayRef<clang::Stmt*>, clang::SourceLocation, bool)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildCompoundStmt(clang::SourceLocation, llvm::MutableArrayRef<clang::Stmt*>, clang::SourceLocation, bool)
Line
Count
Source
1223
381k
                                       bool IsStmtExpr) {
1224
381k
    return getSema().ActOnCompoundStmt(LBraceLoc, RBraceLoc, Statements,
1225
381k
                                       IsStmtExpr);
1226
381k
  }
1227
1228
  /// Build a new case statement.
1229
  ///
1230
  /// By default, performs semantic analysis to build the new statement.
1231
  /// Subclasses may override this routine to provide different behavior.
1232
  StmtResult RebuildCaseStmt(SourceLocation CaseLoc,
1233
                                   Expr *LHS,
1234
                                   SourceLocation EllipsisLoc,
1235
                                   Expr *RHS,
1236
53.1k
                                   SourceLocation ColonLoc) {
1237
53.1k
    return getSema().ActOnCaseStmt(CaseLoc, LHS, EllipsisLoc, RHS,
1238
53.1k
                                   ColonLoc);
1239
53.1k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildCaseStmt(clang::SourceLocation, clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildCaseStmt(clang::SourceLocation, clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildCaseStmt(clang::SourceLocation, clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildCaseStmt(clang::SourceLocation, clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildCaseStmt(clang::SourceLocation, clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildCaseStmt(clang::SourceLocation, clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildCaseStmt(clang::SourceLocation, clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Line
Count
Source
1236
53.1k
                                   SourceLocation ColonLoc) {
1237
53.1k
    return getSema().ActOnCaseStmt(CaseLoc, LHS, EllipsisLoc, RHS,
1238
53.1k
                                   ColonLoc);
1239
53.1k
  }
1240
1241
  /// Attach the body to a new case statement.
1242
  ///
1243
  /// By default, performs semantic analysis to build the new statement.
1244
  /// Subclasses may override this routine to provide different behavior.
1245
53.1k
  StmtResult RebuildCaseStmtBody(Stmt *S, Stmt *Body) {
1246
53.1k
    getSema().ActOnCaseStmtBody(S, Body);
1247
53.1k
    return S;
1248
53.1k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildCaseStmtBody(clang::Stmt*, clang::Stmt*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildCaseStmtBody(clang::Stmt*, clang::Stmt*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildCaseStmtBody(clang::Stmt*, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildCaseStmtBody(clang::Stmt*, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildCaseStmtBody(clang::Stmt*, clang::Stmt*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildCaseStmtBody(clang::Stmt*, clang::Stmt*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildCaseStmtBody(clang::Stmt*, clang::Stmt*)
Line
Count
Source
1245
53.1k
  StmtResult RebuildCaseStmtBody(Stmt *S, Stmt *Body) {
1246
53.1k
    getSema().ActOnCaseStmtBody(S, Body);
1247
53.1k
    return S;
1248
53.1k
  }
1249
1250
  /// Build a new default statement.
1251
  ///
1252
  /// By default, performs semantic analysis to build the new statement.
1253
  /// Subclasses may override this routine to provide different behavior.
1254
  StmtResult RebuildDefaultStmt(SourceLocation DefaultLoc,
1255
                                      SourceLocation ColonLoc,
1256
285
                                      Stmt *SubStmt) {
1257
285
    return getSema().ActOnDefaultStmt(DefaultLoc, ColonLoc, SubStmt,
1258
285
                                      /*CurScope=*/nullptr);
1259
285
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildDefaultStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildDefaultStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildDefaultStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildDefaultStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildDefaultStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildDefaultStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildDefaultStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*)
Line
Count
Source
1256
285
                                      Stmt *SubStmt) {
1257
285
    return getSema().ActOnDefaultStmt(DefaultLoc, ColonLoc, SubStmt,
1258
285
                                      /*CurScope=*/nullptr);
1259
285
  }
1260
1261
  /// Build a new label statement.
1262
  ///
1263
  /// By default, performs semantic analysis to build the new statement.
1264
  /// Subclasses may override this routine to provide different behavior.
1265
  StmtResult RebuildLabelStmt(SourceLocation IdentLoc, LabelDecl *L,
1266
310
                              SourceLocation ColonLoc, Stmt *SubStmt) {
1267
310
    return SemaRef.ActOnLabelStmt(IdentLoc, L, ColonLoc, SubStmt);
1268
310
  }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildLabelStmt(clang::SourceLocation, clang::LabelDecl*, clang::SourceLocation, clang::Stmt*)
Line
Count
Source
1266
1
                              SourceLocation ColonLoc, Stmt *SubStmt) {
1267
1
    return SemaRef.ActOnLabelStmt(IdentLoc, L, ColonLoc, SubStmt);
1268
1
  }
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildLabelStmt(clang::SourceLocation, clang::LabelDecl*, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildLabelStmt(clang::SourceLocation, clang::LabelDecl*, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildLabelStmt(clang::SourceLocation, clang::LabelDecl*, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildLabelStmt(clang::SourceLocation, clang::LabelDecl*, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildLabelStmt(clang::SourceLocation, clang::LabelDecl*, clang::SourceLocation, clang::Stmt*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildLabelStmt(clang::SourceLocation, clang::LabelDecl*, clang::SourceLocation, clang::Stmt*)
Line
Count
Source
1266
309
                              SourceLocation ColonLoc, Stmt *SubStmt) {
1267
309
    return SemaRef.ActOnLabelStmt(IdentLoc, L, ColonLoc, SubStmt);
1268
309
  }
1269
1270
  /// Build a new label statement.
1271
  ///
1272
  /// By default, performs semantic analysis to build the new statement.
1273
  /// Subclasses may override this routine to provide different behavior.
1274
  StmtResult RebuildAttributedStmt(SourceLocation AttrLoc,
1275
                                   ArrayRef<const Attr*> Attrs,
1276
25
                                   Stmt *SubStmt) {
1277
25
    return SemaRef.ActOnAttributedStmt(AttrLoc, Attrs, SubStmt);
1278
25
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildAttributedStmt(clang::SourceLocation, llvm::ArrayRef<clang::Attr const*>, clang::Stmt*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildAttributedStmt(clang::SourceLocation, llvm::ArrayRef<clang::Attr const*>, clang::Stmt*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildAttributedStmt(clang::SourceLocation, llvm::ArrayRef<clang::Attr const*>, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildAttributedStmt(clang::SourceLocation, llvm::ArrayRef<clang::Attr const*>, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildAttributedStmt(clang::SourceLocation, llvm::ArrayRef<clang::Attr const*>, clang::Stmt*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildAttributedStmt(clang::SourceLocation, llvm::ArrayRef<clang::Attr const*>, clang::Stmt*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildAttributedStmt(clang::SourceLocation, llvm::ArrayRef<clang::Attr const*>, clang::Stmt*)
Line
Count
Source
1276
25
                                   Stmt *SubStmt) {
1277
25
    return SemaRef.ActOnAttributedStmt(AttrLoc, Attrs, SubStmt);
1278
25
  }
1279
1280
  /// Build a new "if" statement.
1281
  ///
1282
  /// By default, performs semantic analysis to build the new statement.
1283
  /// Subclasses may override this routine to provide different behavior.
1284
  StmtResult RebuildIfStmt(SourceLocation IfLoc, bool IsConstexpr,
1285
                           Sema::ConditionResult Cond, Stmt *Init, Stmt *Then,
1286
102k
                           SourceLocation ElseLoc, Stmt *Else) {
1287
102k
    return getSema().ActOnIfStmt(IfLoc, IsConstexpr, Init, Cond, Then,
1288
102k
                                 ElseLoc, Else);
1289
102k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildIfStmt(clang::SourceLocation, bool, clang::Sema::ConditionResult, clang::Stmt*, clang::Stmt*, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildIfStmt(clang::SourceLocation, bool, clang::Sema::ConditionResult, clang::Stmt*, clang::Stmt*, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildIfStmt(clang::SourceLocation, bool, clang::Sema::ConditionResult, clang::Stmt*, clang::Stmt*, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildIfStmt(clang::SourceLocation, bool, clang::Sema::ConditionResult, clang::Stmt*, clang::Stmt*, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildIfStmt(clang::SourceLocation, bool, clang::Sema::ConditionResult, clang::Stmt*, clang::Stmt*, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildIfStmt(clang::SourceLocation, bool, clang::Sema::ConditionResult, clang::Stmt*, clang::Stmt*, clang::SourceLocation, clang::Stmt*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildIfStmt(clang::SourceLocation, bool, clang::Sema::ConditionResult, clang::Stmt*, clang::Stmt*, clang::SourceLocation, clang::Stmt*)
Line
Count
Source
1286
102k
                           SourceLocation ElseLoc, Stmt *Else) {
1287
102k
    return getSema().ActOnIfStmt(IfLoc, IsConstexpr, Init, Cond, Then,
1288
102k
                                 ElseLoc, Else);
1289
102k
  }
1290
1291
  /// Start building a new switch statement.
1292
  ///
1293
  /// By default, performs semantic analysis to build the new statement.
1294
  /// Subclasses may override this routine to provide different behavior.
1295
  StmtResult RebuildSwitchStmtStart(SourceLocation SwitchLoc, Stmt *Init,
1296
3.95k
                                    Sema::ConditionResult Cond) {
1297
3.95k
    return getSema().ActOnStartOfSwitchStmt(SwitchLoc, Init, Cond);
1298
3.95k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildSwitchStmtStart(clang::SourceLocation, clang::Stmt*, clang::Sema::ConditionResult)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildSwitchStmtStart(clang::SourceLocation, clang::Stmt*, clang::Sema::ConditionResult)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildSwitchStmtStart(clang::SourceLocation, clang::Stmt*, clang::Sema::ConditionResult)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildSwitchStmtStart(clang::SourceLocation, clang::Stmt*, clang::Sema::ConditionResult)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildSwitchStmtStart(clang::SourceLocation, clang::Stmt*, clang::Sema::ConditionResult)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildSwitchStmtStart(clang::SourceLocation, clang::Stmt*, clang::Sema::ConditionResult)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildSwitchStmtStart(clang::SourceLocation, clang::Stmt*, clang::Sema::ConditionResult)
Line
Count
Source
1296
3.95k
                                    Sema::ConditionResult Cond) {
1297
3.95k
    return getSema().ActOnStartOfSwitchStmt(SwitchLoc, Init, Cond);
1298
3.95k
  }
1299
1300
  /// Attach the body to the switch statement.
1301
  ///
1302
  /// By default, performs semantic analysis to build the new statement.
1303
  /// Subclasses may override this routine to provide different behavior.
1304
  StmtResult RebuildSwitchStmtBody(SourceLocation SwitchLoc,
1305
3.95k
                                   Stmt *Switch, Stmt *Body) {
1306
3.95k
    return getSema().ActOnFinishSwitchStmt(SwitchLoc, Switch, Body);
1307
3.95k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildSwitchStmtBody(clang::SourceLocation, clang::Stmt*, clang::Stmt*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildSwitchStmtBody(clang::SourceLocation, clang::Stmt*, clang::Stmt*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildSwitchStmtBody(clang::SourceLocation, clang::Stmt*, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildSwitchStmtBody(clang::SourceLocation, clang::Stmt*, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildSwitchStmtBody(clang::SourceLocation, clang::Stmt*, clang::Stmt*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildSwitchStmtBody(clang::SourceLocation, clang::Stmt*, clang::Stmt*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildSwitchStmtBody(clang::SourceLocation, clang::Stmt*, clang::Stmt*)
Line
Count
Source
1305
3.95k
                                   Stmt *Switch, Stmt *Body) {
1306
3.95k
    return getSema().ActOnFinishSwitchStmt(SwitchLoc, Switch, Body);
1307
3.95k
  }
1308
1309
  /// Build a new while statement.
1310
  ///
1311
  /// By default, performs semantic analysis to build the new statement.
1312
  /// Subclasses may override this routine to provide different behavior.
1313
  StmtResult RebuildWhileStmt(SourceLocation WhileLoc,
1314
3.92k
                              Sema::ConditionResult Cond, Stmt *Body) {
1315
3.92k
    return getSema().ActOnWhileStmt(WhileLoc, Cond, Body);
1316
3.92k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildWhileStmt(clang::SourceLocation, clang::Sema::ConditionResult, clang::Stmt*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildWhileStmt(clang::SourceLocation, clang::Sema::ConditionResult, clang::Stmt*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildWhileStmt(clang::SourceLocation, clang::Sema::ConditionResult, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildWhileStmt(clang::SourceLocation, clang::Sema::ConditionResult, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildWhileStmt(clang::SourceLocation, clang::Sema::ConditionResult, clang::Stmt*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildWhileStmt(clang::SourceLocation, clang::Sema::ConditionResult, clang::Stmt*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildWhileStmt(clang::SourceLocation, clang::Sema::ConditionResult, clang::Stmt*)
Line
Count
Source
1314
3.92k
                              Sema::ConditionResult Cond, Stmt *Body) {
1315
3.92k
    return getSema().ActOnWhileStmt(WhileLoc, Cond, Body);
1316
3.92k
  }
1317
1318
  /// Build a new do-while statement.
1319
  ///
1320
  /// By default, performs semantic analysis to build the new statement.
1321
  /// Subclasses may override this routine to provide different behavior.
1322
  StmtResult RebuildDoStmt(SourceLocation DoLoc, Stmt *Body,
1323
                           SourceLocation WhileLoc, SourceLocation LParenLoc,
1324
14.2k
                           Expr *Cond, SourceLocation RParenLoc) {
1325
14.2k
    return getSema().ActOnDoStmt(DoLoc, Body, WhileLoc, LParenLoc,
1326
14.2k
                                 Cond, RParenLoc);
1327
14.2k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildDoStmt(clang::SourceLocation, clang::Stmt*, clang::SourceLocation, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildDoStmt(clang::SourceLocation, clang::Stmt*, clang::SourceLocation, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildDoStmt(clang::SourceLocation, clang::Stmt*, clang::SourceLocation, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildDoStmt(clang::SourceLocation, clang::Stmt*, clang::SourceLocation, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildDoStmt(clang::SourceLocation, clang::Stmt*, clang::SourceLocation, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildDoStmt(clang::SourceLocation, clang::Stmt*, clang::SourceLocation, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildDoStmt(clang::SourceLocation, clang::Stmt*, clang::SourceLocation, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Line
Count
Source
1324
14.2k
                           Expr *Cond, SourceLocation RParenLoc) {
1325
14.2k
    return getSema().ActOnDoStmt(DoLoc, Body, WhileLoc, LParenLoc,
1326
14.2k
                                 Cond, RParenLoc);
1327
14.2k
  }
1328
1329
  /// Build a new for statement.
1330
  ///
1331
  /// By default, performs semantic analysis to build the new statement.
1332
  /// Subclasses may override this routine to provide different behavior.
1333
  StmtResult RebuildForStmt(SourceLocation ForLoc, SourceLocation LParenLoc,
1334
                            Stmt *Init, Sema::ConditionResult Cond,
1335
                            Sema::FullExprArg Inc, SourceLocation RParenLoc,
1336
41.1k
                            Stmt *Body) {
1337
41.1k
    return getSema().ActOnForStmt(ForLoc, LParenLoc, Init, Cond,
1338
41.1k
                                  Inc, RParenLoc, Body);
1339
41.1k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildForStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*, clang::Sema::ConditionResult, clang::Sema::FullExprArg, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildForStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*, clang::Sema::ConditionResult, clang::Sema::FullExprArg, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildForStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*, clang::Sema::ConditionResult, clang::Sema::FullExprArg, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildForStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*, clang::Sema::ConditionResult, clang::Sema::FullExprArg, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildForStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*, clang::Sema::ConditionResult, clang::Sema::FullExprArg, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildForStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*, clang::Sema::ConditionResult, clang::Sema::FullExprArg, clang::SourceLocation, clang::Stmt*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildForStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*, clang::Sema::ConditionResult, clang::Sema::FullExprArg, clang::SourceLocation, clang::Stmt*)
Line
Count
Source
1336
41.1k
                            Stmt *Body) {
1337
41.1k
    return getSema().ActOnForStmt(ForLoc, LParenLoc, Init, Cond,
1338
41.1k
                                  Inc, RParenLoc, Body);
1339
41.1k
  }
1340
1341
  /// Build a new goto statement.
1342
  ///
1343
  /// By default, performs semantic analysis to build the new statement.
1344
  /// Subclasses may override this routine to provide different behavior.
1345
  StmtResult RebuildGotoStmt(SourceLocation GotoLoc, SourceLocation LabelLoc,
1346
383
                             LabelDecl *Label) {
1347
383
    return getSema().ActOnGotoStmt(GotoLoc, LabelLoc, Label);
1348
383
  }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildGotoStmt(clang::SourceLocation, clang::SourceLocation, clang::LabelDecl*)
Line
Count
Source
1346
1
                             LabelDecl *Label) {
1347
1
    return getSema().ActOnGotoStmt(GotoLoc, LabelLoc, Label);
1348
1
  }
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildGotoStmt(clang::SourceLocation, clang::SourceLocation, clang::LabelDecl*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildGotoStmt(clang::SourceLocation, clang::SourceLocation, clang::LabelDecl*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildGotoStmt(clang::SourceLocation, clang::SourceLocation, clang::LabelDecl*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildGotoStmt(clang::SourceLocation, clang::SourceLocation, clang::LabelDecl*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildGotoStmt(clang::SourceLocation, clang::SourceLocation, clang::LabelDecl*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildGotoStmt(clang::SourceLocation, clang::SourceLocation, clang::LabelDecl*)
Line
Count
Source
1346
382
                             LabelDecl *Label) {
1347
382
    return getSema().ActOnGotoStmt(GotoLoc, LabelLoc, Label);
1348
382
  }
1349
1350
  /// Build a new indirect goto statement.
1351
  ///
1352
  /// By default, performs semantic analysis to build the new statement.
1353
  /// Subclasses may override this routine to provide different behavior.
1354
  StmtResult RebuildIndirectGotoStmt(SourceLocation GotoLoc,
1355
                                     SourceLocation StarLoc,
1356
2
                                     Expr *Target) {
1357
2
    return getSema().ActOnIndirectGotoStmt(GotoLoc, StarLoc, Target);
1358
2
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildIndirectGotoStmt(clang::SourceLocation, clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildIndirectGotoStmt(clang::SourceLocation, clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildIndirectGotoStmt(clang::SourceLocation, clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildIndirectGotoStmt(clang::SourceLocation, clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildIndirectGotoStmt(clang::SourceLocation, clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildIndirectGotoStmt(clang::SourceLocation, clang::SourceLocation, clang::Expr*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildIndirectGotoStmt(clang::SourceLocation, clang::SourceLocation, clang::Expr*)
Line
Count
Source
1356
2
                                     Expr *Target) {
1357
2
    return getSema().ActOnIndirectGotoStmt(GotoLoc, StarLoc, Target);
1358
2
  }
1359
1360
  /// Build a new return statement.
1361
  ///
1362
  /// By default, performs semantic analysis to build the new statement.
1363
  /// Subclasses may override this routine to provide different behavior.
1364
252k
  StmtResult RebuildReturnStmt(SourceLocation ReturnLoc, Expr *Result) {
1365
252k
    return getSema().BuildReturnStmt(ReturnLoc, Result);
1366
252k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildReturnStmt(clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildReturnStmt(clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildReturnStmt(clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildReturnStmt(clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildReturnStmt(clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildReturnStmt(clang::SourceLocation, clang::Expr*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildReturnStmt(clang::SourceLocation, clang::Expr*)
Line
Count
Source
1364
252k
  StmtResult RebuildReturnStmt(SourceLocation ReturnLoc, Expr *Result) {
1365
252k
    return getSema().BuildReturnStmt(ReturnLoc, Result);
1366
252k
  }
1367
1368
  /// Build a new declaration statement.
1369
  ///
1370
  /// By default, performs semantic analysis to build the new statement.
1371
  /// Subclasses may override this routine to provide different behavior.
1372
  StmtResult RebuildDeclStmt(MutableArrayRef<Decl *> Decls,
1373
170k
                             SourceLocation StartLoc, SourceLocation EndLoc) {
1374
170k
    Sema::DeclGroupPtrTy DG = getSema().BuildDeclaratorGroup(Decls);
1375
170k
    return getSema().ActOnDeclStmt(DG, StartLoc, EndLoc);
1376
170k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildDeclStmt(llvm::MutableArrayRef<clang::Decl*>, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildDeclStmt(llvm::MutableArrayRef<clang::Decl*>, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildDeclStmt(llvm::MutableArrayRef<clang::Decl*>, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildDeclStmt(llvm::MutableArrayRef<clang::Decl*>, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildDeclStmt(llvm::MutableArrayRef<clang::Decl*>, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildDeclStmt(llvm::MutableArrayRef<clang::Decl*>, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildDeclStmt(llvm::MutableArrayRef<clang::Decl*>, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1373
170k
                             SourceLocation StartLoc, SourceLocation EndLoc) {
1374
170k
    Sema::DeclGroupPtrTy DG = getSema().BuildDeclaratorGroup(Decls);
1375
170k
    return getSema().ActOnDeclStmt(DG, StartLoc, EndLoc);
1376
170k
  }
1377
1378
  /// Build a new inline asm statement.
1379
  ///
1380
  /// By default, performs semantic analysis to build the new statement.
1381
  /// Subclasses may override this routine to provide different behavior.
1382
  StmtResult RebuildGCCAsmStmt(SourceLocation AsmLoc, bool IsSimple,
1383
                               bool IsVolatile, unsigned NumOutputs,
1384
                               unsigned NumInputs, IdentifierInfo **Names,
1385
                               MultiExprArg Constraints, MultiExprArg Exprs,
1386
                               Expr *AsmString, MultiExprArg Clobbers,
1387
                               unsigned NumLabels,
1388
4.21k
                               SourceLocation RParenLoc) {
1389
4.21k
    return getSema().ActOnGCCAsmStmt(AsmLoc, IsSimple, IsVolatile, NumOutputs,
1390
4.21k
                                     NumInputs, Names, Constraints, Exprs,
1391
4.21k
                                     AsmString, Clobbers, NumLabels, RParenLoc);
1392
4.21k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildGCCAsmStmt(clang::SourceLocation, bool, bool, unsigned int, unsigned int, clang::IdentifierInfo**, llvm::MutableArrayRef<clang::Expr*>, llvm::MutableArrayRef<clang::Expr*>, clang::Expr*, llvm::MutableArrayRef<clang::Expr*>, unsigned int, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildGCCAsmStmt(clang::SourceLocation, bool, bool, unsigned int, unsigned int, clang::IdentifierInfo**, llvm::MutableArrayRef<clang::Expr*>, llvm::MutableArrayRef<clang::Expr*>, clang::Expr*, llvm::MutableArrayRef<clang::Expr*>, unsigned int, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildGCCAsmStmt(clang::SourceLocation, bool, bool, unsigned int, unsigned int, clang::IdentifierInfo**, llvm::MutableArrayRef<clang::Expr*>, llvm::MutableArrayRef<clang::Expr*>, clang::Expr*, llvm::MutableArrayRef<clang::Expr*>, unsigned int, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildGCCAsmStmt(clang::SourceLocation, bool, bool, unsigned int, unsigned int, clang::IdentifierInfo**, llvm::MutableArrayRef<clang::Expr*>, llvm::MutableArrayRef<clang::Expr*>, clang::Expr*, llvm::MutableArrayRef<clang::Expr*>, unsigned int, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildGCCAsmStmt(clang::SourceLocation, bool, bool, unsigned int, unsigned int, clang::IdentifierInfo**, llvm::MutableArrayRef<clang::Expr*>, llvm::MutableArrayRef<clang::Expr*>, clang::Expr*, llvm::MutableArrayRef<clang::Expr*>, unsigned int, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildGCCAsmStmt(clang::SourceLocation, bool, bool, unsigned int, unsigned int, clang::IdentifierInfo**, llvm::MutableArrayRef<clang::Expr*>, llvm::MutableArrayRef<clang::Expr*>, clang::Expr*, llvm::MutableArrayRef<clang::Expr*>, unsigned int, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildGCCAsmStmt(clang::SourceLocation, bool, bool, unsigned int, unsigned int, clang::IdentifierInfo**, llvm::MutableArrayRef<clang::Expr*>, llvm::MutableArrayRef<clang::Expr*>, clang::Expr*, llvm::MutableArrayRef<clang::Expr*>, unsigned int, clang::SourceLocation)
Line
Count
Source
1388
4.21k
                               SourceLocation RParenLoc) {
1389
4.21k
    return getSema().ActOnGCCAsmStmt(AsmLoc, IsSimple, IsVolatile, NumOutputs,
1390
4.21k
                                     NumInputs, Names, Constraints, Exprs,
1391
4.21k
                                     AsmString, Clobbers, NumLabels, RParenLoc);
1392
4.21k
  }
1393
1394
  /// Build a new MS style inline asm statement.
1395
  ///
1396
  /// By default, performs semantic analysis to build the new statement.
1397
  /// Subclasses may override this routine to provide different behavior.
1398
  StmtResult RebuildMSAsmStmt(SourceLocation AsmLoc, SourceLocation LBraceLoc,
1399
                              ArrayRef<Token> AsmToks,
1400
                              StringRef AsmString,
1401
                              unsigned NumOutputs, unsigned NumInputs,
1402
                              ArrayRef<StringRef> Constraints,
1403
                              ArrayRef<StringRef> Clobbers,
1404
                              ArrayRef<Expr*> Exprs,
1405
1
                              SourceLocation EndLoc) {
1406
1
    return getSema().ActOnMSAsmStmt(AsmLoc, LBraceLoc, AsmToks, AsmString,
1407
1
                                    NumOutputs, NumInputs,
1408
1
                                    Constraints, Clobbers, Exprs, EndLoc);
1409
1
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildMSAsmStmt(clang::SourceLocation, clang::SourceLocation, llvm::ArrayRef<clang::Token>, llvm::StringRef, unsigned int, unsigned int, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildMSAsmStmt(clang::SourceLocation, clang::SourceLocation, llvm::ArrayRef<clang::Token>, llvm::StringRef, unsigned int, unsigned int, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildMSAsmStmt(clang::SourceLocation, clang::SourceLocation, llvm::ArrayRef<clang::Token>, llvm::StringRef, unsigned int, unsigned int, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildMSAsmStmt(clang::SourceLocation, clang::SourceLocation, llvm::ArrayRef<clang::Token>, llvm::StringRef, unsigned int, unsigned int, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildMSAsmStmt(clang::SourceLocation, clang::SourceLocation, llvm::ArrayRef<clang::Token>, llvm::StringRef, unsigned int, unsigned int, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildMSAsmStmt(clang::SourceLocation, clang::SourceLocation, llvm::ArrayRef<clang::Token>, llvm::StringRef, unsigned int, unsigned int, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildMSAsmStmt(clang::SourceLocation, clang::SourceLocation, llvm::ArrayRef<clang::Token>, llvm::StringRef, unsigned int, unsigned int, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation)
Line
Count
Source
1405
1
                              SourceLocation EndLoc) {
1406
1
    return getSema().ActOnMSAsmStmt(AsmLoc, LBraceLoc, AsmToks, AsmString,
1407
1
                                    NumOutputs, NumInputs,
1408
1
                                    Constraints, Clobbers, Exprs, EndLoc);
1409
1
  }
1410
1411
  /// Build a new co_return statement.
1412
  ///
1413
  /// By default, performs semantic analysis to build the new statement.
1414
  /// Subclasses may override this routine to provide different behavior.
1415
  StmtResult RebuildCoreturnStmt(SourceLocation CoreturnLoc, Expr *Result,
1416
16
                                 bool IsImplicit) {
1417
16
    return getSema().BuildCoreturnStmt(CoreturnLoc, Result, IsImplicit);
1418
16
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildCoreturnStmt(clang::SourceLocation, clang::Expr*, bool)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildCoreturnStmt(clang::SourceLocation, clang::Expr*, bool)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildCoreturnStmt(clang::SourceLocation, clang::Expr*, bool)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildCoreturnStmt(clang::SourceLocation, clang::Expr*, bool)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildCoreturnStmt(clang::SourceLocation, clang::Expr*, bool)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildCoreturnStmt(clang::SourceLocation, clang::Expr*, bool)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildCoreturnStmt(clang::SourceLocation, clang::Expr*, bool)
Line
Count
Source
1416
16
                                 bool IsImplicit) {
1417
16
    return getSema().BuildCoreturnStmt(CoreturnLoc, Result, IsImplicit);
1418
16
  }
1419
1420
  /// Build a new co_await expression.
1421
  ///
1422
  /// By default, performs semantic analysis to build the new expression.
1423
  /// Subclasses may override this routine to provide different behavior.
1424
  ExprResult RebuildCoawaitExpr(SourceLocation CoawaitLoc, Expr *Result,
1425
109
                                bool IsImplicit) {
1426
109
    return getSema().BuildResolvedCoawaitExpr(CoawaitLoc, Result, IsImplicit);
1427
109
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildCoawaitExpr(clang::SourceLocation, clang::Expr*, bool)
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildCoawaitExpr(clang::SourceLocation, clang::Expr*, bool)
Line
Count
Source
1425
4
                                bool IsImplicit) {
1426
4
    return getSema().BuildResolvedCoawaitExpr(CoawaitLoc, Result, IsImplicit);
1427
4
  }
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildCoawaitExpr(clang::SourceLocation, clang::Expr*, bool)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildCoawaitExpr(clang::SourceLocation, clang::Expr*, bool)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildCoawaitExpr(clang::SourceLocation, clang::Expr*, bool)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildCoawaitExpr(clang::SourceLocation, clang::Expr*, bool)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildCoawaitExpr(clang::SourceLocation, clang::Expr*, bool)
Line
Count
Source
1425
105
                                bool IsImplicit) {
1426
105
    return getSema().BuildResolvedCoawaitExpr(CoawaitLoc, Result, IsImplicit);
1427
105
  }
1428
1429
  /// Build a new co_await expression.
1430
  ///
1431
  /// By default, performs semantic analysis to build the new expression.
1432
  /// Subclasses may override this routine to provide different behavior.
1433
  ExprResult RebuildDependentCoawaitExpr(SourceLocation CoawaitLoc,
1434
                                         Expr *Result,
1435
23
                                         UnresolvedLookupExpr *Lookup) {
1436
23
    return getSema().BuildUnresolvedCoawaitExpr(CoawaitLoc, Result, Lookup);
1437
23
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildDependentCoawaitExpr(clang::SourceLocation, clang::Expr*, clang::UnresolvedLookupExpr*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildDependentCoawaitExpr(clang::SourceLocation, clang::Expr*, clang::UnresolvedLookupExpr*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildDependentCoawaitExpr(clang::SourceLocation, clang::Expr*, clang::UnresolvedLookupExpr*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildDependentCoawaitExpr(clang::SourceLocation, clang::Expr*, clang::UnresolvedLookupExpr*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildDependentCoawaitExpr(clang::SourceLocation, clang::Expr*, clang::UnresolvedLookupExpr*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildDependentCoawaitExpr(clang::SourceLocation, clang::Expr*, clang::UnresolvedLookupExpr*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildDependentCoawaitExpr(clang::SourceLocation, clang::Expr*, clang::UnresolvedLookupExpr*)
Line
Count
Source
1435
23
                                         UnresolvedLookupExpr *Lookup) {
1436
23
    return getSema().BuildUnresolvedCoawaitExpr(CoawaitLoc, Result, Lookup);
1437
23
  }
1438
1439
  /// Build a new co_yield expression.
1440
  ///
1441
  /// By default, performs semantic analysis to build the new expression.
1442
  /// Subclasses may override this routine to provide different behavior.
1443
19
  ExprResult RebuildCoyieldExpr(SourceLocation CoyieldLoc, Expr *Result) {
1444
19
    return getSema().BuildCoyieldExpr(CoyieldLoc, Result);
1445
19
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildCoyieldExpr(clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildCoyieldExpr(clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildCoyieldExpr(clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildCoyieldExpr(clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildCoyieldExpr(clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildCoyieldExpr(clang::SourceLocation, clang::Expr*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildCoyieldExpr(clang::SourceLocation, clang::Expr*)
Line
Count
Source
1443
19
  ExprResult RebuildCoyieldExpr(SourceLocation CoyieldLoc, Expr *Result) {
1444
19
    return getSema().BuildCoyieldExpr(CoyieldLoc, Result);
1445
19
  }
1446
1447
41
  StmtResult RebuildCoroutineBodyStmt(CoroutineBodyStmt::CtorArgs Args) {
1448
41
    return getSema().BuildCoroutineBodyStmt(Args);
1449
41
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildCoroutineBodyStmt(clang::CoroutineBodyStmt::CtorArgs)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildCoroutineBodyStmt(clang::CoroutineBodyStmt::CtorArgs)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildCoroutineBodyStmt(clang::CoroutineBodyStmt::CtorArgs)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildCoroutineBodyStmt(clang::CoroutineBodyStmt::CtorArgs)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildCoroutineBodyStmt(clang::CoroutineBodyStmt::CtorArgs)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildCoroutineBodyStmt(clang::CoroutineBodyStmt::CtorArgs)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildCoroutineBodyStmt(clang::CoroutineBodyStmt::CtorArgs)
Line
Count
Source
1447
41
  StmtResult RebuildCoroutineBodyStmt(CoroutineBodyStmt::CtorArgs Args) {
1448
41
    return getSema().BuildCoroutineBodyStmt(Args);
1449
41
  }
1450
1451
  /// Build a new Objective-C \@try statement.
1452
  ///
1453
  /// By default, performs semantic analysis to build the new statement.
1454
  /// Subclasses may override this routine to provide different behavior.
1455
  StmtResult RebuildObjCAtTryStmt(SourceLocation AtLoc,
1456
                                        Stmt *TryBody,
1457
                                        MultiStmtArg CatchStmts,
1458
1
                                        Stmt *Finally) {
1459
1
    return getSema().ActOnObjCAtTryStmt(AtLoc, TryBody, CatchStmts,
1460
1
                                        Finally);
1461
1
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildObjCAtTryStmt(clang::SourceLocation, clang::Stmt*, llvm::MutableArrayRef<clang::Stmt*>, clang::Stmt*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildObjCAtTryStmt(clang::SourceLocation, clang::Stmt*, llvm::MutableArrayRef<clang::Stmt*>, clang::Stmt*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildObjCAtTryStmt(clang::SourceLocation, clang::Stmt*, llvm::MutableArrayRef<clang::Stmt*>, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildObjCAtTryStmt(clang::SourceLocation, clang::Stmt*, llvm::MutableArrayRef<clang::Stmt*>, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildObjCAtTryStmt(clang::SourceLocation, clang::Stmt*, llvm::MutableArrayRef<clang::Stmt*>, clang::Stmt*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildObjCAtTryStmt(clang::SourceLocation, clang::Stmt*, llvm::MutableArrayRef<clang::Stmt*>, clang::Stmt*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildObjCAtTryStmt(clang::SourceLocation, clang::Stmt*, llvm::MutableArrayRef<clang::Stmt*>, clang::Stmt*)
Line
Count
Source
1458
1
                                        Stmt *Finally) {
1459
1
    return getSema().ActOnObjCAtTryStmt(AtLoc, TryBody, CatchStmts,
1460
1
                                        Finally);
1461
1
  }
1462
1463
  /// Rebuild an Objective-C exception declaration.
1464
  ///
1465
  /// By default, performs semantic analysis to build the new declaration.
1466
  /// Subclasses may override this routine to provide different behavior.
1467
  VarDecl *RebuildObjCExceptionDecl(VarDecl *ExceptionDecl,
1468
2
                                    TypeSourceInfo *TInfo, QualType T) {
1469
2
    return getSema().BuildObjCExceptionDecl(TInfo, T,
1470
2
                                            ExceptionDecl->getInnerLocStart(),
1471
2
                                            ExceptionDecl->getLocation(),
1472
2
                                            ExceptionDecl->getIdentifier());
1473
2
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildObjCExceptionDecl(clang::VarDecl*, clang::TypeSourceInfo*, clang::QualType)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildObjCExceptionDecl(clang::VarDecl*, clang::TypeSourceInfo*, clang::QualType)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildObjCExceptionDecl(clang::VarDecl*, clang::TypeSourceInfo*, clang::QualType)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildObjCExceptionDecl(clang::VarDecl*, clang::TypeSourceInfo*, clang::QualType)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildObjCExceptionDecl(clang::VarDecl*, clang::TypeSourceInfo*, clang::QualType)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildObjCExceptionDecl(clang::VarDecl*, clang::TypeSourceInfo*, clang::QualType)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildObjCExceptionDecl(clang::VarDecl*, clang::TypeSourceInfo*, clang::QualType)
Line
Count
Source
1468
2
                                    TypeSourceInfo *TInfo, QualType T) {
1469
2
    return getSema().BuildObjCExceptionDecl(TInfo, T,
1470
2
                                            ExceptionDecl->getInnerLocStart(),
1471
2
                                            ExceptionDecl->getLocation(),
1472
2
                                            ExceptionDecl->getIdentifier());
1473
2
  }
1474
1475
  /// Build a new Objective-C \@catch statement.
1476
  ///
1477
  /// By default, performs semantic analysis to build the new statement.
1478
  /// Subclasses may override this routine to provide different behavior.
1479
  StmtResult RebuildObjCAtCatchStmt(SourceLocation AtLoc,
1480
                                          SourceLocation RParenLoc,
1481
                                          VarDecl *Var,
1482
2
                                          Stmt *Body) {
1483
2
    return getSema().ActOnObjCAtCatchStmt(AtLoc, RParenLoc,
1484
2
                                          Var, Body);
1485
2
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildObjCAtCatchStmt(clang::SourceLocation, clang::SourceLocation, clang::VarDecl*, clang::Stmt*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildObjCAtCatchStmt(clang::SourceLocation, clang::SourceLocation, clang::VarDecl*, clang::Stmt*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildObjCAtCatchStmt(clang::SourceLocation, clang::SourceLocation, clang::VarDecl*, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildObjCAtCatchStmt(clang::SourceLocation, clang::SourceLocation, clang::VarDecl*, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildObjCAtCatchStmt(clang::SourceLocation, clang::SourceLocation, clang::VarDecl*, clang::Stmt*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildObjCAtCatchStmt(clang::SourceLocation, clang::SourceLocation, clang::VarDecl*, clang::Stmt*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildObjCAtCatchStmt(clang::SourceLocation, clang::SourceLocation, clang::VarDecl*, clang::Stmt*)
Line
Count
Source
1482
2
                                          Stmt *Body) {
1483
2
    return getSema().ActOnObjCAtCatchStmt(AtLoc, RParenLoc,
1484
2
                                          Var, Body);
1485
2
  }
1486
1487
  /// Build a new Objective-C \@finally statement.
1488
  ///
1489
  /// By default, performs semantic analysis to build the new statement.
1490
  /// Subclasses may override this routine to provide different behavior.
1491
  StmtResult RebuildObjCAtFinallyStmt(SourceLocation AtLoc,
1492
1
                                            Stmt *Body) {
1493
1
    return getSema().ActOnObjCAtFinallyStmt(AtLoc, Body);
1494
1
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildObjCAtFinallyStmt(clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildObjCAtFinallyStmt(clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildObjCAtFinallyStmt(clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildObjCAtFinallyStmt(clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildObjCAtFinallyStmt(clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildObjCAtFinallyStmt(clang::SourceLocation, clang::Stmt*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildObjCAtFinallyStmt(clang::SourceLocation, clang::Stmt*)
Line
Count
Source
1492
1
                                            Stmt *Body) {
1493
1
    return getSema().ActOnObjCAtFinallyStmt(AtLoc, Body);
1494
1
  }
1495
1496
  /// Build a new Objective-C \@throw statement.
1497
  ///
1498
  /// By default, performs semantic analysis to build the new statement.
1499
  /// Subclasses may override this routine to provide different behavior.
1500
  StmtResult RebuildObjCAtThrowStmt(SourceLocation AtLoc,
1501
2
                                          Expr *Operand) {
1502
2
    return getSema().BuildObjCAtThrowStmt(AtLoc, Operand);
1503
2
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildObjCAtThrowStmt(clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildObjCAtThrowStmt(clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildObjCAtThrowStmt(clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildObjCAtThrowStmt(clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildObjCAtThrowStmt(clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildObjCAtThrowStmt(clang::SourceLocation, clang::Expr*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildObjCAtThrowStmt(clang::SourceLocation, clang::Expr*)
Line
Count
Source
1501
2
                                          Expr *Operand) {
1502
2
    return getSema().BuildObjCAtThrowStmt(AtLoc, Operand);
1503
2
  }
1504
1505
  /// Build a new OpenMP executable directive.
1506
  ///
1507
  /// By default, performs semantic analysis to build the new statement.
1508
  /// Subclasses may override this routine to provide different behavior.
1509
  StmtResult RebuildOMPExecutableDirective(OpenMPDirectiveKind Kind,
1510
                                           DeclarationNameInfo DirName,
1511
                                           OpenMPDirectiveKind CancelRegion,
1512
                                           ArrayRef<OMPClause *> Clauses,
1513
                                           Stmt *AStmt, SourceLocation StartLoc,
1514
45.8k
                                           SourceLocation EndLoc) {
1515
45.8k
    return getSema().ActOnOpenMPExecutableDirective(
1516
45.8k
        Kind, DirName, CancelRegion, Clauses, AStmt, StartLoc, EndLoc);
1517
45.8k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPExecutableDirective(clang::OpenMPDirectiveKind, clang::DeclarationNameInfo, clang::OpenMPDirectiveKind, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPExecutableDirective(clang::OpenMPDirectiveKind, clang::DeclarationNameInfo, clang::OpenMPDirectiveKind, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPExecutableDirective(clang::OpenMPDirectiveKind, clang::DeclarationNameInfo, clang::OpenMPDirectiveKind, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPExecutableDirective(clang::OpenMPDirectiveKind, clang::DeclarationNameInfo, clang::OpenMPDirectiveKind, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPExecutableDirective(clang::OpenMPDirectiveKind, clang::DeclarationNameInfo, clang::OpenMPDirectiveKind, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPExecutableDirective(clang::OpenMPDirectiveKind, clang::DeclarationNameInfo, clang::OpenMPDirectiveKind, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPExecutableDirective(clang::OpenMPDirectiveKind, clang::DeclarationNameInfo, clang::OpenMPDirectiveKind, llvm::ArrayRef<clang::OMPClause*>, clang::Stmt*, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1514
45.8k
                                           SourceLocation EndLoc) {
1515
45.8k
    return getSema().ActOnOpenMPExecutableDirective(
1516
45.8k
        Kind, DirName, CancelRegion, Clauses, AStmt, StartLoc, EndLoc);
1517
45.8k
  }
1518
1519
  /// Build a new OpenMP 'if' clause.
1520
  ///
1521
  /// By default, performs semantic analysis to build the new OpenMP clause.
1522
  /// Subclasses may override this routine to provide different behavior.
1523
  OMPClause *RebuildOMPIfClause(OpenMPDirectiveKind NameModifier,
1524
                                Expr *Condition, SourceLocation StartLoc,
1525
                                SourceLocation LParenLoc,
1526
                                SourceLocation NameModifierLoc,
1527
                                SourceLocation ColonLoc,
1528
1.23k
                                SourceLocation EndLoc) {
1529
1.23k
    return getSema().ActOnOpenMPIfClause(NameModifier, Condition, StartLoc,
1530
1.23k
                                         LParenLoc, NameModifierLoc, ColonLoc,
1531
1.23k
                                         EndLoc);
1532
1.23k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPIfClause(clang::OpenMPDirectiveKind, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPIfClause(clang::OpenMPDirectiveKind, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPIfClause(clang::OpenMPDirectiveKind, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPIfClause(clang::OpenMPDirectiveKind, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPIfClause(clang::OpenMPDirectiveKind, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPIfClause(clang::OpenMPDirectiveKind, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPIfClause(clang::OpenMPDirectiveKind, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1528
1.23k
                                SourceLocation EndLoc) {
1529
1.23k
    return getSema().ActOnOpenMPIfClause(NameModifier, Condition, StartLoc,
1530
1.23k
                                         LParenLoc, NameModifierLoc, ColonLoc,
1531
1.23k
                                         EndLoc);
1532
1.23k
  }
1533
1534
  /// Build a new OpenMP 'final' clause.
1535
  ///
1536
  /// By default, performs semantic analysis to build the new OpenMP clause.
1537
  /// Subclasses may override this routine to provide different behavior.
1538
  OMPClause *RebuildOMPFinalClause(Expr *Condition, SourceLocation StartLoc,
1539
                                   SourceLocation LParenLoc,
1540
66
                                   SourceLocation EndLoc) {
1541
66
    return getSema().ActOnOpenMPFinalClause(Condition, StartLoc, LParenLoc,
1542
66
                                            EndLoc);
1543
66
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPFinalClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPFinalClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPFinalClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPFinalClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPFinalClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPFinalClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPFinalClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1540
66
                                   SourceLocation EndLoc) {
1541
66
    return getSema().ActOnOpenMPFinalClause(Condition, StartLoc, LParenLoc,
1542
66
                                            EndLoc);
1543
66
  }
1544
1545
  /// Build a new OpenMP 'num_threads' clause.
1546
  ///
1547
  /// By default, performs semantic analysis to build the new OpenMP clause.
1548
  /// Subclasses may override this routine to provide different behavior.
1549
  OMPClause *RebuildOMPNumThreadsClause(Expr *NumThreads,
1550
                                        SourceLocation StartLoc,
1551
                                        SourceLocation LParenLoc,
1552
582
                                        SourceLocation EndLoc) {
1553
582
    return getSema().ActOnOpenMPNumThreadsClause(NumThreads, StartLoc,
1554
582
                                                 LParenLoc, EndLoc);
1555
582
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPNumThreadsClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPNumThreadsClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPNumThreadsClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPNumThreadsClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPNumThreadsClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPNumThreadsClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPNumThreadsClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1552
582
                                        SourceLocation EndLoc) {
1553
582
    return getSema().ActOnOpenMPNumThreadsClause(NumThreads, StartLoc,
1554
582
                                                 LParenLoc, EndLoc);
1555
582
  }
1556
1557
  /// Build a new OpenMP 'safelen' clause.
1558
  ///
1559
  /// By default, performs semantic analysis to build the new OpenMP clause.
1560
  /// Subclasses may override this routine to provide different behavior.
1561
  OMPClause *RebuildOMPSafelenClause(Expr *Len, SourceLocation StartLoc,
1562
                                     SourceLocation LParenLoc,
1563
1.71k
                                     SourceLocation EndLoc) {
1564
1.71k
    return getSema().ActOnOpenMPSafelenClause(Len, StartLoc, LParenLoc, EndLoc);
1565
1.71k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPSafelenClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPSafelenClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPSafelenClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPSafelenClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPSafelenClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPSafelenClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPSafelenClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1563
1.71k
                                     SourceLocation EndLoc) {
1564
1.71k
    return getSema().ActOnOpenMPSafelenClause(Len, StartLoc, LParenLoc, EndLoc);
1565
1.71k
  }
1566
1567
  /// Build a new OpenMP 'simdlen' clause.
1568
  ///
1569
  /// By default, performs semantic analysis to build the new OpenMP clause.
1570
  /// Subclasses may override this routine to provide different behavior.
1571
  OMPClause *RebuildOMPSimdlenClause(Expr *Len, SourceLocation StartLoc,
1572
                                     SourceLocation LParenLoc,
1573
740
                                     SourceLocation EndLoc) {
1574
740
    return getSema().ActOnOpenMPSimdlenClause(Len, StartLoc, LParenLoc, EndLoc);
1575
740
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPSimdlenClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPSimdlenClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPSimdlenClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPSimdlenClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPSimdlenClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPSimdlenClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPSimdlenClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1573
740
                                     SourceLocation EndLoc) {
1574
740
    return getSema().ActOnOpenMPSimdlenClause(Len, StartLoc, LParenLoc, EndLoc);
1575
740
  }
1576
1577
  /// Build a new OpenMP 'allocator' clause.
1578
  ///
1579
  /// By default, performs semantic analysis to build the new OpenMP clause.
1580
  /// Subclasses may override this routine to provide different behavior.
1581
  OMPClause *RebuildOMPAllocatorClause(Expr *A, SourceLocation StartLoc,
1582
                                       SourceLocation LParenLoc,
1583
0
                                       SourceLocation EndLoc) {
1584
0
    return getSema().ActOnOpenMPAllocatorClause(A, StartLoc, LParenLoc, EndLoc);
1585
0
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPAllocatorClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPAllocatorClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPAllocatorClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPAllocatorClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPAllocatorClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPAllocatorClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPAllocatorClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
1586
1587
  /// Build a new OpenMP 'collapse' clause.
1588
  ///
1589
  /// By default, performs semantic analysis to build the new OpenMP clause.
1590
  /// Subclasses may override this routine to provide different behavior.
1591
  OMPClause *RebuildOMPCollapseClause(Expr *Num, SourceLocation StartLoc,
1592
                                      SourceLocation LParenLoc,
1593
2.32k
                                      SourceLocation EndLoc) {
1594
2.32k
    return getSema().ActOnOpenMPCollapseClause(Num, StartLoc, LParenLoc,
1595
2.32k
                                               EndLoc);
1596
2.32k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPCollapseClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPCollapseClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPCollapseClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPCollapseClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPCollapseClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPCollapseClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPCollapseClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1593
2.32k
                                      SourceLocation EndLoc) {
1594
2.32k
    return getSema().ActOnOpenMPCollapseClause(Num, StartLoc, LParenLoc,
1595
2.32k
                                               EndLoc);
1596
2.32k
  }
1597
1598
  /// Build a new OpenMP 'default' clause.
1599
  ///
1600
  /// By default, performs semantic analysis to build the new OpenMP clause.
1601
  /// Subclasses may override this routine to provide different behavior.
1602
  OMPClause *RebuildOMPDefaultClause(OpenMPDefaultClauseKind Kind,
1603
                                     SourceLocation KindKwLoc,
1604
                                     SourceLocation StartLoc,
1605
                                     SourceLocation LParenLoc,
1606
224
                                     SourceLocation EndLoc) {
1607
224
    return getSema().ActOnOpenMPDefaultClause(Kind, KindKwLoc,
1608
224
                                              StartLoc, LParenLoc, EndLoc);
1609
224
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPDefaultClause(clang::OpenMPDefaultClauseKind, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPDefaultClause(clang::OpenMPDefaultClauseKind, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPDefaultClause(clang::OpenMPDefaultClauseKind, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPDefaultClause(clang::OpenMPDefaultClauseKind, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPDefaultClause(clang::OpenMPDefaultClauseKind, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPDefaultClause(clang::OpenMPDefaultClauseKind, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPDefaultClause(clang::OpenMPDefaultClauseKind, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1606
224
                                     SourceLocation EndLoc) {
1607
224
    return getSema().ActOnOpenMPDefaultClause(Kind, KindKwLoc,
1608
224
                                              StartLoc, LParenLoc, EndLoc);
1609
224
  }
1610
1611
  /// Build a new OpenMP 'proc_bind' clause.
1612
  ///
1613
  /// By default, performs semantic analysis to build the new OpenMP clause.
1614
  /// Subclasses may override this routine to provide different behavior.
1615
  OMPClause *RebuildOMPProcBindClause(OpenMPProcBindClauseKind Kind,
1616
                                      SourceLocation KindKwLoc,
1617
                                      SourceLocation StartLoc,
1618
                                      SourceLocation LParenLoc,
1619
186
                                      SourceLocation EndLoc) {
1620
186
    return getSema().ActOnOpenMPProcBindClause(Kind, KindKwLoc,
1621
186
                                               StartLoc, LParenLoc, EndLoc);
1622
186
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPProcBindClause(clang::OpenMPProcBindClauseKind, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPProcBindClause(clang::OpenMPProcBindClauseKind, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPProcBindClause(clang::OpenMPProcBindClauseKind, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPProcBindClause(clang::OpenMPProcBindClauseKind, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPProcBindClause(clang::OpenMPProcBindClauseKind, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPProcBindClause(clang::OpenMPProcBindClauseKind, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPProcBindClause(clang::OpenMPProcBindClauseKind, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1619
186
                                      SourceLocation EndLoc) {
1620
186
    return getSema().ActOnOpenMPProcBindClause(Kind, KindKwLoc,
1621
186
                                               StartLoc, LParenLoc, EndLoc);
1622
186
  }
1623
1624
  /// Build a new OpenMP 'schedule' clause.
1625
  ///
1626
  /// By default, performs semantic analysis to build the new OpenMP clause.
1627
  /// Subclasses may override this routine to provide different behavior.
1628
  OMPClause *RebuildOMPScheduleClause(
1629
      OpenMPScheduleClauseModifier M1, OpenMPScheduleClauseModifier M2,
1630
      OpenMPScheduleClauseKind Kind, Expr *ChunkSize, SourceLocation StartLoc,
1631
      SourceLocation LParenLoc, SourceLocation M1Loc, SourceLocation M2Loc,
1632
919
      SourceLocation KindLoc, SourceLocation CommaLoc, SourceLocation EndLoc) {
1633
919
    return getSema().ActOnOpenMPScheduleClause(
1634
919
        M1, M2, Kind, ChunkSize, StartLoc, LParenLoc, M1Loc, M2Loc, KindLoc,
1635
919
        CommaLoc, EndLoc);
1636
919
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPScheduleClause(clang::OpenMPScheduleClauseModifier, clang::OpenMPScheduleClauseModifier, clang::OpenMPScheduleClauseKind, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPScheduleClause(clang::OpenMPScheduleClauseModifier, clang::OpenMPScheduleClauseModifier, clang::OpenMPScheduleClauseKind, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPScheduleClause(clang::OpenMPScheduleClauseModifier, clang::OpenMPScheduleClauseModifier, clang::OpenMPScheduleClauseKind, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPScheduleClause(clang::OpenMPScheduleClauseModifier, clang::OpenMPScheduleClauseModifier, clang::OpenMPScheduleClauseKind, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPScheduleClause(clang::OpenMPScheduleClauseModifier, clang::OpenMPScheduleClauseModifier, clang::OpenMPScheduleClauseKind, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPScheduleClause(clang::OpenMPScheduleClauseModifier, clang::OpenMPScheduleClauseModifier, clang::OpenMPScheduleClauseKind, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPScheduleClause(clang::OpenMPScheduleClauseModifier, clang::OpenMPScheduleClauseModifier, clang::OpenMPScheduleClauseKind, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1632
919
      SourceLocation KindLoc, SourceLocation CommaLoc, SourceLocation EndLoc) {
1633
919
    return getSema().ActOnOpenMPScheduleClause(
1634
919
        M1, M2, Kind, ChunkSize, StartLoc, LParenLoc, M1Loc, M2Loc, KindLoc,
1635
919
        CommaLoc, EndLoc);
1636
919
  }
1637
1638
  /// Build a new OpenMP 'ordered' clause.
1639
  ///
1640
  /// By default, performs semantic analysis to build the new OpenMP clause.
1641
  /// Subclasses may override this routine to provide different behavior.
1642
  OMPClause *RebuildOMPOrderedClause(SourceLocation StartLoc,
1643
                                     SourceLocation EndLoc,
1644
460
                                     SourceLocation LParenLoc, Expr *Num) {
1645
460
    return getSema().ActOnOpenMPOrderedClause(StartLoc, EndLoc, LParenLoc, Num);
1646
460
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPOrderedClause(clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPOrderedClause(clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPOrderedClause(clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPOrderedClause(clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPOrderedClause(clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPOrderedClause(clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::Expr*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPOrderedClause(clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::Expr*)
Line
Count
Source
1644
460
                                     SourceLocation LParenLoc, Expr *Num) {
1645
460
    return getSema().ActOnOpenMPOrderedClause(StartLoc, EndLoc, LParenLoc, Num);
1646
460
  }
1647
1648
  /// Build a new OpenMP 'private' clause.
1649
  ///
1650
  /// By default, performs semantic analysis to build the new OpenMP clause.
1651
  /// Subclasses may override this routine to provide different behavior.
1652
  OMPClause *RebuildOMPPrivateClause(ArrayRef<Expr *> VarList,
1653
                                     SourceLocation StartLoc,
1654
                                     SourceLocation LParenLoc,
1655
2.57k
                                     SourceLocation EndLoc) {
1656
2.57k
    return getSema().ActOnOpenMPPrivateClause(VarList, StartLoc, LParenLoc,
1657
2.57k
                                              EndLoc);
1658
2.57k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPPrivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPPrivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPPrivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPPrivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPPrivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPPrivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPPrivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1655
2.57k
                                     SourceLocation EndLoc) {
1656
2.57k
    return getSema().ActOnOpenMPPrivateClause(VarList, StartLoc, LParenLoc,
1657
2.57k
                                              EndLoc);
1658
2.57k
  }
1659
1660
  /// Build a new OpenMP 'firstprivate' clause.
1661
  ///
1662
  /// By default, performs semantic analysis to build the new OpenMP clause.
1663
  /// Subclasses may override this routine to provide different behavior.
1664
  OMPClause *RebuildOMPFirstprivateClause(ArrayRef<Expr *> VarList,
1665
                                          SourceLocation StartLoc,
1666
                                          SourceLocation LParenLoc,
1667
842
                                          SourceLocation EndLoc) {
1668
842
    return getSema().ActOnOpenMPFirstprivateClause(VarList, StartLoc, LParenLoc,
1669
842
                                                   EndLoc);
1670
842
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPFirstprivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPFirstprivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPFirstprivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPFirstprivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPFirstprivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPFirstprivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPFirstprivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1667
842
                                          SourceLocation EndLoc) {
1668
842
    return getSema().ActOnOpenMPFirstprivateClause(VarList, StartLoc, LParenLoc,
1669
842
                                                   EndLoc);
1670
842
  }
1671
1672
  /// Build a new OpenMP 'lastprivate' clause.
1673
  ///
1674
  /// By default, performs semantic analysis to build the new OpenMP clause.
1675
  /// Subclasses may override this routine to provide different behavior.
1676
  OMPClause *RebuildOMPLastprivateClause(ArrayRef<Expr *> VarList,
1677
                                         SourceLocation StartLoc,
1678
                                         SourceLocation LParenLoc,
1679
626
                                         SourceLocation EndLoc) {
1680
626
    return getSema().ActOnOpenMPLastprivateClause(VarList, StartLoc, LParenLoc,
1681
626
                                                  EndLoc);
1682
626
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPLastprivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPLastprivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPLastprivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPLastprivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPLastprivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPLastprivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPLastprivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1679
626
                                         SourceLocation EndLoc) {
1680
626
    return getSema().ActOnOpenMPLastprivateClause(VarList, StartLoc, LParenLoc,
1681
626
                                                  EndLoc);
1682
626
  }
1683
1684
  /// Build a new OpenMP 'shared' clause.
1685
  ///
1686
  /// By default, performs semantic analysis to build the new OpenMP clause.
1687
  /// Subclasses may override this routine to provide different behavior.
1688
  OMPClause *RebuildOMPSharedClause(ArrayRef<Expr *> VarList,
1689
                                    SourceLocation StartLoc,
1690
                                    SourceLocation LParenLoc,
1691
690
                                    SourceLocation EndLoc) {
1692
690
    return getSema().ActOnOpenMPSharedClause(VarList, StartLoc, LParenLoc,
1693
690
                                             EndLoc);
1694
690
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPSharedClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPSharedClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPSharedClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPSharedClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPSharedClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPSharedClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPSharedClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1691
690
                                    SourceLocation EndLoc) {
1692
690
    return getSema().ActOnOpenMPSharedClause(VarList, StartLoc, LParenLoc,
1693
690
                                             EndLoc);
1694
690
  }
1695
1696
  /// Build a new OpenMP 'reduction' clause.
1697
  ///
1698
  /// By default, performs semantic analysis to build the new statement.
1699
  /// Subclasses may override this routine to provide different behavior.
1700
  OMPClause *RebuildOMPReductionClause(ArrayRef<Expr *> VarList,
1701
                                       SourceLocation StartLoc,
1702
                                       SourceLocation LParenLoc,
1703
                                       SourceLocation ColonLoc,
1704
                                       SourceLocation EndLoc,
1705
                                       CXXScopeSpec &ReductionIdScopeSpec,
1706
                                       const DeclarationNameInfo &ReductionId,
1707
7.70k
                                       ArrayRef<Expr *> UnresolvedReductions) {
1708
7.70k
    return getSema().ActOnOpenMPReductionClause(
1709
7.70k
        VarList, StartLoc, LParenLoc, ColonLoc, EndLoc, ReductionIdScopeSpec,
1710
7.70k
        ReductionId, UnresolvedReductions);
1711
7.70k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPReductionClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPReductionClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPReductionClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPReductionClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPReductionClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPReductionClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, llvm::ArrayRef<clang::Expr*>)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPReductionClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, llvm::ArrayRef<clang::Expr*>)
Line
Count
Source
1707
7.70k
                                       ArrayRef<Expr *> UnresolvedReductions) {
1708
7.70k
    return getSema().ActOnOpenMPReductionClause(
1709
7.70k
        VarList, StartLoc, LParenLoc, ColonLoc, EndLoc, ReductionIdScopeSpec,
1710
7.70k
        ReductionId, UnresolvedReductions);
1711
7.70k
  }
1712
1713
  /// Build a new OpenMP 'task_reduction' clause.
1714
  ///
1715
  /// By default, performs semantic analysis to build the new statement.
1716
  /// Subclasses may override this routine to provide different behavior.
1717
  OMPClause *RebuildOMPTaskReductionClause(
1718
      ArrayRef<Expr *> VarList, SourceLocation StartLoc,
1719
      SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc,
1720
      CXXScopeSpec &ReductionIdScopeSpec,
1721
      const DeclarationNameInfo &ReductionId,
1722
804
      ArrayRef<Expr *> UnresolvedReductions) {
1723
804
    return getSema().ActOnOpenMPTaskReductionClause(
1724
804
        VarList, StartLoc, LParenLoc, ColonLoc, EndLoc, ReductionIdScopeSpec,
1725
804
        ReductionId, UnresolvedReductions);
1726
804
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPTaskReductionClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPTaskReductionClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPTaskReductionClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPTaskReductionClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPTaskReductionClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPTaskReductionClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, llvm::ArrayRef<clang::Expr*>)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPTaskReductionClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, llvm::ArrayRef<clang::Expr*>)
Line
Count
Source
1722
804
      ArrayRef<Expr *> UnresolvedReductions) {
1723
804
    return getSema().ActOnOpenMPTaskReductionClause(
1724
804
        VarList, StartLoc, LParenLoc, ColonLoc, EndLoc, ReductionIdScopeSpec,
1725
804
        ReductionId, UnresolvedReductions);
1726
804
  }
1727
1728
  /// Build a new OpenMP 'in_reduction' clause.
1729
  ///
1730
  /// By default, performs semantic analysis to build the new statement.
1731
  /// Subclasses may override this routine to provide different behavior.
1732
  OMPClause *
1733
  RebuildOMPInReductionClause(ArrayRef<Expr *> VarList, SourceLocation StartLoc,
1734
                              SourceLocation LParenLoc, SourceLocation ColonLoc,
1735
                              SourceLocation EndLoc,
1736
                              CXXScopeSpec &ReductionIdScopeSpec,
1737
                              const DeclarationNameInfo &ReductionId,
1738
664
                              ArrayRef<Expr *> UnresolvedReductions) {
1739
664
    return getSema().ActOnOpenMPInReductionClause(
1740
664
        VarList, StartLoc, LParenLoc, ColonLoc, EndLoc, ReductionIdScopeSpec,
1741
664
        ReductionId, UnresolvedReductions);
1742
664
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPInReductionClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPInReductionClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPInReductionClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPInReductionClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPInReductionClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPInReductionClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, llvm::ArrayRef<clang::Expr*>)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPInReductionClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, llvm::ArrayRef<clang::Expr*>)
Line
Count
Source
1738
664
                              ArrayRef<Expr *> UnresolvedReductions) {
1739
664
    return getSema().ActOnOpenMPInReductionClause(
1740
664
        VarList, StartLoc, LParenLoc, ColonLoc, EndLoc, ReductionIdScopeSpec,
1741
664
        ReductionId, UnresolvedReductions);
1742
664
  }
1743
1744
  /// Build a new OpenMP 'linear' clause.
1745
  ///
1746
  /// By default, performs semantic analysis to build the new OpenMP clause.
1747
  /// Subclasses may override this routine to provide different behavior.
1748
  OMPClause *RebuildOMPLinearClause(ArrayRef<Expr *> VarList, Expr *Step,
1749
                                    SourceLocation StartLoc,
1750
                                    SourceLocation LParenLoc,
1751
                                    OpenMPLinearClauseKind Modifier,
1752
                                    SourceLocation ModifierLoc,
1753
                                    SourceLocation ColonLoc,
1754
432
                                    SourceLocation EndLoc) {
1755
432
    return getSema().ActOnOpenMPLinearClause(VarList, Step, StartLoc, LParenLoc,
1756
432
                                             Modifier, ModifierLoc, ColonLoc,
1757
432
                                             EndLoc);
1758
432
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPLinearClause(llvm::ArrayRef<clang::Expr*>, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::OpenMPLinearClauseKind, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPLinearClause(llvm::ArrayRef<clang::Expr*>, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::OpenMPLinearClauseKind, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPLinearClause(llvm::ArrayRef<clang::Expr*>, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::OpenMPLinearClauseKind, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPLinearClause(llvm::ArrayRef<clang::Expr*>, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::OpenMPLinearClauseKind, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPLinearClause(llvm::ArrayRef<clang::Expr*>, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::OpenMPLinearClauseKind, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPLinearClause(llvm::ArrayRef<clang::Expr*>, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::OpenMPLinearClauseKind, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPLinearClause(llvm::ArrayRef<clang::Expr*>, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::OpenMPLinearClauseKind, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1754
432
                                    SourceLocation EndLoc) {
1755
432
    return getSema().ActOnOpenMPLinearClause(VarList, Step, StartLoc, LParenLoc,
1756
432
                                             Modifier, ModifierLoc, ColonLoc,
1757
432
                                             EndLoc);
1758
432
  }
1759
1760
  /// Build a new OpenMP 'aligned' clause.
1761
  ///
1762
  /// By default, performs semantic analysis to build the new OpenMP clause.
1763
  /// Subclasses may override this routine to provide different behavior.
1764
  OMPClause *RebuildOMPAlignedClause(ArrayRef<Expr *> VarList, Expr *Alignment,
1765
                                     SourceLocation StartLoc,
1766
                                     SourceLocation LParenLoc,
1767
                                     SourceLocation ColonLoc,
1768
340
                                     SourceLocation EndLoc) {
1769
340
    return getSema().ActOnOpenMPAlignedClause(VarList, Alignment, StartLoc,
1770
340
                                              LParenLoc, ColonLoc, EndLoc);
1771
340
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPAlignedClause(llvm::ArrayRef<clang::Expr*>, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPAlignedClause(llvm::ArrayRef<clang::Expr*>, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPAlignedClause(llvm::ArrayRef<clang::Expr*>, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPAlignedClause(llvm::ArrayRef<clang::Expr*>, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPAlignedClause(llvm::ArrayRef<clang::Expr*>, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPAlignedClause(llvm::ArrayRef<clang::Expr*>, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPAlignedClause(llvm::ArrayRef<clang::Expr*>, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1768
340
                                     SourceLocation EndLoc) {
1769
340
    return getSema().ActOnOpenMPAlignedClause(VarList, Alignment, StartLoc,
1770
340
                                              LParenLoc, ColonLoc, EndLoc);
1771
340
  }
1772
1773
  /// Build a new OpenMP 'copyin' clause.
1774
  ///
1775
  /// By default, performs semantic analysis to build the new OpenMP clause.
1776
  /// Subclasses may override this routine to provide different behavior.
1777
  OMPClause *RebuildOMPCopyinClause(ArrayRef<Expr *> VarList,
1778
                                    SourceLocation StartLoc,
1779
                                    SourceLocation LParenLoc,
1780
88
                                    SourceLocation EndLoc) {
1781
88
    return getSema().ActOnOpenMPCopyinClause(VarList, StartLoc, LParenLoc,
1782
88
                                             EndLoc);
1783
88
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPCopyinClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPCopyinClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPCopyinClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPCopyinClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPCopyinClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPCopyinClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPCopyinClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1780
88
                                    SourceLocation EndLoc) {
1781
88
    return getSema().ActOnOpenMPCopyinClause(VarList, StartLoc, LParenLoc,
1782
88
                                             EndLoc);
1783
88
  }
1784
1785
  /// Build a new OpenMP 'copyprivate' clause.
1786
  ///
1787
  /// By default, performs semantic analysis to build the new OpenMP clause.
1788
  /// Subclasses may override this routine to provide different behavior.
1789
  OMPClause *RebuildOMPCopyprivateClause(ArrayRef<Expr *> VarList,
1790
                                         SourceLocation StartLoc,
1791
                                         SourceLocation LParenLoc,
1792
58
                                         SourceLocation EndLoc) {
1793
58
    return getSema().ActOnOpenMPCopyprivateClause(VarList, StartLoc, LParenLoc,
1794
58
                                                  EndLoc);
1795
58
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPCopyprivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPCopyprivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPCopyprivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPCopyprivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPCopyprivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPCopyprivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPCopyprivateClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1792
58
                                         SourceLocation EndLoc) {
1793
58
    return getSema().ActOnOpenMPCopyprivateClause(VarList, StartLoc, LParenLoc,
1794
58
                                                  EndLoc);
1795
58
  }
1796
1797
  /// Build a new OpenMP 'flush' pseudo clause.
1798
  ///
1799
  /// By default, performs semantic analysis to build the new OpenMP clause.
1800
  /// Subclasses may override this routine to provide different behavior.
1801
  OMPClause *RebuildOMPFlushClause(ArrayRef<Expr *> VarList,
1802
                                   SourceLocation StartLoc,
1803
                                   SourceLocation LParenLoc,
1804
20
                                   SourceLocation EndLoc) {
1805
20
    return getSema().ActOnOpenMPFlushClause(VarList, StartLoc, LParenLoc,
1806
20
                                            EndLoc);
1807
20
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPFlushClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPFlushClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPFlushClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPFlushClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPFlushClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPFlushClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPFlushClause(llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1804
20
                                   SourceLocation EndLoc) {
1805
20
    return getSema().ActOnOpenMPFlushClause(VarList, StartLoc, LParenLoc,
1806
20
                                            EndLoc);
1807
20
  }
1808
1809
  /// Build a new OpenMP 'depend' pseudo clause.
1810
  ///
1811
  /// By default, performs semantic analysis to build the new OpenMP clause.
1812
  /// Subclasses may override this routine to provide different behavior.
1813
  OMPClause *
1814
  RebuildOMPDependClause(OpenMPDependClauseKind DepKind, SourceLocation DepLoc,
1815
                         SourceLocation ColonLoc, ArrayRef<Expr *> VarList,
1816
                         SourceLocation StartLoc, SourceLocation LParenLoc,
1817
344
                         SourceLocation EndLoc) {
1818
344
    return getSema().ActOnOpenMPDependClause(DepKind, DepLoc, ColonLoc, VarList,
1819
344
                                             StartLoc, LParenLoc, EndLoc);
1820
344
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPDependClause(clang::OpenMPDependClauseKind, clang::SourceLocation, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPDependClause(clang::OpenMPDependClauseKind, clang::SourceLocation, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPDependClause(clang::OpenMPDependClauseKind, clang::SourceLocation, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPDependClause(clang::OpenMPDependClauseKind, clang::SourceLocation, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPDependClause(clang::OpenMPDependClauseKind, clang::SourceLocation, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPDependClause(clang::OpenMPDependClauseKind, clang::SourceLocation, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPDependClause(clang::OpenMPDependClauseKind, clang::SourceLocation, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1817
344
                         SourceLocation EndLoc) {
1818
344
    return getSema().ActOnOpenMPDependClause(DepKind, DepLoc, ColonLoc, VarList,
1819
344
                                             StartLoc, LParenLoc, EndLoc);
1820
344
  }
1821
1822
  /// Build a new OpenMP 'device' clause.
1823
  ///
1824
  /// By default, performs semantic analysis to build the new statement.
1825
  /// Subclasses may override this routine to provide different behavior.
1826
  OMPClause *RebuildOMPDeviceClause(Expr *Device, SourceLocation StartLoc,
1827
                                    SourceLocation LParenLoc,
1828
60
                                    SourceLocation EndLoc) {
1829
60
    return getSema().ActOnOpenMPDeviceClause(Device, StartLoc, LParenLoc,
1830
60
                                             EndLoc);
1831
60
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPDeviceClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPDeviceClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPDeviceClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPDeviceClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPDeviceClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPDeviceClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPDeviceClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1828
60
                                    SourceLocation EndLoc) {
1829
60
    return getSema().ActOnOpenMPDeviceClause(Device, StartLoc, LParenLoc,
1830
60
                                             EndLoc);
1831
60
  }
1832
1833
  /// Build a new OpenMP 'map' clause.
1834
  ///
1835
  /// By default, performs semantic analysis to build the new OpenMP clause.
1836
  /// Subclasses may override this routine to provide different behavior.
1837
  OMPClause *RebuildOMPMapClause(
1838
      ArrayRef<OpenMPMapModifierKind> MapTypeModifiers,
1839
      ArrayRef<SourceLocation> MapTypeModifiersLoc,
1840
      CXXScopeSpec MapperIdScopeSpec, DeclarationNameInfo MapperId,
1841
      OpenMPMapClauseKind MapType, bool IsMapTypeImplicit,
1842
      SourceLocation MapLoc, SourceLocation ColonLoc, ArrayRef<Expr *> VarList,
1843
3.52k
      const OMPVarListLocTy &Locs, ArrayRef<Expr *> UnresolvedMappers) {
1844
3.52k
    return getSema().ActOnOpenMPMapClause(MapTypeModifiers, MapTypeModifiersLoc,
1845
3.52k
                                          MapperIdScopeSpec, MapperId, MapType,
1846
3.52k
                                          IsMapTypeImplicit, MapLoc, ColonLoc,
1847
3.52k
                                          VarList, Locs, UnresolvedMappers);
1848
3.52k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPMapClause(llvm::ArrayRef<clang::OpenMPMapModifierKind>, llvm::ArrayRef<clang::SourceLocation>, clang::CXXScopeSpec, clang::DeclarationNameInfo, clang::OpenMPMapClauseKind, bool, clang::SourceLocation, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OMPVarListLocTy const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPMapClause(llvm::ArrayRef<clang::OpenMPMapModifierKind>, llvm::ArrayRef<clang::SourceLocation>, clang::CXXScopeSpec, clang::DeclarationNameInfo, clang::OpenMPMapClauseKind, bool, clang::SourceLocation, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OMPVarListLocTy const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPMapClause(llvm::ArrayRef<clang::OpenMPMapModifierKind>, llvm::ArrayRef<clang::SourceLocation>, clang::CXXScopeSpec, clang::DeclarationNameInfo, clang::OpenMPMapClauseKind, bool, clang::SourceLocation, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OMPVarListLocTy const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPMapClause(llvm::ArrayRef<clang::OpenMPMapModifierKind>, llvm::ArrayRef<clang::SourceLocation>, clang::CXXScopeSpec, clang::DeclarationNameInfo, clang::OpenMPMapClauseKind, bool, clang::SourceLocation, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OMPVarListLocTy const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPMapClause(llvm::ArrayRef<clang::OpenMPMapModifierKind>, llvm::ArrayRef<clang::SourceLocation>, clang::CXXScopeSpec, clang::DeclarationNameInfo, clang::OpenMPMapClauseKind, bool, clang::SourceLocation, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OMPVarListLocTy const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPMapClause(llvm::ArrayRef<clang::OpenMPMapModifierKind>, llvm::ArrayRef<clang::SourceLocation>, clang::CXXScopeSpec, clang::DeclarationNameInfo, clang::OpenMPMapClauseKind, bool, clang::SourceLocation, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OMPVarListLocTy const&, llvm::ArrayRef<clang::Expr*>)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPMapClause(llvm::ArrayRef<clang::OpenMPMapModifierKind>, llvm::ArrayRef<clang::SourceLocation>, clang::CXXScopeSpec, clang::DeclarationNameInfo, clang::OpenMPMapClauseKind, bool, clang::SourceLocation, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OMPVarListLocTy const&, llvm::ArrayRef<clang::Expr*>)
Line
Count
Source
1843
3.52k
      const OMPVarListLocTy &Locs, ArrayRef<Expr *> UnresolvedMappers) {
1844
3.52k
    return getSema().ActOnOpenMPMapClause(MapTypeModifiers, MapTypeModifiersLoc,
1845
3.52k
                                          MapperIdScopeSpec, MapperId, MapType,
1846
3.52k
                                          IsMapTypeImplicit, MapLoc, ColonLoc,
1847
3.52k
                                          VarList, Locs, UnresolvedMappers);
1848
3.52k
  }
1849
1850
  /// Build a new OpenMP 'allocate' clause.
1851
  ///
1852
  /// By default, performs semantic analysis to build the new OpenMP clause.
1853
  /// Subclasses may override this routine to provide different behavior.
1854
  OMPClause *RebuildOMPAllocateClause(Expr *Allocate, ArrayRef<Expr *> VarList,
1855
                                      SourceLocation StartLoc,
1856
                                      SourceLocation LParenLoc,
1857
                                      SourceLocation ColonLoc,
1858
401
                                      SourceLocation EndLoc) {
1859
401
    return getSema().ActOnOpenMPAllocateClause(Allocate, VarList, StartLoc,
1860
401
                                               LParenLoc, ColonLoc, EndLoc);
1861
401
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPAllocateClause(clang::Expr*, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPAllocateClause(clang::Expr*, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPAllocateClause(clang::Expr*, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPAllocateClause(clang::Expr*, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPAllocateClause(clang::Expr*, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPAllocateClause(clang::Expr*, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPAllocateClause(clang::Expr*, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1858
401
                                      SourceLocation EndLoc) {
1859
401
    return getSema().ActOnOpenMPAllocateClause(Allocate, VarList, StartLoc,
1860
401
                                               LParenLoc, ColonLoc, EndLoc);
1861
401
  }
1862
1863
  /// Build a new OpenMP 'num_teams' clause.
1864
  ///
1865
  /// By default, performs semantic analysis to build the new statement.
1866
  /// Subclasses may override this routine to provide different behavior.
1867
  OMPClause *RebuildOMPNumTeamsClause(Expr *NumTeams, SourceLocation StartLoc,
1868
                                      SourceLocation LParenLoc,
1869
316
                                      SourceLocation EndLoc) {
1870
316
    return getSema().ActOnOpenMPNumTeamsClause(NumTeams, StartLoc, LParenLoc,
1871
316
                                               EndLoc);
1872
316
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPNumTeamsClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPNumTeamsClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPNumTeamsClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPNumTeamsClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPNumTeamsClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPNumTeamsClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPNumTeamsClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1869
316
                                      SourceLocation EndLoc) {
1870
316
    return getSema().ActOnOpenMPNumTeamsClause(NumTeams, StartLoc, LParenLoc,
1871
316
                                               EndLoc);
1872
316
  }
1873
1874
  /// Build a new OpenMP 'thread_limit' clause.
1875
  ///
1876
  /// By default, performs semantic analysis to build the new statement.
1877
  /// Subclasses may override this routine to provide different behavior.
1878
  OMPClause *RebuildOMPThreadLimitClause(Expr *ThreadLimit,
1879
                                         SourceLocation StartLoc,
1880
                                         SourceLocation LParenLoc,
1881
280
                                         SourceLocation EndLoc) {
1882
280
    return getSema().ActOnOpenMPThreadLimitClause(ThreadLimit, StartLoc,
1883
280
                                                  LParenLoc, EndLoc);
1884
280
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPThreadLimitClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPThreadLimitClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPThreadLimitClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPThreadLimitClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPThreadLimitClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPThreadLimitClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPThreadLimitClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1881
280
                                         SourceLocation EndLoc) {
1882
280
    return getSema().ActOnOpenMPThreadLimitClause(ThreadLimit, StartLoc,
1883
280
                                                  LParenLoc, EndLoc);
1884
280
  }
1885
1886
  /// Build a new OpenMP 'priority' clause.
1887
  ///
1888
  /// By default, performs semantic analysis to build the new statement.
1889
  /// Subclasses may override this routine to provide different behavior.
1890
  OMPClause *RebuildOMPPriorityClause(Expr *Priority, SourceLocation StartLoc,
1891
                                      SourceLocation LParenLoc,
1892
84
                                      SourceLocation EndLoc) {
1893
84
    return getSema().ActOnOpenMPPriorityClause(Priority, StartLoc, LParenLoc,
1894
84
                                               EndLoc);
1895
84
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPPriorityClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPPriorityClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPPriorityClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPPriorityClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPPriorityClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPPriorityClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPPriorityClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1892
84
                                      SourceLocation EndLoc) {
1893
84
    return getSema().ActOnOpenMPPriorityClause(Priority, StartLoc, LParenLoc,
1894
84
                                               EndLoc);
1895
84
  }
1896
1897
  /// Build a new OpenMP 'grainsize' clause.
1898
  ///
1899
  /// By default, performs semantic analysis to build the new statement.
1900
  /// Subclasses may override this routine to provide different behavior.
1901
  OMPClause *RebuildOMPGrainsizeClause(Expr *Grainsize, SourceLocation StartLoc,
1902
                                       SourceLocation LParenLoc,
1903
36
                                       SourceLocation EndLoc) {
1904
36
    return getSema().ActOnOpenMPGrainsizeClause(Grainsize, StartLoc, LParenLoc,
1905
36
                                                EndLoc);
1906
36
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPGrainsizeClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPGrainsizeClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPGrainsizeClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPGrainsizeClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPGrainsizeClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPGrainsizeClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPGrainsizeClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1903
36
                                       SourceLocation EndLoc) {
1904
36
    return getSema().ActOnOpenMPGrainsizeClause(Grainsize, StartLoc, LParenLoc,
1905
36
                                                EndLoc);
1906
36
  }
1907
1908
  /// Build a new OpenMP 'num_tasks' clause.
1909
  ///
1910
  /// By default, performs semantic analysis to build the new statement.
1911
  /// Subclasses may override this routine to provide different behavior.
1912
  OMPClause *RebuildOMPNumTasksClause(Expr *NumTasks, SourceLocation StartLoc,
1913
                                      SourceLocation LParenLoc,
1914
36
                                      SourceLocation EndLoc) {
1915
36
    return getSema().ActOnOpenMPNumTasksClause(NumTasks, StartLoc, LParenLoc,
1916
36
                                               EndLoc);
1917
36
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPNumTasksClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPNumTasksClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPNumTasksClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPNumTasksClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPNumTasksClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPNumTasksClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPNumTasksClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1914
36
                                      SourceLocation EndLoc) {
1915
36
    return getSema().ActOnOpenMPNumTasksClause(NumTasks, StartLoc, LParenLoc,
1916
36
                                               EndLoc);
1917
36
  }
1918
1919
  /// Build a new OpenMP 'hint' clause.
1920
  ///
1921
  /// By default, performs semantic analysis to build the new statement.
1922
  /// Subclasses may override this routine to provide different behavior.
1923
  OMPClause *RebuildOMPHintClause(Expr *Hint, SourceLocation StartLoc,
1924
                                  SourceLocation LParenLoc,
1925
8
                                  SourceLocation EndLoc) {
1926
8
    return getSema().ActOnOpenMPHintClause(Hint, StartLoc, LParenLoc, EndLoc);
1927
8
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPHintClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPHintClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPHintClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPHintClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPHintClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPHintClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPHintClause(clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1925
8
                                  SourceLocation EndLoc) {
1926
8
    return getSema().ActOnOpenMPHintClause(Hint, StartLoc, LParenLoc, EndLoc);
1927
8
  }
1928
1929
  /// Build a new OpenMP 'dist_schedule' clause.
1930
  ///
1931
  /// By default, performs semantic analysis to build the new OpenMP clause.
1932
  /// Subclasses may override this routine to provide different behavior.
1933
  OMPClause *
1934
  RebuildOMPDistScheduleClause(OpenMPDistScheduleClauseKind Kind,
1935
                               Expr *ChunkSize, SourceLocation StartLoc,
1936
                               SourceLocation LParenLoc, SourceLocation KindLoc,
1937
616
                               SourceLocation CommaLoc, SourceLocation EndLoc) {
1938
616
    return getSema().ActOnOpenMPDistScheduleClause(
1939
616
        Kind, ChunkSize, StartLoc, LParenLoc, KindLoc, CommaLoc, EndLoc);
1940
616
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPDistScheduleClause(clang::OpenMPDistScheduleClauseKind, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPDistScheduleClause(clang::OpenMPDistScheduleClauseKind, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPDistScheduleClause(clang::OpenMPDistScheduleClauseKind, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPDistScheduleClause(clang::OpenMPDistScheduleClauseKind, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPDistScheduleClause(clang::OpenMPDistScheduleClauseKind, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPDistScheduleClause(clang::OpenMPDistScheduleClauseKind, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPDistScheduleClause(clang::OpenMPDistScheduleClauseKind, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
1937
616
                               SourceLocation CommaLoc, SourceLocation EndLoc) {
1938
616
    return getSema().ActOnOpenMPDistScheduleClause(
1939
616
        Kind, ChunkSize, StartLoc, LParenLoc, KindLoc, CommaLoc, EndLoc);
1940
616
  }
1941
1942
  /// Build a new OpenMP 'to' clause.
1943
  ///
1944
  /// By default, performs semantic analysis to build the new statement.
1945
  /// Subclasses may override this routine to provide different behavior.
1946
  OMPClause *RebuildOMPToClause(ArrayRef<Expr *> VarList,
1947
                                CXXScopeSpec &MapperIdScopeSpec,
1948
                                DeclarationNameInfo &MapperId,
1949
                                const OMPVarListLocTy &Locs,
1950
236
                                ArrayRef<Expr *> UnresolvedMappers) {
1951
236
    return getSema().ActOnOpenMPToClause(VarList, MapperIdScopeSpec, MapperId,
1952
236
                                         Locs, UnresolvedMappers);
1953
236
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPToClause(llvm::ArrayRef<clang::Expr*>, clang::CXXScopeSpec&, clang::DeclarationNameInfo&, clang::OMPVarListLocTy const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPToClause(llvm::ArrayRef<clang::Expr*>, clang::CXXScopeSpec&, clang::DeclarationNameInfo&, clang::OMPVarListLocTy const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPToClause(llvm::ArrayRef<clang::Expr*>, clang::CXXScopeSpec&, clang::DeclarationNameInfo&, clang::OMPVarListLocTy const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPToClause(llvm::ArrayRef<clang::Expr*>, clang::CXXScopeSpec&, clang::DeclarationNameInfo&, clang::OMPVarListLocTy const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPToClause(llvm::ArrayRef<clang::Expr*>, clang::CXXScopeSpec&, clang::DeclarationNameInfo&, clang::OMPVarListLocTy const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPToClause(llvm::ArrayRef<clang::Expr*>, clang::CXXScopeSpec&, clang::DeclarationNameInfo&, clang::OMPVarListLocTy const&, llvm::ArrayRef<clang::Expr*>)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPToClause(llvm::ArrayRef<clang::Expr*>, clang::CXXScopeSpec&, clang::DeclarationNameInfo&, clang::OMPVarListLocTy const&, llvm::ArrayRef<clang::Expr*>)
Line
Count
Source
1950
236
                                ArrayRef<Expr *> UnresolvedMappers) {
1951
236
    return getSema().ActOnOpenMPToClause(VarList, MapperIdScopeSpec, MapperId,
1952
236
                                         Locs, UnresolvedMappers);
1953
236
  }
1954
1955
  /// Build a new OpenMP 'from' clause.
1956
  ///
1957
  /// By default, performs semantic analysis to build the new statement.
1958
  /// Subclasses may override this routine to provide different behavior.
1959
  OMPClause *RebuildOMPFromClause(ArrayRef<Expr *> VarList,
1960
                                  CXXScopeSpec &MapperIdScopeSpec,
1961
                                  DeclarationNameInfo &MapperId,
1962
                                  const OMPVarListLocTy &Locs,
1963
158
                                  ArrayRef<Expr *> UnresolvedMappers) {
1964
158
    return getSema().ActOnOpenMPFromClause(VarList, MapperIdScopeSpec, MapperId,
1965
158
                                           Locs, UnresolvedMappers);
1966
158
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPFromClause(llvm::ArrayRef<clang::Expr*>, clang::CXXScopeSpec&, clang::DeclarationNameInfo&, clang::OMPVarListLocTy const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPFromClause(llvm::ArrayRef<clang::Expr*>, clang::CXXScopeSpec&, clang::DeclarationNameInfo&, clang::OMPVarListLocTy const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPFromClause(llvm::ArrayRef<clang::Expr*>, clang::CXXScopeSpec&, clang::DeclarationNameInfo&, clang::OMPVarListLocTy const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPFromClause(llvm::ArrayRef<clang::Expr*>, clang::CXXScopeSpec&, clang::DeclarationNameInfo&, clang::OMPVarListLocTy const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPFromClause(llvm::ArrayRef<clang::Expr*>, clang::CXXScopeSpec&, clang::DeclarationNameInfo&, clang::OMPVarListLocTy const&, llvm::ArrayRef<clang::Expr*>)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPFromClause(llvm::ArrayRef<clang::Expr*>, clang::CXXScopeSpec&, clang::DeclarationNameInfo&, clang::OMPVarListLocTy const&, llvm::ArrayRef<clang::Expr*>)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPFromClause(llvm::ArrayRef<clang::Expr*>, clang::CXXScopeSpec&, clang::DeclarationNameInfo&, clang::OMPVarListLocTy const&, llvm::ArrayRef<clang::Expr*>)
Line
Count
Source
1963
158
                                  ArrayRef<Expr *> UnresolvedMappers) {
1964
158
    return getSema().ActOnOpenMPFromClause(VarList, MapperIdScopeSpec, MapperId,
1965
158
                                           Locs, UnresolvedMappers);
1966
158
  }
1967
1968
  /// Build a new OpenMP 'use_device_ptr' clause.
1969
  ///
1970
  /// By default, performs semantic analysis to build the new OpenMP clause.
1971
  /// Subclasses may override this routine to provide different behavior.
1972
  OMPClause *RebuildOMPUseDevicePtrClause(ArrayRef<Expr *> VarList,
1973
170
                                          const OMPVarListLocTy &Locs) {
1974
170
    return getSema().ActOnOpenMPUseDevicePtrClause(VarList, Locs);
1975
170
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPUseDevicePtrClause(llvm::ArrayRef<clang::Expr*>, clang::OMPVarListLocTy const&)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPUseDevicePtrClause(llvm::ArrayRef<clang::Expr*>, clang::OMPVarListLocTy const&)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPUseDevicePtrClause(llvm::ArrayRef<clang::Expr*>, clang::OMPVarListLocTy const&)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPUseDevicePtrClause(llvm::ArrayRef<clang::Expr*>, clang::OMPVarListLocTy const&)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPUseDevicePtrClause(llvm::ArrayRef<clang::Expr*>, clang::OMPVarListLocTy const&)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPUseDevicePtrClause(llvm::ArrayRef<clang::Expr*>, clang::OMPVarListLocTy const&)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPUseDevicePtrClause(llvm::ArrayRef<clang::Expr*>, clang::OMPVarListLocTy const&)
Line
Count
Source
1973
170
                                          const OMPVarListLocTy &Locs) {
1974
170
    return getSema().ActOnOpenMPUseDevicePtrClause(VarList, Locs);
1975
170
  }
1976
1977
  /// Build a new OpenMP 'is_device_ptr' clause.
1978
  ///
1979
  /// By default, performs semantic analysis to build the new OpenMP clause.
1980
  /// Subclasses may override this routine to provide different behavior.
1981
  OMPClause *RebuildOMPIsDevicePtrClause(ArrayRef<Expr *> VarList,
1982
804
                                         const OMPVarListLocTy &Locs) {
1983
804
    return getSema().ActOnOpenMPIsDevicePtrClause(VarList, Locs);
1984
804
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPIsDevicePtrClause(llvm::ArrayRef<clang::Expr*>, clang::OMPVarListLocTy const&)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPIsDevicePtrClause(llvm::ArrayRef<clang::Expr*>, clang::OMPVarListLocTy const&)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPIsDevicePtrClause(llvm::ArrayRef<clang::Expr*>, clang::OMPVarListLocTy const&)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPIsDevicePtrClause(llvm::ArrayRef<clang::Expr*>, clang::OMPVarListLocTy const&)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPIsDevicePtrClause(llvm::ArrayRef<clang::Expr*>, clang::OMPVarListLocTy const&)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPIsDevicePtrClause(llvm::ArrayRef<clang::Expr*>, clang::OMPVarListLocTy const&)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPIsDevicePtrClause(llvm::ArrayRef<clang::Expr*>, clang::OMPVarListLocTy const&)
Line
Count
Source
1982
804
                                         const OMPVarListLocTy &Locs) {
1983
804
    return getSema().ActOnOpenMPIsDevicePtrClause(VarList, Locs);
1984
804
  }
1985
1986
  /// Rebuild the operand to an Objective-C \@synchronized statement.
1987
  ///
1988
  /// By default, performs semantic analysis to build the new statement.
1989
  /// Subclasses may override this routine to provide different behavior.
1990
  ExprResult RebuildObjCAtSynchronizedOperand(SourceLocation atLoc,
1991
2
                                              Expr *object) {
1992
2
    return getSema().ActOnObjCAtSynchronizedOperand(atLoc, object);
1993
2
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildObjCAtSynchronizedOperand(clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildObjCAtSynchronizedOperand(clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildObjCAtSynchronizedOperand(clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildObjCAtSynchronizedOperand(clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildObjCAtSynchronizedOperand(clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildObjCAtSynchronizedOperand(clang::SourceLocation, clang::Expr*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildObjCAtSynchronizedOperand(clang::SourceLocation, clang::Expr*)
Line
Count
Source
1991
2
                                              Expr *object) {
1992
2
    return getSema().ActOnObjCAtSynchronizedOperand(atLoc, object);
1993
2
  }
1994
1995
  /// Build a new Objective-C \@synchronized statement.
1996
  ///
1997
  /// By default, performs semantic analysis to build the new statement.
1998
  /// Subclasses may override this routine to provide different behavior.
1999
  StmtResult RebuildObjCAtSynchronizedStmt(SourceLocation AtLoc,
2000
1
                                           Expr *Object, Stmt *Body) {
2001
1
    return getSema().ActOnObjCAtSynchronizedStmt(AtLoc, Object, Body);
2002
1
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildObjCAtSynchronizedStmt(clang::SourceLocation, clang::Expr*, clang::Stmt*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildObjCAtSynchronizedStmt(clang::SourceLocation, clang::Expr*, clang::Stmt*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildObjCAtSynchronizedStmt(clang::SourceLocation, clang::Expr*, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildObjCAtSynchronizedStmt(clang::SourceLocation, clang::Expr*, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildObjCAtSynchronizedStmt(clang::SourceLocation, clang::Expr*, clang::Stmt*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildObjCAtSynchronizedStmt(clang::SourceLocation, clang::Expr*, clang::Stmt*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildObjCAtSynchronizedStmt(clang::SourceLocation, clang::Expr*, clang::Stmt*)
Line
Count
Source
2000
1
                                           Expr *Object, Stmt *Body) {
2001
1
    return getSema().ActOnObjCAtSynchronizedStmt(AtLoc, Object, Body);
2002
1
  }
2003
2004
  /// Build a new Objective-C \@autoreleasepool statement.
2005
  ///
2006
  /// By default, performs semantic analysis to build the new statement.
2007
  /// Subclasses may override this routine to provide different behavior.
2008
  StmtResult RebuildObjCAutoreleasePoolStmt(SourceLocation AtLoc,
2009
0
                                            Stmt *Body) {
2010
0
    return getSema().ActOnObjCAutoreleasePoolStmt(AtLoc, Body);
2011
0
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildObjCAutoreleasePoolStmt(clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildObjCAutoreleasePoolStmt(clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildObjCAutoreleasePoolStmt(clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildObjCAutoreleasePoolStmt(clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildObjCAutoreleasePoolStmt(clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildObjCAutoreleasePoolStmt(clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildObjCAutoreleasePoolStmt(clang::SourceLocation, clang::Stmt*)
2012
2013
  /// Build a new Objective-C fast enumeration statement.
2014
  ///
2015
  /// By default, performs semantic analysis to build the new statement.
2016
  /// Subclasses may override this routine to provide different behavior.
2017
  StmtResult RebuildObjCForCollectionStmt(SourceLocation ForLoc,
2018
                                          Stmt *Element,
2019
                                          Expr *Collection,
2020
                                          SourceLocation RParenLoc,
2021
14
                                          Stmt *Body) {
2022
14
    StmtResult ForEachStmt = getSema().ActOnObjCForCollectionStmt(ForLoc,
2023
14
                                                Element,
2024
14
                                                Collection,
2025
14
                                                RParenLoc);
2026
14
    if (ForEachStmt.isInvalid())
2027
6
      return StmtError();
2028
8
2029
8
    return getSema().FinishObjCForCollectionStmt(ForEachStmt.get(), Body);
2030
8
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildObjCForCollectionStmt(clang::SourceLocation, clang::Stmt*, clang::Expr*, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildObjCForCollectionStmt(clang::SourceLocation, clang::Stmt*, clang::Expr*, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildObjCForCollectionStmt(clang::SourceLocation, clang::Stmt*, clang::Expr*, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildObjCForCollectionStmt(clang::SourceLocation, clang::Stmt*, clang::Expr*, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildObjCForCollectionStmt(clang::SourceLocation, clang::Stmt*, clang::Expr*, clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildObjCForCollectionStmt(clang::SourceLocation, clang::Stmt*, clang::Expr*, clang::SourceLocation, clang::Stmt*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildObjCForCollectionStmt(clang::SourceLocation, clang::Stmt*, clang::Expr*, clang::SourceLocation, clang::Stmt*)
Line
Count
Source
2021
14
                                          Stmt *Body) {
2022
14
    StmtResult ForEachStmt = getSema().ActOnObjCForCollectionStmt(ForLoc,
2023
14
                                                Element,
2024
14
                                                Collection,
2025
14
                                                RParenLoc);
2026
14
    if (ForEachStmt.isInvalid())
2027
6
      return StmtError();
2028
8
2029
8
    return getSema().FinishObjCForCollectionStmt(ForEachStmt.get(), Body);
2030
8
  }
2031
2032
  /// Build a new C++ exception declaration.
2033
  ///
2034
  /// By default, performs semantic analysis to build the new decaration.
2035
  /// Subclasses may override this routine to provide different behavior.
2036
  VarDecl *RebuildExceptionDecl(VarDecl *ExceptionDecl,
2037
                                TypeSourceInfo *Declarator,
2038
                                SourceLocation StartLoc,
2039
                                SourceLocation IdLoc,
2040
46
                                IdentifierInfo *Id) {
2041
46
    VarDecl *Var = getSema().BuildExceptionDeclaration(nullptr, Declarator,
2042
46
                                                       StartLoc, IdLoc, Id);
2043
46
    if (Var)
2044
46
      getSema().CurContext->addDecl(Var);
2045
46
    return Var;
2046
46
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildExceptionDecl(clang::VarDecl*, clang::TypeSourceInfo*, clang::SourceLocation, clang::SourceLocation, clang::IdentifierInfo*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildExceptionDecl(clang::VarDecl*, clang::TypeSourceInfo*, clang::SourceLocation, clang::SourceLocation, clang::IdentifierInfo*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildExceptionDecl(clang::VarDecl*, clang::TypeSourceInfo*, clang::SourceLocation, clang::SourceLocation, clang::IdentifierInfo*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildExceptionDecl(clang::VarDecl*, clang::TypeSourceInfo*, clang::SourceLocation, clang::SourceLocation, clang::IdentifierInfo*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildExceptionDecl(clang::VarDecl*, clang::TypeSourceInfo*, clang::SourceLocation, clang::SourceLocation, clang::IdentifierInfo*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildExceptionDecl(clang::VarDecl*, clang::TypeSourceInfo*, clang::SourceLocation, clang::SourceLocation, clang::IdentifierInfo*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildExceptionDecl(clang::VarDecl*, clang::TypeSourceInfo*, clang::SourceLocation, clang::SourceLocation, clang::IdentifierInfo*)
Line
Count
Source
2040
46
                                IdentifierInfo *Id) {
2041
46
    VarDecl *Var = getSema().BuildExceptionDeclaration(nullptr, Declarator,
2042
46
                                                       StartLoc, IdLoc, Id);
2043
46
    if (Var)
2044
46
      getSema().CurContext->addDecl(Var);
2045
46
    return Var;
2046
46
  }
2047
2048
  /// Build a new C++ catch statement.
2049
  ///
2050
  /// By default, performs semantic analysis to build the new statement.
2051
  /// Subclasses may override this routine to provide different behavior.
2052
  StmtResult RebuildCXXCatchStmt(SourceLocation CatchLoc,
2053
                                 VarDecl *ExceptionDecl,
2054
285
                                 Stmt *Handler) {
2055
285
    return Owned(new (getSema().Context) CXXCatchStmt(CatchLoc, ExceptionDecl,
2056
285
                                                      Handler));
2057
285
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildCXXCatchStmt(clang::SourceLocation, clang::VarDecl*, clang::Stmt*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildCXXCatchStmt(clang::SourceLocation, clang::VarDecl*, clang::Stmt*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildCXXCatchStmt(clang::SourceLocation, clang::VarDecl*, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildCXXCatchStmt(clang::SourceLocation, clang::VarDecl*, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildCXXCatchStmt(clang::SourceLocation, clang::VarDecl*, clang::Stmt*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildCXXCatchStmt(clang::SourceLocation, clang::VarDecl*, clang::Stmt*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildCXXCatchStmt(clang::SourceLocation, clang::VarDecl*, clang::Stmt*)
Line
Count
Source
2054
285
                                 Stmt *Handler) {
2055
285
    return Owned(new (getSema().Context) CXXCatchStmt(CatchLoc, ExceptionDecl,
2056
285
                                                      Handler));
2057
285
  }
2058
2059
  /// Build a new C++ try statement.
2060
  ///
2061
  /// By default, performs semantic analysis to build the new statement.
2062
  /// Subclasses may override this routine to provide different behavior.
2063
  StmtResult RebuildCXXTryStmt(SourceLocation TryLoc, Stmt *TryBlock,
2064
312
                               ArrayRef<Stmt *> Handlers) {
2065
312
    return getSema().ActOnCXXTryBlock(TryLoc, TryBlock, Handlers);
2066
312
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildCXXTryStmt(clang::SourceLocation, clang::Stmt*, llvm::ArrayRef<clang::Stmt*>)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildCXXTryStmt(clang::SourceLocation, clang::Stmt*, llvm::ArrayRef<clang::Stmt*>)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildCXXTryStmt(clang::SourceLocation, clang::Stmt*, llvm::ArrayRef<clang::Stmt*>)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildCXXTryStmt(clang::SourceLocation, clang::Stmt*, llvm::ArrayRef<clang::Stmt*>)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildCXXTryStmt(clang::SourceLocation, clang::Stmt*, llvm::ArrayRef<clang::Stmt*>)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildCXXTryStmt(clang::SourceLocation, clang::Stmt*, llvm::ArrayRef<clang::Stmt*>)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildCXXTryStmt(clang::SourceLocation, clang::Stmt*, llvm::ArrayRef<clang::Stmt*>)
Line
Count
Source
2064
312
                               ArrayRef<Stmt *> Handlers) {
2065
312
    return getSema().ActOnCXXTryBlock(TryLoc, TryBlock, Handlers);
2066
312
  }
2067
2068
  /// Build a new C++0x range-based for statement.
2069
  ///
2070
  /// By default, performs semantic analysis to build the new statement.
2071
  /// Subclasses may override this routine to provide different behavior.
2072
  StmtResult RebuildCXXForRangeStmt(SourceLocation ForLoc,
2073
                                    SourceLocation CoawaitLoc, Stmt *Init,
2074
                                    SourceLocation ColonLoc, Stmt *Range,
2075
                                    Stmt *Begin, Stmt *End, Expr *Cond,
2076
                                    Expr *Inc, Stmt *LoopVar,
2077
105
                                    SourceLocation RParenLoc) {
2078
105
    // If we've just learned that the range is actually an Objective-C
2079
105
    // collection, treat this as an Objective-C fast enumeration loop.
2080
105
    if (DeclStmt *RangeStmt = dyn_cast<DeclStmt>(Range)) {
2081
105
      if (RangeStmt->isSingleDecl()) {
2082
105
        if (VarDecl *RangeVar = dyn_cast<VarDecl>(RangeStmt->getSingleDecl())) {
2083
105
          if (RangeVar->isInvalidDecl())
2084
3
            return StmtError();
2085
102
2086
102
          Expr *RangeExpr = RangeVar->getInit();
2087
102
          if (!RangeExpr->isTypeDependent() &&
2088
102
              RangeExpr->getType()->isObjCObjectPointerType()) {
2089
3
            // FIXME: Support init-statements in Objective-C++20 ranged for
2090
3
            // statement.
2091
3
            if (Init) {
2092
1
              return SemaRef.Diag(Init->getBeginLoc(),
2093
1
                                  diag::err_objc_for_range_init_stmt)
2094
1
                         << Init->getSourceRange();
2095
1
            }
2096
2
            return getSema().ActOnObjCForCollectionStmt(ForLoc, LoopVar,
2097
2
                                                        RangeExpr, RParenLoc);
2098
2
          }
2099
102
        }
2100
105
      }
2101
105
    }
2102
99
2103
99
    return getSema().BuildCXXForRangeStmt(ForLoc, CoawaitLoc, Init, ColonLoc,
2104
99
                                          Range, Begin, End, Cond, Inc, LoopVar,
2105
99
                                          RParenLoc, Sema::BFRK_Rebuild);
2106
99
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildCXXForRangeStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*, clang::SourceLocation, clang::Stmt*, clang::Stmt*, clang::Stmt*, clang::Expr*, clang::Expr*, clang::Stmt*, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildCXXForRangeStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*, clang::SourceLocation, clang::Stmt*, clang::Stmt*, clang::Stmt*, clang::Expr*, clang::Expr*, clang::Stmt*, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildCXXForRangeStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*, clang::SourceLocation, clang::Stmt*, clang::Stmt*, clang::Stmt*, clang::Expr*, clang::Expr*, clang::Stmt*, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildCXXForRangeStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*, clang::SourceLocation, clang::Stmt*, clang::Stmt*, clang::Stmt*, clang::Expr*, clang::Expr*, clang::Stmt*, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildCXXForRangeStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*, clang::SourceLocation, clang::Stmt*, clang::Stmt*, clang::Stmt*, clang::Expr*, clang::Expr*, clang::Stmt*, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildCXXForRangeStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*, clang::SourceLocation, clang::Stmt*, clang::Stmt*, clang::Stmt*, clang::Expr*, clang::Expr*, clang::Stmt*, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildCXXForRangeStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*, clang::SourceLocation, clang::Stmt*, clang::Stmt*, clang::Stmt*, clang::Expr*, clang::Expr*, clang::Stmt*, clang::SourceLocation)
Line
Count
Source
2077
105
                                    SourceLocation RParenLoc) {
2078
105
    // If we've just learned that the range is actually an Objective-C
2079
105
    // collection, treat this as an Objective-C fast enumeration loop.
2080
105
    if (DeclStmt *RangeStmt = dyn_cast<DeclStmt>(Range)) {
2081
105
      if (RangeStmt->isSingleDecl()) {
2082
105
        if (VarDecl *RangeVar = dyn_cast<VarDecl>(RangeStmt->getSingleDecl())) {
2083
105
          if (RangeVar->isInvalidDecl())
2084
3
            return StmtError();
2085
102
2086
102
          Expr *RangeExpr = RangeVar->getInit();
2087
102
          if (!RangeExpr->isTypeDependent() &&
2088
102
              RangeExpr->getType()->isObjCObjectPointerType()) {
2089
3
            // FIXME: Support init-statements in Objective-C++20 ranged for
2090
3
            // statement.
2091
3
            if (Init) {
2092
1
              return SemaRef.Diag(Init->getBeginLoc(),
2093
1
                                  diag::err_objc_for_range_init_stmt)
2094
1
                         << Init->getSourceRange();
2095
1
            }
2096
2
            return getSema().ActOnObjCForCollectionStmt(ForLoc, LoopVar,
2097
2
                                                        RangeExpr, RParenLoc);
2098
2
          }
2099
102
        }
2100
105
      }
2101
105
    }
2102
99
2103
99
    return getSema().BuildCXXForRangeStmt(ForLoc, CoawaitLoc, Init, ColonLoc,
2104
99
                                          Range, Begin, End, Cond, Inc, LoopVar,
2105
99
                                          RParenLoc, Sema::BFRK_Rebuild);
2106
99
  }
2107
2108
  /// Build a new C++0x range-based for statement.
2109
  ///
2110
  /// By default, performs semantic analysis to build the new statement.
2111
  /// Subclasses may override this routine to provide different behavior.
2112
  StmtResult RebuildMSDependentExistsStmt(SourceLocation KeywordLoc,
2113
                                          bool IsIfExists,
2114
                                          NestedNameSpecifierLoc QualifierLoc,
2115
                                          DeclarationNameInfo NameInfo,
2116
0
                                          Stmt *Nested) {
2117
0
    return getSema().BuildMSDependentExistsStmt(KeywordLoc, IsIfExists,
2118
0
                                                QualifierLoc, NameInfo, Nested);
2119
0
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildMSDependentExistsStmt(clang::SourceLocation, bool, clang::NestedNameSpecifierLoc, clang::DeclarationNameInfo, clang::Stmt*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildMSDependentExistsStmt(clang::SourceLocation, bool, clang::NestedNameSpecifierLoc, clang::DeclarationNameInfo, clang::Stmt*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildMSDependentExistsStmt(clang::SourceLocation, bool, clang::NestedNameSpecifierLoc, clang::DeclarationNameInfo, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildMSDependentExistsStmt(clang::SourceLocation, bool, clang::NestedNameSpecifierLoc, clang::DeclarationNameInfo, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildMSDependentExistsStmt(clang::SourceLocation, bool, clang::NestedNameSpecifierLoc, clang::DeclarationNameInfo, clang::Stmt*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildMSDependentExistsStmt(clang::SourceLocation, bool, clang::NestedNameSpecifierLoc, clang::DeclarationNameInfo, clang::Stmt*)
Unexecuted instantiation: SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildMSDependentExistsStmt(clang::SourceLocation, bool, clang::NestedNameSpecifierLoc, clang::DeclarationNameInfo, clang::Stmt*)
2120
2121
  /// Attach body to a C++0x range-based for statement.
2122
  ///
2123
  /// By default, performs semantic analysis to finish the new statement.
2124
  /// Subclasses may override this routine to provide different behavior.
2125
90
  StmtResult FinishCXXForRangeStmt(Stmt *ForRange, Stmt *Body) {
2126
90
    return getSema().FinishCXXForRangeStmt(ForRange, Body);
2127
90
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::FinishCXXForRangeStmt(clang::Stmt*, clang::Stmt*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::FinishCXXForRangeStmt(clang::Stmt*, clang::Stmt*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::FinishCXXForRangeStmt(clang::Stmt*, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::FinishCXXForRangeStmt(clang::Stmt*, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::FinishCXXForRangeStmt(clang::Stmt*, clang::Stmt*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::FinishCXXForRangeStmt(clang::Stmt*, clang::Stmt*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::FinishCXXForRangeStmt(clang::Stmt*, clang::Stmt*)
Line
Count
Source
2125
90
  StmtResult FinishCXXForRangeStmt(Stmt *ForRange, Stmt *Body) {
2126
90
    return getSema().FinishCXXForRangeStmt(ForRange, Body);
2127
90
  }
2128
2129
  StmtResult RebuildSEHTryStmt(bool IsCXXTry, SourceLocation TryLoc,
2130
4
                               Stmt *TryBlock, Stmt *Handler) {
2131
4
    return getSema().ActOnSEHTryBlock(IsCXXTry, TryLoc, TryBlock, Handler);
2132
4
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildSEHTryStmt(bool, clang::SourceLocation, clang::Stmt*, clang::Stmt*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildSEHTryStmt(bool, clang::SourceLocation, clang::Stmt*, clang::Stmt*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildSEHTryStmt(bool, clang::SourceLocation, clang::Stmt*, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildSEHTryStmt(bool, clang::SourceLocation, clang::Stmt*, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildSEHTryStmt(bool, clang::SourceLocation, clang::Stmt*, clang::Stmt*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildSEHTryStmt(bool, clang::SourceLocation, clang::Stmt*, clang::Stmt*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildSEHTryStmt(bool, clang::SourceLocation, clang::Stmt*, clang::Stmt*)
Line
Count
Source
2130
4
                               Stmt *TryBlock, Stmt *Handler) {
2131
4
    return getSema().ActOnSEHTryBlock(IsCXXTry, TryLoc, TryBlock, Handler);
2132
4
  }
2133
2134
  StmtResult RebuildSEHExceptStmt(SourceLocation Loc, Expr *FilterExpr,
2135
3
                                  Stmt *Block) {
2136
3
    return getSema().ActOnSEHExceptBlock(Loc, FilterExpr, Block);
2137
3
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildSEHExceptStmt(clang::SourceLocation, clang::Expr*, clang::Stmt*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildSEHExceptStmt(clang::SourceLocation, clang::Expr*, clang::Stmt*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildSEHExceptStmt(clang::SourceLocation, clang::Expr*, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildSEHExceptStmt(clang::SourceLocation, clang::Expr*, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildSEHExceptStmt(clang::SourceLocation, clang::Expr*, clang::Stmt*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildSEHExceptStmt(clang::SourceLocation, clang::Expr*, clang::Stmt*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildSEHExceptStmt(clang::SourceLocation, clang::Expr*, clang::Stmt*)
Line
Count
Source
2135
3
                                  Stmt *Block) {
2136
3
    return getSema().ActOnSEHExceptBlock(Loc, FilterExpr, Block);
2137
3
  }
2138
2139
1
  StmtResult RebuildSEHFinallyStmt(SourceLocation Loc, Stmt *Block) {
2140
1
    return SEHFinallyStmt::Create(getSema().getASTContext(), Loc, Block);
2141
1
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildSEHFinallyStmt(clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildSEHFinallyStmt(clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildSEHFinallyStmt(clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildSEHFinallyStmt(clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildSEHFinallyStmt(clang::SourceLocation, clang::Stmt*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildSEHFinallyStmt(clang::SourceLocation, clang::Stmt*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildSEHFinallyStmt(clang::SourceLocation, clang::Stmt*)
Line
Count
Source
2139
1
  StmtResult RebuildSEHFinallyStmt(SourceLocation Loc, Stmt *Block) {
2140
1
    return SEHFinallyStmt::Create(getSema().getASTContext(), Loc, Block);
2141
1
  }
2142
2143
  /// Build a new predefined expression.
2144
  ///
2145
  /// By default, performs semantic analysis to build the new expression.
2146
  /// Subclasses may override this routine to provide different behavior.
2147
  ExprResult RebuildPredefinedExpr(SourceLocation Loc,
2148
0
                                   PredefinedExpr::IdentKind IK) {
2149
0
    return getSema().BuildPredefinedExpr(Loc, IK);
2150
0
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildPredefinedExpr(clang::SourceLocation, clang::PredefinedExpr::IdentKind)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildPredefinedExpr(clang::SourceLocation, clang::PredefinedExpr::IdentKind)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildPredefinedExpr(clang::SourceLocation, clang::PredefinedExpr::IdentKind)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildPredefinedExpr(clang::SourceLocation, clang::PredefinedExpr::IdentKind)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildPredefinedExpr(clang::SourceLocation, clang::PredefinedExpr::IdentKind)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildPredefinedExpr(clang::SourceLocation, clang::PredefinedExpr::IdentKind)
2151
2152
  /// Build a new expression that references a declaration.
2153
  ///
2154
  /// By default, performs semantic analysis to build the new expression.
2155
  /// Subclasses may override this routine to provide different behavior.
2156
  ExprResult RebuildDeclarationNameExpr(const CXXScopeSpec &SS,
2157
                                        LookupResult &R,
2158
158k
                                        bool RequiresADL) {
2159
158k
    return getSema().BuildDeclarationNameExpr(SS, R, RequiresADL);
2160
158k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildDeclarationNameExpr(clang::CXXScopeSpec const&, clang::LookupResult&, bool)
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildDeclarationNameExpr(clang::CXXScopeSpec const&, clang::LookupResult&, bool)
Line
Count
Source
2158
80
                                        bool RequiresADL) {
2159
80
    return getSema().BuildDeclarationNameExpr(SS, R, RequiresADL);
2160
80
  }
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildDeclarationNameExpr(clang::CXXScopeSpec const&, clang::LookupResult&, bool)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildDeclarationNameExpr(clang::CXXScopeSpec const&, clang::LookupResult&, bool)
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildDeclarationNameExpr(clang::CXXScopeSpec const&, clang::LookupResult&, bool)
Line
Count
Source
2158
3
                                        bool RequiresADL) {
2159
3
    return getSema().BuildDeclarationNameExpr(SS, R, RequiresADL);
2160
3
  }
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildDeclarationNameExpr(clang::CXXScopeSpec const&, clang::LookupResult&, bool)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildDeclarationNameExpr(clang::CXXScopeSpec const&, clang::LookupResult&, bool)
Line
Count
Source
2158
158k
                                        bool RequiresADL) {
2159
158k
    return getSema().BuildDeclarationNameExpr(SS, R, RequiresADL);
2160
158k
  }
2161
2162
2163
  /// Build a new expression that references a declaration.
2164
  ///
2165
  /// By default, performs semantic analysis to build the new expression.
2166
  /// Subclasses may override this routine to provide different behavior.
2167
  ExprResult RebuildDeclRefExpr(NestedNameSpecifierLoc QualifierLoc,
2168
                                ValueDecl *VD,
2169
                                const DeclarationNameInfo &NameInfo,
2170
1.22M
                                TemplateArgumentListInfo *TemplateArgs) {
2171
1.22M
    CXXScopeSpec SS;
2172
1.22M
    SS.Adopt(QualifierLoc);
2173
1.22M
2174
1.22M
    // FIXME: loses template args.
2175
1.22M
2176
1.22M
    return getSema().BuildDeclarationNameExpr(SS, NameInfo, VD);
2177
1.22M
  }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildDeclRefExpr(clang::NestedNameSpecifierLoc, clang::ValueDecl*, clang::DeclarationNameInfo const&, clang::TemplateArgumentListInfo*)
Line
Count
Source
2170
1.25k
                                TemplateArgumentListInfo *TemplateArgs) {
2171
1.25k
    CXXScopeSpec SS;
2172
1.25k
    SS.Adopt(QualifierLoc);
2173
1.25k
2174
1.25k
    // FIXME: loses template args.
2175
1.25k
2176
1.25k
    return getSema().BuildDeclarationNameExpr(SS, NameInfo, VD);
2177
1.25k
  }
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildDeclRefExpr(clang::NestedNameSpecifierLoc, clang::ValueDecl*, clang::DeclarationNameInfo const&, clang::TemplateArgumentListInfo*)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildDeclRefExpr(clang::NestedNameSpecifierLoc, clang::ValueDecl*, clang::DeclarationNameInfo const&, clang::TemplateArgumentListInfo*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildDeclRefExpr(clang::NestedNameSpecifierLoc, clang::ValueDecl*, clang::DeclarationNameInfo const&, clang::TemplateArgumentListInfo*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildDeclRefExpr(clang::NestedNameSpecifierLoc, clang::ValueDecl*, clang::DeclarationNameInfo const&, clang::TemplateArgumentListInfo*)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildDeclRefExpr(clang::NestedNameSpecifierLoc, clang::ValueDecl*, clang::DeclarationNameInfo const&, clang::TemplateArgumentListInfo*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildDeclRefExpr(clang::NestedNameSpecifierLoc, clang::ValueDecl*, clang::DeclarationNameInfo const&, clang::TemplateArgumentListInfo*)
Line
Count
Source
2170
1.22M
                                TemplateArgumentListInfo *TemplateArgs) {
2171
1.22M
    CXXScopeSpec SS;
2172
1.22M
    SS.Adopt(QualifierLoc);
2173
1.22M
2174
1.22M
    // FIXME: loses template args.
2175
1.22M
2176
1.22M
    return getSema().BuildDeclarationNameExpr(SS, NameInfo, VD);
2177
1.22M
  }
2178
2179
  /// Build a new expression in parentheses.
2180
  ///
2181
  /// By default, performs semantic analysis to build the new expression.
2182
  /// Subclasses may override this routine to provide different behavior.
2183
  ExprResult RebuildParenExpr(Expr *SubExpr, SourceLocation LParen,
2184
300k
                                    SourceLocation RParen) {
2185
300k
    return getSema().ActOnParenExpr(LParen, RParen, SubExpr);
2186
300k
  }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildParenExpr(clang::Expr*, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
2184
1.14k
                                    SourceLocation RParen) {
2185
1.14k
    return getSema().ActOnParenExpr(LParen, RParen, SubExpr);
2186
1.14k
  }
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildParenExpr(clang::Expr*, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
2184
6
                                    SourceLocation RParen) {
2185
6
    return getSema().ActOnParenExpr(LParen, RParen, SubExpr);
2186
6
  }
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildParenExpr(clang::Expr*, clang::SourceLocation, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildParenExpr(clang::Expr*, clang::SourceLocation, clang::SourceLocation)
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildParenExpr(clang::Expr*, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
2184
1
                                    SourceLocation RParen) {
2185
1
    return getSema().ActOnParenExpr(LParen, RParen, SubExpr);
2186
1
  }
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildParenExpr(clang::Expr*, clang::SourceLocation, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildParenExpr(clang::Expr*, clang::SourceLocation, clang::SourceLocation)
Line
Count
Source
2184
299k
                                    SourceLocation RParen) {
2185
299k
    return getSema().ActOnParenExpr(LParen, RParen, SubExpr);
2186
299k
  }
2187
2188
  /// Build a new pseudo-destructor expression.
2189
  ///
2190
  /// By default, performs semantic analysis to build the new expression.
2191
  /// Subclasses may override this routine to provide different behavior.
2192
  ExprResult RebuildCXXPseudoDestructorExpr(Expr *Base,
2193
                                            SourceLocation OperatorLoc,
2194
                                            bool isArrow,
2195
                                            CXXScopeSpec &SS,
2196
                                            TypeSourceInfo *ScopeType,
2197
                                            SourceLocation CCLoc,
2198
                                            SourceLocation TildeLoc,
2199
                                        PseudoDestructorTypeStorage Destroyed);
2200
2201
  /// Build a new unary operator expression.
2202
  ///
2203
  /// By default, performs semantic analysis to build the new expression.
2204
  /// Subclasses may override this routine to provide different behavior.
2205
  ExprResult RebuildUnaryOperator(SourceLocation OpLoc,
2206
                                        UnaryOperatorKind Opc,
2207
463k
                                        Expr *SubExpr) {
2208
463k
    return getSema().BuildUnaryOp(/*Scope=*/nullptr, OpLoc, Opc, SubExpr);
2209
463k
  }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildUnaryOperator(clang::SourceLocation, clang::UnaryOperatorKind, clang::Expr*)
Line
Count
Source
2207
49
                                        Expr *SubExpr) {
2208
49
    return getSema().BuildUnaryOp(/*Scope=*/nullptr, OpLoc, Opc, SubExpr);
2209
49
  }
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildUnaryOperator(clang::SourceLocation, clang::UnaryOperatorKind, clang::Expr*)
Line
Count
Source
2207
10
                                        Expr *SubExpr) {
2208
10
    return getSema().BuildUnaryOp(/*Scope=*/nullptr, OpLoc, Opc, SubExpr);
2209
10
  }
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildUnaryOperator(clang::SourceLocation, clang::UnaryOperatorKind, clang::Expr*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildUnaryOperator(clang::SourceLocation, clang::UnaryOperatorKind, clang::Expr*)
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildUnaryOperator(clang::SourceLocation, clang::UnaryOperatorKind, clang::Expr*)
Line
Count
Source
2207
4.04k
                                        Expr *SubExpr) {
2208
4.04k
    return getSema().BuildUnaryOp(/*Scope=*/nullptr, OpLoc, Opc, SubExpr);
2209
4.04k
  }
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildUnaryOperator(clang::SourceLocation, clang::UnaryOperatorKind, clang::Expr*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildUnaryOperator(clang::SourceLocation, clang::UnaryOperatorKind, clang::Expr*)
Line
Count
Source
2207
459k
                                        Expr *SubExpr) {
2208
459k
    return getSema().BuildUnaryOp(/*Scope=*/nullptr, OpLoc, Opc, SubExpr);
2209
459k
  }
2210
2211
  /// Build a new builtin offsetof expression.
2212
  ///
2213
  /// By default, performs semantic analysis to build the new expression.
2214
  /// Subclasses may override this routine to provide different behavior.
2215
  ExprResult RebuildOffsetOfExpr(SourceLocation OperatorLoc,
2216
                                 TypeSourceInfo *Type,
2217
                                 ArrayRef<Sema::OffsetOfComponent> Components,
2218
4
                                 SourceLocation RParenLoc) {
2219
4
    return getSema().BuildBuiltinOffsetOf(OperatorLoc, Type, Components,
2220
4
                                          RParenLoc);
2221
4
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOffsetOfExpr(clang::SourceLocation, clang::TypeSourceInfo*, llvm::ArrayRef<clang::Sema::OffsetOfComponent>, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOffsetOfExpr(clang::SourceLocation, clang::TypeSourceInfo*, llvm::ArrayRef<clang::Sema::OffsetOfComponent>, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOffsetOfExpr(clang::SourceLocation, clang::TypeSourceInfo*, llvm::ArrayRef<clang::Sema::OffsetOfComponent>, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOffsetOfExpr(clang::SourceLocation, clang::TypeSourceInfo*, llvm::ArrayRef<clang::Sema::OffsetOfComponent>, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOffsetOfExpr(clang::SourceLocation, clang::TypeSourceInfo*, llvm::ArrayRef<clang::Sema::OffsetOfComponent>, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOffsetOfExpr(clang::SourceLocation, clang::TypeSourceInfo*, llvm::ArrayRef<clang::Sema::OffsetOfComponent>, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOffsetOfExpr(clang::SourceLocation, clang::TypeSourceInfo*, llvm::ArrayRef<clang::Sema::OffsetOfComponent>, clang::SourceLocation)
Line
Count
Source
2218
4
                                 SourceLocation RParenLoc) {
2219
4
    return getSema().BuildBuiltinOffsetOf(OperatorLoc, Type, Components,
2220
4
                                          RParenLoc);
2221
4
  }
2222
2223
  /// Build a new sizeof, alignof or vec_step expression with a
2224
  /// type argument.
2225
  ///
2226
  /// By default, performs semantic analysis to build the new expression.
2227
  /// Subclasses may override this routine to provide different behavior.
2228
  ExprResult RebuildUnaryExprOrTypeTrait(TypeSourceInfo *TInfo,
2229
                                         SourceLocation OpLoc,
2230
                                         UnaryExprOrTypeTrait ExprKind,
2231
46.5k
                                         SourceRange R) {
2232
46.5k
    return getSema().CreateUnaryExprOrTypeTraitExpr(TInfo, OpLoc, ExprKind, R);
2233
46.5k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildUnaryExprOrTypeTrait(clang::TypeSourceInfo*, clang::SourceLocation, clang::UnaryExprOrTypeTrait, clang::SourceRange)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildUnaryExprOrTypeTrait(clang::TypeSourceInfo*, clang::SourceLocation, clang::UnaryExprOrTypeTrait, clang::SourceRange)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildUnaryExprOrTypeTrait(clang::TypeSourceInfo*, clang::SourceLocation, clang::UnaryExprOrTypeTrait, clang::SourceRange)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildUnaryExprOrTypeTrait(clang::TypeSourceInfo*, clang::SourceLocation, clang::UnaryExprOrTypeTrait, clang::SourceRange)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildUnaryExprOrTypeTrait(clang::TypeSourceInfo*, clang::SourceLocation, clang::UnaryExprOrTypeTrait, clang::SourceRange)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildUnaryExprOrTypeTrait(clang::TypeSourceInfo*, clang::SourceLocation, clang::UnaryExprOrTypeTrait, clang::SourceRange)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildUnaryExprOrTypeTrait(clang::TypeSourceInfo*, clang::SourceLocation, clang::UnaryExprOrTypeTrait, clang::SourceRange)
Line
Count
Source
2231
46.5k
                                         SourceRange R) {
2232
46.5k
    return getSema().CreateUnaryExprOrTypeTraitExpr(TInfo, OpLoc, ExprKind, R);
2233
46.5k
  }
2234
2235
  /// Build a new sizeof, alignof or vec step expression with an
2236
  /// expression argument.
2237
  ///
2238
  /// By default, performs semantic analysis to build the new expression.
2239
  /// Subclasses may override this routine to provide different behavior.
2240
  ExprResult RebuildUnaryExprOrTypeTrait(Expr *SubExpr, SourceLocation OpLoc,
2241
                                         UnaryExprOrTypeTrait ExprKind,
2242
26.9k
                                         SourceRange R) {
2243
26.9k
    ExprResult Result
2244
26.9k
      = getSema().CreateUnaryExprOrTypeTraitExpr(SubExpr, OpLoc, ExprKind);
2245
26.9k
    if (Result.isInvalid())
2246
9
      return ExprError();
2247
26.9k
2248
26.9k
    return Result;
2249
26.9k
  }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildUnaryExprOrTypeTrait(clang::Expr*, clang::SourceLocation, clang::UnaryExprOrTypeTrait, clang::SourceRange)
Line
Count
Source
2242
1
                                         SourceRange R) {
2243
1
    ExprResult Result
2244
1
      = getSema().CreateUnaryExprOrTypeTraitExpr(SubExpr, OpLoc, ExprKind);
2245
1
    if (Result.isInvalid())
2246
0
      return ExprError();
2247
1
2248
1
    return Result;
2249
1
  }
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildUnaryExprOrTypeTrait(clang::Expr*, clang::SourceLocation, clang::UnaryExprOrTypeTrait, clang::SourceRange)
Line
Count
Source
2242
1
                                         SourceRange R) {
2243
1
    ExprResult Result
2244
1
      = getSema().CreateUnaryExprOrTypeTraitExpr(SubExpr, OpLoc, ExprKind);
2245
1
    if (Result.isInvalid())
2246
0
      return ExprError();
2247
1
2248
1
    return Result;
2249
1
  }
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildUnaryExprOrTypeTrait(clang::Expr*, clang::SourceLocation, clang::UnaryExprOrTypeTrait, clang::SourceRange)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildUnaryExprOrTypeTrait(clang::Expr*, clang::SourceLocation, clang::UnaryExprOrTypeTrait, clang::SourceRange)
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildUnaryExprOrTypeTrait(clang::Expr*, clang::SourceLocation, clang::UnaryExprOrTypeTrait, clang::SourceRange)
Line
Count
Source
2242
1
                                         SourceRange R) {
2243
1
    ExprResult Result
2244
1
      = getSema().CreateUnaryExprOrTypeTraitExpr(SubExpr, OpLoc, ExprKind);
2245
1
    if (Result.isInvalid())
2246
0
      return ExprError();
2247
1
2248
1
    return Result;
2249
1
  }
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildUnaryExprOrTypeTrait(clang::Expr*, clang::SourceLocation, clang::UnaryExprOrTypeTrait, clang::SourceRange)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildUnaryExprOrTypeTrait(clang::Expr*, clang::SourceLocation, clang::UnaryExprOrTypeTrait, clang::SourceRange)
Line
Count
Source
2242
26.9k
                                         SourceRange R) {
2243
26.9k
    ExprResult Result
2244
26.9k
      = getSema().CreateUnaryExprOrTypeTraitExpr(SubExpr, OpLoc, ExprKind);
2245
26.9k
    if (Result.isInvalid())
2246
9
      return ExprError();
2247
26.9k
2248
26.9k
    return Result;
2249
26.9k
  }
2250
2251
  /// Build a new array subscript expression.
2252
  ///
2253
  /// By default, performs semantic analysis to build the new expression.
2254
  /// Subclasses may override this routine to provide different behavior.
2255
  ExprResult RebuildArraySubscriptExpr(Expr *LHS,
2256
                                             SourceLocation LBracketLoc,
2257
                                             Expr *RHS,
2258
78.7k
                                             SourceLocation RBracketLoc) {
2259
78.7k
    return getSema().ActOnArraySubscriptExpr(/*Scope=*/nullptr, LHS,
2260
78.7k
                                             LBracketLoc, RHS,
2261
78.7k
                                             RBracketLoc);
2262
78.7k
  }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildArraySubscriptExpr(clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Line
Count
Source
2258
9
                                             SourceLocation RBracketLoc) {
2259
9
    return getSema().ActOnArraySubscriptExpr(/*Scope=*/nullptr, LHS,
2260
9
                                             LBracketLoc, RHS,
2261
9
                                             RBracketLoc);
2262
9
  }
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildArraySubscriptExpr(clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildArraySubscriptExpr(clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildArraySubscriptExpr(clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildArraySubscriptExpr(clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildArraySubscriptExpr(clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildArraySubscriptExpr(clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Line
Count
Source
2258
78.7k
                                             SourceLocation RBracketLoc) {
2259
78.7k
    return getSema().ActOnArraySubscriptExpr(/*Scope=*/nullptr, LHS,
2260
78.7k
                                             LBracketLoc, RHS,
2261
78.7k
                                             RBracketLoc);
2262
78.7k
  }
2263
2264
  /// Build a new array section expression.
2265
  ///
2266
  /// By default, performs semantic analysis to build the new expression.
2267
  /// Subclasses may override this routine to provide different behavior.
2268
  ExprResult RebuildOMPArraySectionExpr(Expr *Base, SourceLocation LBracketLoc,
2269
                                        Expr *LowerBound,
2270
                                        SourceLocation ColonLoc, Expr *Length,
2271
1.35k
                                        SourceLocation RBracketLoc) {
2272
1.35k
    return getSema().ActOnOMPArraySectionExpr(Base, LBracketLoc, LowerBound,
2273
1.35k
                                              ColonLoc, Length, RBracketLoc);
2274
1.35k
  }
Unexecuted instantiation: SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildOMPArraySectionExpr(clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Unexecuted instantiation: SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildOMPArraySectionExpr(clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildOMPArraySectionExpr(clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Line
Count
Source
2271
24
                                        SourceLocation RBracketLoc) {
2272
24
    return getSema().ActOnOMPArraySectionExpr(Base, LBracketLoc, LowerBound,
2273
24
                                              ColonLoc, Length, RBracketLoc);
2274
24
  }
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildOMPArraySectionExpr(clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildOMPArraySectionExpr(clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildOMPArraySectionExpr(clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildOMPArraySectionExpr(clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
Line
Count
Source
2271
1.32k
                                        SourceLocation RBracketLoc) {
2272
1.32k
    return getSema().ActOnOMPArraySectionExpr(Base, LBracketLoc, LowerBound,
2273
1.32k
                                              ColonLoc, Length, RBracketLoc);
2274
1.32k
  }
2275
2276
  /// Build a new call expression.
2277
  ///
2278
  /// By default, performs semantic analysis to build the new expression.
2279
  /// Subclasses may override this routine to provide different behavior.
2280
  ExprResult RebuildCallExpr(Expr *Callee, SourceLocation LParenLoc,
2281
                                   MultiExprArg Args,
2282
                                   SourceLocation RParenLoc,
2283
690k
                                   Expr *ExecConfig = nullptr) {
2284
690k
    return getSema().BuildCallExpr(/*Scope=*/nullptr, Callee, LParenLoc, Args,
2285
690k
                                   RParenLoc, ExecConfig);
2286
690k
  }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildCallExpr(clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*)
Line
Count
Source
2283
46
                                   Expr *ExecConfig = nullptr) {
2284
46
    return getSema().BuildCallExpr(/*Scope=*/nullptr, Callee, LParenLoc, Args,
2285
46
                                   RParenLoc, ExecConfig);
2286
46
  }
SemaExprCXX.cpp:clang::TreeTransform<(anonymous namespace)::TransformTypos>::RebuildCallExpr(clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*)
Line
Count
Source
2283
156
                                   Expr *ExecConfig = nullptr) {
2284
156
    return getSema().BuildCallExpr(/*Scope=*/nullptr, Callee, LParenLoc, Args,
2285
156
                                   RParenLoc, ExecConfig);
2286
156
  }
Unexecuted instantiation: SemaOpenMP.cpp:clang::TreeTransform<(anonymous namespace)::TransformExprToCaptures>::RebuildCallExpr(clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*)
Unexecuted instantiation: SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::ExtractTypeForDeductionGuide>::RebuildCallExpr(clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*)
SemaTemplate.cpp:clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildCallExpr(clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*)
Line
Count
Source
2283
7.17k
                                   Expr *ExecConfig = nullptr) {
2284
7.17k
    return getSema().BuildCallExpr(/*Scope=*/nullptr, Callee, LParenLoc, Args,
2285
7.17k
                                   RParenLoc, ExecConfig);
2286
7.17k
  }
Unexecuted instantiation: SemaTemplateDeduction.cpp:clang::TreeTransform<(anonymous namespace)::SubstituteDeducedTypeTransform>::RebuildCallExpr(clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*)
SemaTemplateInstantiate.cpp:clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildCallExpr(clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*)
Line
Count
Source
2283
683k
                                   Expr *ExecConfig = nullptr) {
2284
683k
    return getSema().BuildCallExpr(/*Scope=*/nullptr, Callee, LParenLoc, Args,
2285
683k
                                   RParenLoc, ExecConfig);
2286
683k
  }
2287
2288
  /// Build a new member access expression.
2289
  ///
2290
  /// By default, performs semantic analysis to build the new expression.
2291
  /// Subclasses may override this routine to provide different behavior.
2292
  ExprResult RebuildMemberExpr(Expr *Base, SourceLocation OpLoc,
2293
                               bool isArrow,
2294
                               NestedNameSpecifierLoc QualifierLoc,
2295
                               SourceLocation TemplateKWLoc,
2296
                               const DeclarationNameInfo &MemberNameInfo,
2297
                               ValueDecl *Member,
2298
                               NamedDecl *FoundDecl,
2299
                        const TemplateArgumentListInfo *ExplicitTemplateArgs,
2300
266k
                               NamedDecl *FirstQualifierInScope) {
2301
266k
    ExprResult BaseResult = getSema().PerformMemberExprBaseConversion(Base,
2302
266k
                                                                      isArrow);
2303
266k
    if (!Member->getDeclName()) {
2304
46
      // We have a reference to an unnamed field.  This is always the
2305
46
      // base of an anonymous struct/union member access, i.e. the
2306
46
      // field is always of record type.
2307
46
      assert(Member->getType()->isRecordType() &&
2308
46
             "unnamed member not of record type?");
2309
46
2310
46
      BaseResult =
2311
46
        getSema().PerformObjectMemberConversion(BaseResult.get(),
2312
46
                                                QualifierLoc.getNestedNameSpecifier(),
2313
46
                                                FoundDecl, Member);
2314
46
      if (BaseResult.isInvalid())
2315
1
        return ExprError();
2316
45
      Base = BaseResult.get();
2317
45
2318
45
      CXXScopeSpec EmptySS;
2319
45
      return getSema().BuildFieldReferenceExpr(
2320
45
          Base, isArrow, OpLoc, EmptySS, cast<FieldDecl>(Member),
2321
45
          DeclAccessPair::make(FoundDecl, FoundDecl->getAccess()), MemberNameInfo);
2322
45
    }
2323
266k
2324
266k
    CXXScopeSpec SS;
2325
266k
    SS.Adopt(QualifierLoc);
2326
266k
2327
266k
    Base = BaseResult.get();
2328
266k
    QualType BaseType = Base->getType();
2329
266k
2330
266k
    if (isArrow && 
!BaseType->isPointerType()260k
)
2331
0
      return ExprError();
2332
266k
2333
266k
    // FIXME: this involves duplicating earlier analysis in a lot of
2334
266k
    // cases; we should avoid this when possible.
2335
266k
    LookupResult R(getSema(), MemberNameInfo, Sema::LookupMemberName);
2336
266k
    R.addDecl(FoundDecl);
2337
266k
    R.resolveKind();
2338
266k
2339
266k
    return getSema().BuildMemberReferenceExpr(Base, BaseType, OpLoc, isArrow,
2340
266k
                                              SS, TemplateKWLoc,
2341
266k
                                              FirstQualifierInScope,
2342
266k
                                              R, ExplicitTemplateArgs,
2343
266k
                                              /*S*/nullptr);
2344
266k
  }
SemaExpr.cpp:clang::TreeTransform<(anonymous namespace)::TransformToPE>::RebuildMemberExpr(clang::Expr*, clang::SourceLocation, bool, clang::NestedNameSpecifierLoc, clang::SourceLocation, clang::DeclarationNameInfo const&, clang::ValueDecl*, clang::NamedDecl*, clang::TemplateArgumentListInfo const*, clang::NamedDecl*)
Line
Count
Source
2300
6
                               NamedDecl *FirstQualifierInScope) {
2301
6
    ExprResult BaseResult = getSema().PerformMemberExprBaseConversion(Base,
2302
6
                                                                      isArrow);
2303
6
    if (!Member->getDeclName()) {
2304
0
      // We have a reference to an unnamed field.  This is always the
2305
0
      // base of an anonymous struct/union member access, i.e. the
2306
0
      // field is always of record type.
2307
0
      assert(Member->getType()->isRecordType() &&
2308
0
             "unnamed member not of record type?");
2309
0
2310
0
      BaseResult =
2311
0
        getSema().PerformObjectMemberConversion(BaseResult.get(),
2312
0
                                                QualifierLoc.getNestedNameSpecifier(),
2313
0
                                                FoundDecl, Member);
2314
0
      if (BaseResult.isInvalid())
2315
0
        return ExprError();
2316
0
      Base = BaseResult.get();
2317
0
2318
0
      CXXScopeSpec EmptySS;
2319
0
      return getSema().BuildFieldReferenceExpr(
2320
0
          Base, isArrow, OpLoc, EmptySS, cast<FieldDecl>(Member),
2321
0
          DeclAccessPair::make(FoundDecl, FoundDecl->getAccess()), MemberNameInfo);
2322
0
    }
2323
6
2324
6