Coverage Report

Created: 2023-11-11 10:31

/Users/buildslave/jenkins/workspace/coverage/llvm-project/clang/include/clang/AST/TypeLoc.h
Line
Count
Source (jump to first uncovered line)
1
//===- TypeLoc.h - Type Source Info Wrapper ---------------------*- 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
//
9
/// \file
10
/// Defines the clang::TypeLoc interface and its subclasses.
11
//
12
//===----------------------------------------------------------------------===//
13
14
#ifndef LLVM_CLANG_AST_TYPELOC_H
15
#define LLVM_CLANG_AST_TYPELOC_H
16
17
#include "clang/AST/ASTConcept.h"
18
#include "clang/AST/DeclarationName.h"
19
#include "clang/AST/NestedNameSpecifier.h"
20
#include "clang/AST/TemplateBase.h"
21
#include "clang/AST/Type.h"
22
#include "clang/Basic/LLVM.h"
23
#include "clang/Basic/SourceLocation.h"
24
#include "clang/Basic/Specifiers.h"
25
#include "llvm/ADT/ArrayRef.h"
26
#include "llvm/Support/Casting.h"
27
#include "llvm/Support/Compiler.h"
28
#include "llvm/Support/MathExtras.h"
29
#include <algorithm>
30
#include <cassert>
31
#include <cstdint>
32
#include <cstring>
33
34
namespace clang {
35
36
class Attr;
37
class ASTContext;
38
class CXXRecordDecl;
39
class ConceptDecl;
40
class Expr;
41
class ObjCInterfaceDecl;
42
class ObjCProtocolDecl;
43
class ObjCTypeParamDecl;
44
class ParmVarDecl;
45
class TemplateTypeParmDecl;
46
class UnqualTypeLoc;
47
class UnresolvedUsingTypenameDecl;
48
49
// Predeclare all the type nodes.
50
#define ABSTRACT_TYPELOC(Class, Base)
51
#define TYPELOC(Class, Base) \
52
  class Class##TypeLoc;
53
#include "clang/AST/TypeLocNodes.def"
54
55
/// Base wrapper for a particular "section" of type source info.
56
///
57
/// A client should use the TypeLoc subclasses through castAs()/getAs()
58
/// in order to get at the actual information.
59
class TypeLoc {
60
protected:
61
  // The correctness of this relies on the property that, for Type *Ty,
62
  //   QualType(Ty, 0).getAsOpaquePtr() == (void*) Ty
63
  const void *Ty = nullptr;
64
  void *Data = nullptr;
65
66
public:
67
4.74G
  TypeLoc() = default;
68
  TypeLoc(QualType ty, void *opaqueData)
69
2.24G
      : Ty(ty.getAsOpaquePtr()), Data(opaqueData) {}
70
  TypeLoc(const Type *ty, void *opaqueData)
71
107M
      : Ty(ty), Data(opaqueData) {}
72
73
  /// Convert to the specified TypeLoc type, asserting that this TypeLoc
74
  /// is of the desired type.
75
  ///
76
  /// \pre T::isKind(*this)
77
  template<typename T>
78
3.55G
  T castAs() const {
79
3.55G
    assert(T::isKind(*this));
80
3.55G
    T t;
81
3.55G
    TypeLoc& tl = t;
82
3.55G
    tl = *this;
83
3.55G
    return t;
84
3.55G
  }
clang::UnqualTypeLoc clang::TypeLoc::castAs<clang::UnqualTypeLoc>() const
Line
Count
Source
78
334M
  T castAs() const {
79
334M
    assert(T::isKind(*this));
80
334M
    T t;
81
334M
    TypeLoc& tl = t;
82
334M
    tl = *this;
83
334M
    return t;
84
334M
  }
clang::TemplateSpecializationTypeLoc clang::TypeLoc::castAs<clang::TemplateSpecializationTypeLoc>() const
Line
Count
Source
78
389M
  T castAs() const {
79
389M
    assert(T::isKind(*this));
80
389M
    T t;
81
389M
    TypeLoc& tl = t;
82
389M
    tl = *this;
83
389M
    return t;
84
389M
  }
clang::QualifiedTypeLoc clang::TypeLoc::castAs<clang::QualifiedTypeLoc>() const
Line
Count
Source
78
57.4M
  T castAs() const {
79
57.4M
    assert(T::isKind(*this));
80
57.4M
    T t;
81
57.4M
    TypeLoc& tl = t;
82
57.4M
    tl = *this;
83
57.4M
    return t;
84
57.4M
  }
clang::AdjustedTypeLoc clang::TypeLoc::castAs<clang::AdjustedTypeLoc>() const
Line
Count
Source
78
116
  T castAs() const {
79
116
    assert(T::isKind(*this));
80
116
    T t;
81
116
    TypeLoc& tl = t;
82
116
    tl = *this;
83
116
    return t;
84
116
  }
clang::DecayedTypeLoc clang::TypeLoc::castAs<clang::DecayedTypeLoc>() const
Line
Count
Source
78
43.3k
  T castAs() const {
79
43.3k
    assert(T::isKind(*this));
80
43.3k
    T t;
81
43.3k
    TypeLoc& tl = t;
82
43.3k
    tl = *this;
83
43.3k
    return t;
84
43.3k
  }
clang::ConstantArrayTypeLoc clang::TypeLoc::castAs<clang::ConstantArrayTypeLoc>() const
Line
Count
Source
78
2.33M
  T castAs() const {
79
2.33M
    assert(T::isKind(*this));
80
2.33M
    T t;
81
2.33M
    TypeLoc& tl = t;
82
2.33M
    tl = *this;
83
2.33M
    return t;
84
2.33M
  }
clang::DependentSizedArrayTypeLoc clang::TypeLoc::castAs<clang::DependentSizedArrayTypeLoc>() const
Line
Count
Source
78
239k
  T castAs() const {
79
239k
    assert(T::isKind(*this));
80
239k
    T t;
81
239k
    TypeLoc& tl = t;
82
239k
    tl = *this;
83
239k
    return t;
84
239k
  }
clang::IncompleteArrayTypeLoc clang::TypeLoc::castAs<clang::IncompleteArrayTypeLoc>() const
Line
Count
Source
78
510k
  T castAs() const {
79
510k
    assert(T::isKind(*this));
80
510k
    T t;
81
510k
    TypeLoc& tl = t;
82
510k
    tl = *this;
83
510k
    return t;
84
510k
  }
clang::VariableArrayTypeLoc clang::TypeLoc::castAs<clang::VariableArrayTypeLoc>() const
Line
Count
Source
78
127k
  T castAs() const {
79
127k
    assert(T::isKind(*this));
80
127k
    T t;
81
127k
    TypeLoc& tl = t;
82
127k
    tl = *this;
83
127k
    return t;
84
127k
  }
clang::AtomicTypeLoc clang::TypeLoc::castAs<clang::AtomicTypeLoc>() const
Line
Count
Source
78
103k
  T castAs() const {
79
103k
    assert(T::isKind(*this));
80
103k
    T t;
81
103k
    TypeLoc& tl = t;
82
103k
    tl = *this;
83
103k
    return t;
84
103k
  }
clang::AttributedTypeLoc clang::TypeLoc::castAs<clang::AttributedTypeLoc>() const
Line
Count
Source
78
16.0M
  T castAs() const {
79
16.0M
    assert(T::isKind(*this));
80
16.0M
    T t;
81
16.0M
    TypeLoc& tl = t;
82
16.0M
    tl = *this;
83
16.0M
    return t;
84
16.0M
  }
clang::BTFTagAttributedTypeLoc clang::TypeLoc::castAs<clang::BTFTagAttributedTypeLoc>() const
Line
Count
Source
78
479
  T castAs() const {
79
479
    assert(T::isKind(*this));
80
479
    T t;
81
479
    TypeLoc& tl = t;
82
479
    tl = *this;
83
479
    return t;
84
479
  }
clang::BitIntTypeLoc clang::TypeLoc::castAs<clang::BitIntTypeLoc>() const
Line
Count
Source
78
11.6k
  T castAs() const {
79
11.6k
    assert(T::isKind(*this));
80
11.6k
    T t;
81
11.6k
    TypeLoc& tl = t;
82
11.6k
    tl = *this;
83
11.6k
    return t;
84
11.6k
  }
clang::BlockPointerTypeLoc clang::TypeLoc::castAs<clang::BlockPointerTypeLoc>() const
Line
Count
Source
78
510k
  T castAs() const {
79
510k
    assert(T::isKind(*this));
80
510k
    T t;
81
510k
    TypeLoc& tl = t;
82
510k
    tl = *this;
83
510k
    return t;
84
510k
  }
clang::BuiltinTypeLoc clang::TypeLoc::castAs<clang::BuiltinTypeLoc>() const
Line
Count
Source
78
141M
  T castAs() const {
79
141M
    assert(T::isKind(*this));
80
141M
    T t;
81
141M
    TypeLoc& tl = t;
82
141M
    tl = *this;
83
141M
    return t;
84
141M
  }
clang::ComplexTypeLoc clang::TypeLoc::castAs<clang::ComplexTypeLoc>() const
Line
Count
Source
78
49.7k
  T castAs() const {
79
49.7k
    assert(T::isKind(*this));
80
49.7k
    T t;
81
49.7k
    TypeLoc& tl = t;
82
49.7k
    tl = *this;
83
49.7k
    return t;
84
49.7k
  }
clang::DecltypeTypeLoc clang::TypeLoc::castAs<clang::DecltypeTypeLoc>() const
Line
Count
Source
78
4.80M
  T castAs() const {
79
4.80M
    assert(T::isKind(*this));
80
4.80M
    T t;
81
4.80M
    TypeLoc& tl = t;
82
4.80M
    tl = *this;
83
4.80M
    return t;
84
4.80M
  }
clang::AutoTypeLoc clang::TypeLoc::castAs<clang::AutoTypeLoc>() const
Line
Count
Source
78
3.49M
  T castAs() const {
79
3.49M
    assert(T::isKind(*this));
80
3.49M
    T t;
81
3.49M
    TypeLoc& tl = t;
82
3.49M
    tl = *this;
83
3.49M
    return t;
84
3.49M
  }
clang::DeducedTemplateSpecializationTypeLoc clang::TypeLoc::castAs<clang::DeducedTemplateSpecializationTypeLoc>() const
Line
Count
Source
78
84.0k
  T castAs() const {
79
84.0k
    assert(T::isKind(*this));
80
84.0k
    T t;
81
84.0k
    TypeLoc& tl = t;
82
84.0k
    tl = *this;
83
84.0k
    return t;
84
84.0k
  }
clang::DependentAddressSpaceTypeLoc clang::TypeLoc::castAs<clang::DependentAddressSpaceTypeLoc>() const
Line
Count
Source
78
745
  T castAs() const {
79
745
    assert(T::isKind(*this));
80
745
    T t;
81
745
    TypeLoc& tl = t;
82
745
    tl = *this;
83
745
    return t;
84
745
  }
clang::DependentBitIntTypeLoc clang::TypeLoc::castAs<clang::DependentBitIntTypeLoc>() const
Line
Count
Source
78
1.29k
  T castAs() const {
79
1.29k
    assert(T::isKind(*this));
80
1.29k
    T t;
81
1.29k
    TypeLoc& tl = t;
82
1.29k
    tl = *this;
83
1.29k
    return t;
84
1.29k
  }
clang::DependentNameTypeLoc clang::TypeLoc::castAs<clang::DependentNameTypeLoc>() const
Line
Count
Source
78
32.8M
  T castAs() const {
79
32.8M
    assert(T::isKind(*this));
80
32.8M
    T t;
81
32.8M
    TypeLoc& tl = t;
82
32.8M
    tl = *this;
83
32.8M
    return t;
84
32.8M
  }
clang::DependentSizedExtVectorTypeLoc clang::TypeLoc::castAs<clang::DependentSizedExtVectorTypeLoc>() const
Line
Count
Source
78
15.0k
  T castAs() const {
79
15.0k
    assert(T::isKind(*this));
80
15.0k
    T t;
81
15.0k
    TypeLoc& tl = t;
82
15.0k
    tl = *this;
83
15.0k
    return t;
84
15.0k
  }
clang::DependentTemplateSpecializationTypeLoc clang::TypeLoc::castAs<clang::DependentTemplateSpecializationTypeLoc>() const
Line
Count
Source
78
1.14M
  T castAs() const {
79
1.14M
    assert(T::isKind(*this));
80
1.14M
    T t;
81
1.14M
    TypeLoc& tl = t;
82
1.14M
    tl = *this;
83
1.14M
    return t;
84
1.14M
  }
clang::DependentVectorTypeLoc clang::TypeLoc::castAs<clang::DependentVectorTypeLoc>() const
Line
Count
Source
78
1.02k
  T castAs() const {
79
1.02k
    assert(T::isKind(*this));
80
1.02k
    T t;
81
1.02k
    TypeLoc& tl = t;
82
1.02k
    tl = *this;
83
1.02k
    return t;
84
1.02k
  }
clang::ElaboratedTypeLoc clang::TypeLoc::castAs<clang::ElaboratedTypeLoc>() const
Line
Count
Source
78
816M
  T castAs() const {
79
816M
    assert(T::isKind(*this));
80
816M
    T t;
81
816M
    TypeLoc& tl = t;
82
816M
    tl = *this;
83
816M
    return t;
84
816M
  }
clang::FunctionNoProtoTypeLoc clang::TypeLoc::castAs<clang::FunctionNoProtoTypeLoc>() const
Line
Count
Source
78
64.1k
  T castAs() const {
79
64.1k
    assert(T::isKind(*this));
80
64.1k
    T t;
81
64.1k
    TypeLoc& tl = t;
82
64.1k
    tl = *this;
83
64.1k
    return t;
84
64.1k
  }
clang::FunctionProtoTypeLoc clang::TypeLoc::castAs<clang::FunctionProtoTypeLoc>() const
Line
Count
Source
78
223M
  T castAs() const {
79
223M
    assert(T::isKind(*this));
80
223M
    T t;
81
223M
    TypeLoc& tl = t;
82
223M
    tl = *this;
83
223M
    return t;
84
223M
  }
clang::InjectedClassNameTypeLoc clang::TypeLoc::castAs<clang::InjectedClassNameTypeLoc>() const
Line
Count
Source
78
14.6M
  T castAs() const {
79
14.6M
    assert(T::isKind(*this));
80
14.6M
    T t;
81
14.6M
    TypeLoc& tl = t;
82
14.6M
    tl = *this;
83
14.6M
    return t;
84
14.6M
  }
clang::MacroQualifiedTypeLoc clang::TypeLoc::castAs<clang::MacroQualifiedTypeLoc>() const
Line
Count
Source
78
972k
  T castAs() const {
79
972k
    assert(T::isKind(*this));
80
972k
    T t;
81
972k
    TypeLoc& tl = t;
82
972k
    tl = *this;
83
972k
    return t;
84
972k
  }
clang::ConstantMatrixTypeLoc clang::TypeLoc::castAs<clang::ConstantMatrixTypeLoc>() const
Line
Count
Source
78
4.82k
  T castAs() const {
79
4.82k
    assert(T::isKind(*this));
80
4.82k
    T t;
81
4.82k
    TypeLoc& tl = t;
82
4.82k
    tl = *this;
83
4.82k
    return t;
84
4.82k
  }
clang::DependentSizedMatrixTypeLoc clang::TypeLoc::castAs<clang::DependentSizedMatrixTypeLoc>() const
Line
Count
Source
78
3.04k
  T castAs() const {
79
3.04k
    assert(T::isKind(*this));
80
3.04k
    T t;
81
3.04k
    TypeLoc& tl = t;
82
3.04k
    tl = *this;
83
3.04k
    return t;
84
3.04k
  }
clang::MemberPointerTypeLoc clang::TypeLoc::castAs<clang::MemberPointerTypeLoc>() const
Line
Count
Source
78
463k
  T castAs() const {
79
463k
    assert(T::isKind(*this));
80
463k
    T t;
81
463k
    TypeLoc& tl = t;
82
463k
    tl = *this;
83
463k
    return t;
84
463k
  }
clang::ObjCObjectPointerTypeLoc clang::TypeLoc::castAs<clang::ObjCObjectPointerTypeLoc>() const
Line
Count
Source
78
10.1M
  T castAs() const {
79
10.1M
    assert(T::isKind(*this));
80
10.1M
    T t;
81
10.1M
    TypeLoc& tl = t;
82
10.1M
    tl = *this;
83
10.1M
    return t;
84
10.1M
  }
clang::ObjCObjectTypeLoc clang::TypeLoc::castAs<clang::ObjCObjectTypeLoc>() const
Line
Count
Source
78
3.45M
  T castAs() const {
79
3.45M
    assert(T::isKind(*this));
80
3.45M
    T t;
81
3.45M
    TypeLoc& tl = t;
82
3.45M
    tl = *this;
83
3.45M
    return t;
84
3.45M
  }
clang::ObjCInterfaceTypeLoc clang::TypeLoc::castAs<clang::ObjCInterfaceTypeLoc>() const
Line
Count
Source
78
12.9M
  T castAs() const {
79
12.9M
    assert(T::isKind(*this));
80
12.9M
    T t;
81
12.9M
    TypeLoc& tl = t;
82
12.9M
    tl = *this;
83
12.9M
    return t;
84
12.9M
  }
clang::ObjCTypeParamTypeLoc clang::TypeLoc::castAs<clang::ObjCTypeParamTypeLoc>() const
Line
Count
Source
78
774k
  T castAs() const {
79
774k
    assert(T::isKind(*this));
80
774k
    T t;
81
774k
    TypeLoc& tl = t;
82
774k
    tl = *this;
83
774k
    return t;
84
774k
  }
clang::PackExpansionTypeLoc clang::TypeLoc::castAs<clang::PackExpansionTypeLoc>() const
Line
Count
Source
78
4.41M
  T castAs() const {
79
4.41M
    assert(T::isKind(*this));
80
4.41M
    T t;
81
4.41M
    TypeLoc& tl = t;
82
4.41M
    tl = *this;
83
4.41M
    return t;
84
4.41M
  }
clang::ParenTypeLoc clang::TypeLoc::castAs<clang::ParenTypeLoc>() const
Line
Count
Source
78
3.54M
  T castAs() const {
79
3.54M
    assert(T::isKind(*this));
80
3.54M
    T t;
81
3.54M
    TypeLoc& tl = t;
82
3.54M
    tl = *this;
83
3.54M
    return t;
84
3.54M
  }
clang::PipeTypeLoc clang::TypeLoc::castAs<clang::PipeTypeLoc>() const
Line
Count
Source
78
1.36k
  T castAs() const {
79
1.36k
    assert(T::isKind(*this));
80
1.36k
    T t;
81
1.36k
    TypeLoc& tl = t;
82
1.36k
    tl = *this;
83
1.36k
    return t;
84
1.36k
  }
clang::PointerTypeLoc clang::TypeLoc::castAs<clang::PointerTypeLoc>() const
Line
Count
Source
78
63.3M
  T castAs() const {
79
63.3M
    assert(T::isKind(*this));
80
63.3M
    T t;
81
63.3M
    TypeLoc& tl = t;
82
63.3M
    tl = *this;
83
63.3M
    return t;
84
63.3M
  }
clang::LValueReferenceTypeLoc clang::TypeLoc::castAs<clang::LValueReferenceTypeLoc>() const
Line
Count
Source
78
37.6M
  T castAs() const {
79
37.6M
    assert(T::isKind(*this));
80
37.6M
    T t;
81
37.6M
    TypeLoc& tl = t;
82
37.6M
    tl = *this;
83
37.6M
    return t;
84
37.6M
  }
clang::RValueReferenceTypeLoc clang::TypeLoc::castAs<clang::RValueReferenceTypeLoc>() const
Line
Count
Source
78
11.3M
  T castAs() const {
79
11.3M
    assert(T::isKind(*this));
80
11.3M
    T t;
81
11.3M
    TypeLoc& tl = t;
82
11.3M
    tl = *this;
83
11.3M
    return t;
84
11.3M
  }
clang::SubstTemplateTypeParmPackTypeLoc clang::TypeLoc::castAs<clang::SubstTemplateTypeParmPackTypeLoc>() const
Line
Count
Source
78
193k
  T castAs() const {
79
193k
    assert(T::isKind(*this));
80
193k
    T t;
81
193k
    TypeLoc& tl = t;
82
193k
    tl = *this;
83
193k
    return t;
84
193k
  }
clang::SubstTemplateTypeParmTypeLoc clang::TypeLoc::castAs<clang::SubstTemplateTypeParmTypeLoc>() const
Line
Count
Source
78
87.0M
  T castAs() const {
79
87.0M
    assert(T::isKind(*this));
80
87.0M
    T t;
81
87.0M
    TypeLoc& tl = t;
82
87.0M
    tl = *this;
83
87.0M
    return t;
84
87.0M
  }
clang::EnumTypeLoc clang::TypeLoc::castAs<clang::EnumTypeLoc>() const
Line
Count
Source
78
5.11M
  T castAs() const {
79
5.11M
    assert(T::isKind(*this));
80
5.11M
    T t;
81
5.11M
    TypeLoc& tl = t;
82
5.11M
    tl = *this;
83
5.11M
    return t;
84
5.11M
  }
clang::RecordTypeLoc clang::TypeLoc::castAs<clang::RecordTypeLoc>() const
Line
Count
Source
78
82.5M
  T castAs() const {
79
82.5M
    assert(T::isKind(*this));
80
82.5M
    T t;
81
82.5M
    TypeLoc& tl = t;
82
82.5M
    tl = *this;
83
82.5M
    return t;
84
82.5M
  }
clang::TemplateTypeParmTypeLoc clang::TypeLoc::castAs<clang::TemplateTypeParmTypeLoc>() const
Line
Count
Source
78
202M
  T castAs() const {
79
202M
    assert(T::isKind(*this));
80
202M
    T t;
81
202M
    TypeLoc& tl = t;
82
202M
    tl = *this;
83
202M
    return t;
84
202M
  }
clang::TypeOfExprTypeLoc clang::TypeLoc::castAs<clang::TypeOfExprTypeLoc>() const
Line
Count
Source
78
42.5k
  T castAs() const {
79
42.5k
    assert(T::isKind(*this));
80
42.5k
    T t;
81
42.5k
    TypeLoc& tl = t;
82
42.5k
    tl = *this;
83
42.5k
    return t;
84
42.5k
  }
clang::TypeOfTypeLoc clang::TypeLoc::castAs<clang::TypeOfTypeLoc>() const
Line
Count
Source
78
899
  T castAs() const {
79
899
    assert(T::isKind(*this));
80
899
    T t;
81
899
    TypeLoc& tl = t;
82
899
    tl = *this;
83
899
    return t;
84
899
  }
clang::TypedefTypeLoc clang::TypeLoc::castAs<clang::TypedefTypeLoc>() const
Line
Count
Source
78
928M
  T castAs() const {
79
928M
    assert(T::isKind(*this));
80
928M
    T t;
81
928M
    TypeLoc& tl = t;
82
928M
    tl = *this;
83
928M
    return t;
84
928M
  }
clang::UnaryTransformTypeLoc clang::TypeLoc::castAs<clang::UnaryTransformTypeLoc>() const
Line
Count
Source
78
7.76M
  T castAs() const {
79
7.76M
    assert(T::isKind(*this));
80
7.76M
    T t;
81
7.76M
    TypeLoc& tl = t;
82
7.76M
    tl = *this;
83
7.76M
    return t;
84
7.76M
  }
clang::UnresolvedUsingTypeLoc clang::TypeLoc::castAs<clang::UnresolvedUsingTypeLoc>() const
Line
Count
Source
78
4.16k
  T castAs() const {
79
4.16k
    assert(T::isKind(*this));
80
4.16k
    T t;
81
4.16k
    TypeLoc& tl = t;
82
4.16k
    tl = *this;
83
4.16k
    return t;
84
4.16k
  }
clang::UsingTypeLoc clang::TypeLoc::castAs<clang::UsingTypeLoc>() const
Line
Count
Source
78
6.40M
  T castAs() const {
79
6.40M
    assert(T::isKind(*this));
80
6.40M
    T t;
81
6.40M
    TypeLoc& tl = t;
82
6.40M
    tl = *this;
83
6.40M
    return t;
84
6.40M
  }
clang::VectorTypeLoc clang::TypeLoc::castAs<clang::VectorTypeLoc>() const
Line
Count
Source
78
852k
  T castAs() const {
79
852k
    assert(T::isKind(*this));
80
852k
    T t;
81
852k
    TypeLoc& tl = t;
82
852k
    tl = *this;
83
852k
    return t;
84
852k
  }
clang::ExtVectorTypeLoc clang::TypeLoc::castAs<clang::ExtVectorTypeLoc>() const
Line
Count
Source
78
41.0k
  T castAs() const {
79
41.0k
    assert(T::isKind(*this));
80
41.0k
    T t;
81
41.0k
    TypeLoc& tl = t;
82
41.0k
    tl = *this;
83
41.0k
    return t;
84
41.0k
  }
clang::ArrayTypeLoc clang::TypeLoc::castAs<clang::ArrayTypeLoc>() const
Line
Count
Source
78
386k
  T castAs() const {
79
386k
    assert(T::isKind(*this));
80
386k
    T t;
81
386k
    TypeLoc& tl = t;
82
386k
    tl = *this;
83
386k
    return t;
84
386k
  }
clang::TypeLoc clang::TypeLoc::castAs<clang::TypeLoc>() const
Line
Count
Source
78
7.85M
  T castAs() const {
79
7.85M
    assert(T::isKind(*this));
80
7.85M
    T t;
81
7.85M
    TypeLoc& tl = t;
82
7.85M
    tl = *this;
83
7.85M
    return t;
84
7.85M
  }
clang::DeducedTypeLoc clang::TypeLoc::castAs<clang::DeducedTypeLoc>() const
Line
Count
Source
78
2.06k
  T castAs() const {
79
2.06k
    assert(T::isKind(*this));
80
2.06k
    T t;
81
2.06k
    TypeLoc& tl = t;
82
2.06k
    tl = *this;
83
2.06k
    return t;
84
2.06k
  }
clang::FunctionTypeLoc clang::TypeLoc::castAs<clang::FunctionTypeLoc>() const
Line
Count
Source
78
36.9M
  T castAs() const {
79
36.9M
    assert(T::isKind(*this));
80
36.9M
    T t;
81
36.9M
    TypeLoc& tl = t;
82
36.9M
    tl = *this;
83
36.9M
    return t;
84
36.9M
  }
clang::MatrixTypeLoc clang::TypeLoc::castAs<clang::MatrixTypeLoc>() const
Line
Count
Source
78
666
  T castAs() const {
79
666
    assert(T::isKind(*this));
80
666
    T t;
81
666
    TypeLoc& tl = t;
82
666
    tl = *this;
83
666
    return t;
84
666
  }
clang::ReferenceTypeLoc clang::TypeLoc::castAs<clang::ReferenceTypeLoc>() const
Line
Count
Source
78
10.3k
  T castAs() const {
79
10.3k
    assert(T::isKind(*this));
80
10.3k
    T t;
81
10.3k
    TypeLoc& tl = t;
82
10.3k
    tl = *this;
83
10.3k
    return t;
84
10.3k
  }
clang::TagTypeLoc clang::TypeLoc::castAs<clang::TagTypeLoc>() const
Line
Count
Source
78
2.24M
  T castAs() const {
79
2.24M
    assert(T::isKind(*this));
80
2.24M
    T t;
81
2.24M
    TypeLoc& tl = t;
82
2.24M
    tl = *this;
83
2.24M
    return t;
84
2.24M
  }
clang::TypeSpecTypeLoc clang::TypeLoc::castAs<clang::TypeSpecTypeLoc>() const
Line
Count
Source
78
1.56M
  T castAs() const {
79
1.56M
    assert(T::isKind(*this));
80
1.56M
    T t;
81
1.56M
    TypeLoc& tl = t;
82
1.56M
    tl = *this;
83
1.56M
    return t;
84
1.56M
  }
85
86
  /// Convert to the specified TypeLoc type, returning a null TypeLoc if
87
  /// this TypeLoc is not of the desired type.
88
  template<typename T>
89
665M
  T getAs() const {
90
665M
    if (!T::isKind(*this))
91
651M
      return {};
92
13.8M
    T t;
93
13.8M
    TypeLoc& tl = t;
94
13.8M
    tl = *this;
95
13.8M
    return t;
96
665M
  }
clang::QualifiedTypeLoc clang::TypeLoc::getAs<clang::QualifiedTypeLoc>() const
Line
Count
Source
89
341M
  T getAs() const {
90
341M
    if (!T::isKind(*this))
91
335M
      return {};
92
6.19M
    T t;
93
6.19M
    TypeLoc& tl = t;
94
6.19M
    tl = *this;
95
6.19M
    return t;
96
341M
  }
clang::ElaboratedTypeLoc clang::TypeLoc::getAs<clang::ElaboratedTypeLoc>() const
Line
Count
Source
89
43.3M
  T getAs() const {
90
43.3M
    if (!T::isKind(*this))
91
41.1M
      return {};
92
2.23M
    T t;
93
2.23M
    TypeLoc& tl = t;
94
2.23M
    tl = *this;
95
2.23M
    return t;
96
43.3M
  }
clang::PointerTypeLoc clang::TypeLoc::getAs<clang::PointerTypeLoc>() const
Line
Count
Source
89
18.2k
  T getAs() const {
90
18.2k
    if (!T::isKind(*this))
91
1.46k
      return {};
92
16.7k
    T t;
93
16.7k
    TypeLoc& tl = t;
94
16.7k
    tl = *this;
95
16.7k
    return t;
96
18.2k
  }
clang::ReferenceTypeLoc clang::TypeLoc::getAs<clang::ReferenceTypeLoc>() const
Line
Count
Source
89
1.17k
  T getAs() const {
90
1.17k
    if (!T::isKind(*this))
91
1.15k
      return {};
92
18
    T t;
93
18
    TypeLoc& tl = t;
94
18
    tl = *this;
95
18
    return t;
96
1.17k
  }
clang::BlockPointerTypeLoc clang::TypeLoc::getAs<clang::BlockPointerTypeLoc>() const
Line
Count
Source
89
802
  T getAs() const {
90
802
    if (!T::isKind(*this))
91
705
      return {};
92
97
    T t;
93
97
    TypeLoc& tl = t;
94
97
    tl = *this;
95
97
    return t;
96
802
  }
clang::MemberPointerTypeLoc clang::TypeLoc::getAs<clang::MemberPointerTypeLoc>() const
Line
Count
Source
89
701
  T getAs() const {
90
701
    if (!T::isKind(*this))
91
694
      return {};
92
7
    T t;
93
7
    TypeLoc& tl = t;
94
7
    tl = *this;
95
7
    return t;
96
701
  }
clang::TemplateSpecializationTypeLoc clang::TypeLoc::getAs<clang::TemplateSpecializationTypeLoc>() const
Line
Count
Source
89
169k
  T getAs() const {
90
169k
    if (!T::isKind(*this))
91
361
      return {};
92
169k
    T t;
93
169k
    TypeLoc& tl = t;
94
169k
    tl = *this;
95
169k
    return t;
96
169k
  }
clang::FunctionTypeLoc clang::TypeLoc::getAs<clang::FunctionTypeLoc>() const
Line
Count
Source
89
3.35k
  T getAs() const {
90
3.35k
    if (!T::isKind(*this))
91
394
      return {};
92
2.96k
    T t;
93
2.96k
    TypeLoc& tl = t;
94
2.96k
    tl = *this;
95
2.96k
    return t;
96
3.35k
  }
clang::ParenTypeLoc clang::TypeLoc::getAs<clang::ParenTypeLoc>() const
Line
Count
Source
89
36.6M
  T getAs() const {
90
36.6M
    if (!T::isKind(*this))
91
36.6M
      return {};
92
319
    T t;
93
319
    TypeLoc& tl = t;
94
319
    tl = *this;
95
319
    return t;
96
36.6M
  }
clang::AttributedTypeLoc clang::TypeLoc::getAs<clang::AttributedTypeLoc>() const
Line
Count
Source
89
73.5M
  T getAs() const {
90
73.5M
    if (!T::isKind(*this))
91
73.5M
      return {};
92
16.2k
    T t;
93
16.2k
    TypeLoc& tl = t;
94
16.2k
    tl = *this;
95
16.2k
    return t;
96
73.5M
  }
clang::BTFTagAttributedTypeLoc clang::TypeLoc::getAs<clang::BTFTagAttributedTypeLoc>() const
Line
Count
Source
89
36.6M
  T getAs() const {
90
36.6M
    if (!T::isKind(*this))
91
36.6M
      return {};
92
0
    T t;
93
0
    TypeLoc& tl = t;
94
0
    tl = *this;
95
0
    return t;
96
36.6M
  }
clang::AdjustedTypeLoc clang::TypeLoc::getAs<clang::AdjustedTypeLoc>() const
Line
Count
Source
89
36.6M
  T getAs() const {
90
36.6M
    if (!T::isKind(*this))
91
36.6M
      return {};
92
0
    T t;
93
0
    TypeLoc& tl = t;
94
0
    tl = *this;
95
0
    return t;
96
36.6M
  }
clang::MacroQualifiedTypeLoc clang::TypeLoc::getAs<clang::MacroQualifiedTypeLoc>() const
Line
Count
Source
89
36.6M
  T getAs() const {
90
36.6M
    if (!T::isKind(*this))
91
36.6M
      return {};
92
13.1k
    T t;
93
13.1k
    TypeLoc& tl = t;
94
13.1k
    tl = *this;
95
13.1k
    return t;
96
36.6M
  }
clang::TypedefTypeLoc clang::TypeLoc::getAs<clang::TypedefTypeLoc>() const
Line
Count
Source
89
15.7k
  T getAs() const {
90
15.7k
    if (!T::isKind(*this))
91
15.7k
      return {};
92
34
    T t;
93
34
    TypeLoc& tl = t;
94
34
    tl = *this;
95
34
    return t;
96
15.7k
  }
clang::ConstantArrayTypeLoc clang::TypeLoc::getAs<clang::ConstantArrayTypeLoc>() const
Line
Count
Source
89
14.7k
  T getAs() const {
90
14.7k
    if (!T::isKind(*this))
91
136
      return {};
92
14.6k
    T t;
93
14.6k
    TypeLoc& tl = t;
94
14.6k
    tl = *this;
95
14.6k
    return t;
96
14.7k
  }
clang::FunctionProtoTypeLoc clang::TypeLoc::getAs<clang::FunctionProtoTypeLoc>() const
Line
Count
Source
89
4.59M
  T getAs() const {
90
4.59M
    if (!T::isKind(*this))
91
1.36k
      return {};
92
4.59M
    T t;
93
4.59M
    TypeLoc& tl = t;
94
4.59M
    tl = *this;
95
4.59M
    return t;
96
4.59M
  }
clang::AtomicTypeLoc clang::TypeLoc::getAs<clang::AtomicTypeLoc>() const
Line
Count
Source
89
49.7M
  T getAs() const {
90
49.7M
    if (!T::isKind(*this))
91
49.7M
      return {};
92
18
    T t;
93
18
    TypeLoc& tl = t;
94
18
    tl = *this;
95
18
    return t;
96
49.7M
  }
clang::AutoTypeLoc clang::TypeLoc::getAs<clang::AutoTypeLoc>() const
Line
Count
Source
89
430
  T getAs() const {
90
430
    if (!T::isKind(*this))
91
0
      return {};
92
430
    T t;
93
430
    TypeLoc& tl = t;
94
430
    tl = *this;
95
430
    return t;
96
430
  }
clang::VariableArrayTypeLoc clang::TypeLoc::getAs<clang::VariableArrayTypeLoc>() const
Line
Count
Source
89
294
  T getAs() const {
90
294
    if (!T::isKind(*this))
91
291
      return {};
92
3
    T t;
93
3
    TypeLoc& tl = t;
94
3
    tl = *this;
95
3
    return t;
96
294
  }
clang::FunctionNoProtoTypeLoc clang::TypeLoc::getAs<clang::FunctionNoProtoTypeLoc>() const
Line
Count
Source
89
78
  T getAs() const {
90
78
    if (!T::isKind(*this))
91
3
      return {};
92
75
    T t;
93
75
    TypeLoc& tl = t;
94
75
    tl = *this;
95
75
    return t;
96
78
  }
clang::DecayedTypeLoc clang::TypeLoc::getAs<clang::DecayedTypeLoc>() const
Line
Count
Source
89
12
  T getAs() const {
90
12
    if (!T::isKind(*this))
91
12
      return {};
92
0
    T t;
93
0
    TypeLoc& tl = t;
94
0
    tl = *this;
95
0
    return t;
96
12
  }
clang::ArrayTypeLoc clang::TypeLoc::getAs<clang::ArrayTypeLoc>() const
Line
Count
Source
89
524
  T getAs() const {
90
524
    if (!T::isKind(*this))
91
507
      return {};
92
17
    T t;
93
17
    TypeLoc& tl = t;
94
17
    tl = *this;
95
17
    return t;
96
524
  }
clang::TemplateTypeParmTypeLoc clang::TypeLoc::getAs<clang::TemplateTypeParmTypeLoc>() const
Line
Count
Source
89
884k
  T getAs() const {
90
884k
    if (!T::isKind(*this))
91
385k
      return {};
92
499k
    T t;
93
499k
    TypeLoc& tl = t;
94
499k
    tl = *this;
95
499k
    return t;
96
884k
  }
clang::SubstTemplateTypeParmPackTypeLoc clang::TypeLoc::getAs<clang::SubstTemplateTypeParmPackTypeLoc>() const
Line
Count
Source
89
385k
  T getAs() const {
90
385k
    if (!T::isKind(*this))
91
385k
      return {};
92
5
    T t;
93
5
    TypeLoc& tl = t;
94
5
    tl = *this;
95
5
    return t;
96
385k
  }
clang::PackExpansionTypeLoc clang::TypeLoc::getAs<clang::PackExpansionTypeLoc>() const
Line
Count
Source
89
3.57M
  T getAs() const {
90
3.57M
    if (!T::isKind(*this))
91
3.51M
      return {};
92
55.1k
    T t;
93
55.1k
    TypeLoc& tl = t;
94
55.1k
    tl = *this;
95
55.1k
    return t;
96
3.57M
  }
clang::IncompleteArrayTypeLoc clang::TypeLoc::getAs<clang::IncompleteArrayTypeLoc>() const
Line
Count
Source
89
88
  T getAs() const {
90
88
    if (!T::isKind(*this))
91
54
      return {};
92
34
    T t;
93
34
    TypeLoc& tl = t;
94
34
    tl = *this;
95
34
    return t;
96
88
  }
clang::InjectedClassNameTypeLoc clang::TypeLoc::getAs<clang::InjectedClassNameTypeLoc>() const
Line
Count
Source
89
35
  T getAs() const {
90
35
    if (!T::isKind(*this))
91
34
      return {};
92
1
    T t;
93
1
    TypeLoc& tl = t;
94
1
    tl = *this;
95
1
    return t;
96
35
  }
clang::RecordTypeLoc clang::TypeLoc::getAs<clang::RecordTypeLoc>() const
Line
Count
Source
89
34
  T getAs() const {
90
34
    if (!T::isKind(*this))
91
4
      return {};
92
30
    T t;
93
30
    TypeLoc& tl = t;
94
30
    tl = *this;
95
30
    return t;
96
34
  }
clang::DeducedTemplateSpecializationTypeLoc clang::TypeLoc::getAs<clang::DeducedTemplateSpecializationTypeLoc>() const
Line
Count
Source
89
647k
  T getAs() const {
90
647k
    if (!T::isKind(*this))
91
646k
      return {};
92
1.33k
    T t;
93
1.33k
    TypeLoc& tl = t;
94
1.33k
    tl = *this;
95
1.33k
    return t;
96
647k
  }
clang::ObjCObjectPointerTypeLoc clang::TypeLoc::getAs<clang::ObjCObjectPointerTypeLoc>() const
Line
Count
Source
89
153k
  T getAs() const {
90
153k
    if (!T::isKind(*this))
91
137k
      return {};
92
15.6k
    T t;
93
15.6k
    TypeLoc& tl = t;
94
15.6k
    tl = *this;
95
15.6k
    return t;
96
153k
  }
clang::ObjCTypeParamTypeLoc clang::TypeLoc::getAs<clang::ObjCTypeParamTypeLoc>() const
Line
Count
Source
89
153k
  T getAs() const {
90
153k
    if (!T::isKind(*this))
91
151k
      return {};
92
1.76k
    T t;
93
1.76k
    TypeLoc& tl = t;
94
1.76k
    tl = *this;
95
1.76k
    return t;
96
153k
  }
clang::DependentTemplateSpecializationTypeLoc clang::TypeLoc::getAs<clang::DependentTemplateSpecializationTypeLoc>() const
Line
Count
Source
89
166
  T getAs() const {
90
166
    if (!T::isKind(*this))
91
161
      return {};
92
5
    T t;
93
5
    TypeLoc& tl = t;
94
5
    tl = *this;
95
5
    return t;
96
166
  }
Unexecuted instantiation: clang::DependentNameTypeLoc clang::TypeLoc::getAs<clang::DependentNameTypeLoc>() const
97
98
  /// Convert to the specified TypeLoc type, returning a null TypeLoc if
99
  /// this TypeLoc is not of the desired type. It will consider type
100
  /// adjustments from a type that was written as a T to another type that is
101
  /// still canonically a T (ignores parens, attributes, elaborated types, etc).
102
  template <typename T>
103
  T getAsAdjusted() const;
104
105
  /// The kinds of TypeLocs.  Equivalent to the Type::TypeClass enum,
106
  /// except it also defines a Qualified enum that corresponds to the
107
  /// QualifiedLoc class.
108
  enum TypeLocClass {
109
#define ABSTRACT_TYPE(Class, Base)
110
#define TYPE(Class, Base) \
111
    Class = Type::Class,
112
#include "clang/AST/TypeNodes.inc"
113
    Qualified
114
  };
115
116
2.96G
  TypeLocClass getTypeLocClass() const {
117
2.96G
    if (getType().hasLocalQualifiers()) 
return Qualified61.1M
;
118
2.90G
    return (TypeLocClass) getType()->getTypeClass();
119
2.96G
  }
120
121
1.29G
  bool isNull() const { return !Ty; }
122
729M
  explicit operator bool() const { return Ty; }
123
124
  /// Returns the size of type source info data block for the given type.
125
  static unsigned getFullDataSizeForType(QualType Ty);
126
127
  /// Returns the alignment of type source info data block for
128
  /// the given type.
129
  static unsigned getLocalAlignmentForType(QualType Ty);
130
131
  /// Get the type for which this source info wrapper provides
132
  /// information.
133
10.7G
  QualType getType() const {
134
10.7G
    return QualType::getFromOpaquePtr(Ty);
135
10.7G
  }
136
137
3.57G
  const Type *getTypePtr() const {
138
3.57G
    return QualType::getFromOpaquePtr(Ty).getTypePtr();
139
3.57G
  }
140
141
  /// Get the pointer where source information is stored.
142
32.9M
  void *getOpaqueData() const {
143
32.9M
    return Data;
144
32.9M
  }
145
146
  /// Get the begin source location.
147
  SourceLocation getBeginLoc() const;
148
149
  /// Get the end source location.
150
  SourceLocation getEndLoc() const;
151
152
  /// Get the full source range.
153
24.3M
  SourceRange getSourceRange() const LLVM_READONLY {
154
24.3M
    return SourceRange(getBeginLoc(), getEndLoc());
155
24.3M
  }
156
157
158
  /// Get the local source range.
159
342M
  SourceRange getLocalSourceRange() const {
160
342M
    return getLocalSourceRangeImpl(*this);
161
342M
  }
162
163
  /// Returns the size of the type source info data block.
164
26.9M
  unsigned getFullDataSize() const {
165
26.9M
    return getFullDataSizeForType(getType());
166
26.9M
  }
167
168
  /// Get the next TypeLoc pointed by this TypeLoc, e.g for "int*" the
169
  /// TypeLoc is a PointerLoc and next TypeLoc is for "int".
170
799M
  TypeLoc getNextTypeLoc() const {
171
799M
    return getNextTypeLocImpl(*this);
172
799M
  }
173
174
  /// Skips past any qualifiers, if this is qualified.
175
  UnqualTypeLoc getUnqualifiedLoc() const; // implemented in this header
176
177
  TypeLoc IgnoreParens() const;
178
179
  /// Find a type with the location of an explicit type qualifier.
180
  ///
181
  /// The result, if non-null, will be one of:
182
  ///   QualifiedTypeLoc
183
  ///   AtomicTypeLoc
184
  ///   AttributedTypeLoc, for those type attributes that behave as qualifiers
185
  TypeLoc findExplicitQualifierLoc() const;
186
187
  /// Get the typeloc of an AutoType whose type will be deduced for a variable
188
  /// with an initializer of this type. This looks through declarators like
189
  /// pointer types, but not through decltype or typedefs.
190
  AutoTypeLoc getContainedAutoTypeLoc() const;
191
192
  /// Initializes this to state that every location in this
193
  /// type is the given location.
194
  ///
195
  /// This method exists to provide a simple transition for code that
196
  /// relies on location-less types.
197
20.9M
  void initialize(ASTContext &Context, SourceLocation Loc) const {
198
20.9M
    initializeImpl(Context, *this, Loc);
199
20.9M
  }
200
201
  /// Initializes this by copying its information from another
202
  /// TypeLoc of the same type.
203
35.9k
  void initializeFullCopy(TypeLoc Other) {
204
35.9k
    assert(getType() == Other.getType());
205
35.9k
    copy(Other);
206
35.9k
  }
207
208
  /// Initializes this by copying its information from another
209
  /// TypeLoc of the same type.  The given size must be the full data
210
  /// size.
211
774
  void initializeFullCopy(TypeLoc Other, unsigned Size) {
212
774
    assert(getType() == Other.getType());
213
774
    assert(getFullDataSize() == Size);
214
774
    copy(Other);
215
774
  }
216
217
  /// Copies the other type loc into this one.
218
  void copy(TypeLoc other);
219
220
14.2k
  friend bool operator==(const TypeLoc &LHS, const TypeLoc &RHS) {
221
14.2k
    return LHS.Ty == RHS.Ty && 
LHS.Data == RHS.Data9.25k
;
222
14.2k
  }
223
224
1.30k
  friend bool operator!=(const TypeLoc &LHS, const TypeLoc &RHS) {
225
1.30k
    return !(LHS == RHS);
226
1.30k
  }
227
228
  /// Find the location of the nullability specifier (__nonnull,
229
  /// __nullable, or __null_unspecifier), if there is one.
230
  SourceLocation findNullabilityLoc() const;
231
232
private:
233
7.85M
  static bool isKind(const TypeLoc&) {
234
7.85M
    return true;
235
7.85M
  }
236
237
  static void initializeImpl(ASTContext &Context, TypeLoc TL,
238
                             SourceLocation Loc);
239
  static TypeLoc getNextTypeLocImpl(TypeLoc TL);
240
  static TypeLoc IgnoreParensImpl(TypeLoc TL);
241
  static SourceRange getLocalSourceRangeImpl(TypeLoc TL);
242
};
243
244
196M
inline TypeSourceInfo::TypeSourceInfo(QualType ty, size_t DataSize) : Ty(ty) {
245
  // Init data attached to the object. See getTypeLoc.
246
196M
  memset(static_cast<void *>(this + 1), 0, DataSize);
247
196M
}
248
249
/// Return the TypeLoc for a type source info.
250
328M
inline TypeLoc TypeSourceInfo::getTypeLoc() const {
251
  // TODO: is this alignment already sufficient?
252
328M
  return TypeLoc(Ty, const_cast<void*>(static_cast<const void*>(this + 1)));
253
328M
}
254
255
/// Wrapper of type source information for a type with
256
/// no direct qualifiers.
257
class UnqualTypeLoc : public TypeLoc {
258
public:
259
3.85G
  UnqualTypeLoc() = default;
260
22.8M
  UnqualTypeLoc(const Type *Ty, void *Data) : TypeLoc(Ty, Data) {}
261
262
4.25G
  const Type *getTypePtr() const {
263
4.25G
    return reinterpret_cast<const Type*>(Ty);
264
4.25G
  }
265
266
440M
  TypeLocClass getTypeLocClass() const {
267
440M
    return (TypeLocClass) getTypePtr()->getTypeClass();
268
440M
  }
269
270
private:
271
  friend class TypeLoc;
272
273
334M
  static bool isKind(const TypeLoc &TL) {
274
334M
    return !TL.getType().hasLocalQualifiers();
275
334M
  }
276
};
277
278
/// Wrapper of type source information for a type with
279
/// non-trivial direct qualifiers.
280
///
281
/// Currently, we intentionally do not provide source location for
282
/// type qualifiers.
283
class QualifiedTypeLoc : public TypeLoc {
284
public:
285
8.23k
  SourceRange getLocalSourceRange() const { return {}; }
286
287
22.8M
  UnqualTypeLoc getUnqualifiedLoc() const {
288
22.8M
    unsigned align =
289
22.8M
        TypeLoc::getLocalAlignmentForType(QualType(getTypePtr(), 0));
290
22.8M
    auto dataInt = reinterpret_cast<uintptr_t>(Data);
291
22.8M
    dataInt = llvm::alignTo(dataInt, align);
292
22.8M
    return UnqualTypeLoc(getTypePtr(), reinterpret_cast<void*>(dataInt));
293
22.8M
  }
294
295
  /// Initializes the local data of this type source info block to
296
  /// provide no information.
297
397k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
298
    // do nothing
299
397k
  }
300
301
50
  void copyLocal(TypeLoc other) {
302
    // do nothing
303
50
  }
304
305
15.0M
  TypeLoc getNextTypeLoc() const {
306
15.0M
    return getUnqualifiedLoc();
307
15.0M
  }
308
309
  /// Returns the size of the type source info data block that is
310
  /// specific to this type.
311
10.4M
  unsigned getLocalDataSize() const {
312
    // In fact, we don't currently preserve any location information
313
    // for qualifiers.
314
10.4M
    return 0;
315
10.4M
  }
316
317
  /// Returns the alignment of the type source info data block that is
318
  /// specific to this type.
319
30.1M
  unsigned getLocalDataAlignment() const {
320
    // We don't preserve any location information.
321
30.1M
    return 1;
322
30.1M
  }
323
324
private:
325
  friend class TypeLoc;
326
327
398M
  static bool isKind(const TypeLoc &TL) {
328
398M
    return TL.getType().hasLocalQualifiers();
329
398M
  }
330
};
331
332
341M
inline UnqualTypeLoc TypeLoc::getUnqualifiedLoc() const {
333
341M
  if (QualifiedTypeLoc Loc = getAs<QualifiedTypeLoc>())
334
6.19M
    return Loc.getUnqualifiedLoc();
335
334M
  return castAs<UnqualTypeLoc>();
336
341M
}
337
338
/// A metaprogramming base class for TypeLoc classes which correspond
339
/// to a particular Type subclass.  It is accepted for a single
340
/// TypeLoc class to correspond to multiple Type classes.
341
///
342
/// \tparam Base a class from which to derive
343
/// \tparam Derived the class deriving from this one
344
/// \tparam TypeClass the concrete Type subclass associated with this
345
///   location type
346
/// \tparam LocalData the structure type of local location data for
347
///   this type
348
///
349
/// TypeLocs with non-constant amounts of local data should override
350
/// getExtraLocalDataSize(); getExtraLocalData() will then point to
351
/// this extra memory.
352
///
353
/// TypeLocs with an inner type should define
354
///   QualType getInnerType() const
355
/// and getInnerTypeLoc() will then point to this inner type's
356
/// location data.
357
///
358
/// A word about hierarchies: this template is not designed to be
359
/// derived from multiple times in a hierarchy.  It is also not
360
/// designed to be used for classes where subtypes might provide
361
/// different amounts of source information.  It should be subclassed
362
/// only at the deepest portion of the hierarchy where all children
363
/// have identical source information; if that's an abstract type,
364
/// then further descendents should inherit from
365
/// InheritingConcreteTypeLoc instead.
366
template <class Base, class Derived, class TypeClass, class LocalData>
367
class ConcreteTypeLoc : public Base {
368
  friend class TypeLoc;
369
370
4.20G
  const Derived *asDerived() const {
371
4.20G
    return static_cast<const Derived*>(this);
372
4.20G
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::asDerived() const
Line
Count
Source
370
152M
  const Derived *asDerived() const {
371
152M
    return static_cast<const Derived*>(this);
372
152M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::asDerived() const
Line
Count
Source
370
789k
  const Derived *asDerived() const {
371
789k
    return static_cast<const Derived*>(this);
372
789k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::asDerived() const
Line
Count
Source
370
48.3M
  const Derived *asDerived() const {
371
48.3M
    return static_cast<const Derived*>(this);
372
48.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::asDerived() const
Line
Count
Source
370
1.16k
  const Derived *asDerived() const {
371
1.16k
    return static_cast<const Derived*>(this);
372
1.16k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::asDerived() const
Line
Count
Source
370
8.60M
  const Derived *asDerived() const {
371
8.60M
    return static_cast<const Derived*>(this);
372
8.60M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::asDerived() const
Line
Count
Source
370
3.22M
  const Derived *asDerived() const {
371
3.22M
    return static_cast<const Derived*>(this);
372
3.22M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::asDerived() const
Line
Count
Source
370
7.91M
  const Derived *asDerived() const {
371
7.91M
    return static_cast<const Derived*>(this);
372
7.91M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::asDerived() const
Line
Count
Source
370
68.6k
  const Derived *asDerived() const {
371
68.6k
    return static_cast<const Derived*>(this);
372
68.6k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::asDerived() const
Line
Count
Source
370
687M
  const Derived *asDerived() const {
371
687M
    return static_cast<const Derived*>(this);
372
687M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::asDerived() const
Line
Count
Source
370
8.69M
  const Derived *asDerived() const {
371
8.69M
    return static_cast<const Derived*>(this);
372
8.69M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::asDerived() const
Line
Count
Source
370
323M
  const Derived *asDerived() const {
371
323M
    return static_cast<const Derived*>(this);
372
323M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::asDerived() const
Line
Count
Source
370
1.57k
  const Derived *asDerived() const {
371
1.57k
    return static_cast<const Derived*>(this);
372
1.57k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::asDerived() const
Line
Count
Source
370
2.14M
  const Derived *asDerived() const {
371
2.14M
    return static_cast<const Derived*>(this);
372
2.14M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::asDerived() const
Line
Count
Source
370
2.89k
  const Derived *asDerived() const {
371
2.89k
    return static_cast<const Derived*>(this);
372
2.89k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::asDerived() const
Line
Count
Source
370
41.8k
  const Derived *asDerived() const {
371
41.8k
    return static_cast<const Derived*>(this);
372
41.8k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::asDerived() const
Line
Count
Source
370
1.33G
  const Derived *asDerived() const {
371
1.33G
    return static_cast<const Derived*>(this);
372
1.33G
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::asDerived() const
Line
Count
Source
370
1.44M
  const Derived *asDerived() const {
371
1.44M
    return static_cast<const Derived*>(this);
372
1.44M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::asDerived() const
Line
Count
Source
370
12.8M
  const Derived *asDerived() const {
371
12.8M
    return static_cast<const Derived*>(this);
372
12.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::asDerived() const
Line
Count
Source
370
270k
  const Derived *asDerived() const {
371
270k
    return static_cast<const Derived*>(this);
372
270k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::asDerived() const
Line
Count
Source
370
3.52k
  const Derived *asDerived() const {
371
3.52k
    return static_cast<const Derived*>(this);
372
3.52k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::asDerived() const
Line
Count
Source
370
1.12M
  const Derived *asDerived() const {
371
1.12M
    return static_cast<const Derived*>(this);
372
1.12M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::asDerived() const
Line
Count
Source
370
1.33M
  const Derived *asDerived() const {
371
1.33M
    return static_cast<const Derived*>(this);
372
1.33M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::asDerived() const
Line
Count
Source
370
22.2M
  const Derived *asDerived() const {
371
22.2M
    return static_cast<const Derived*>(this);
372
22.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::asDerived() const
Line
Count
Source
370
166M
  const Derived *asDerived() const {
371
166M
    return static_cast<const Derived*>(this);
372
166M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::asDerived() const
Line
Count
Source
370
129M
  const Derived *asDerived() const {
371
129M
    return static_cast<const Derived*>(this);
372
129M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::asDerived() const
Line
Count
Source
370
1.22G
  const Derived *asDerived() const {
371
1.22G
    return static_cast<const Derived*>(this);
372
1.22G
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::asDerived() const
Line
Count
Source
370
4.50M
  const Derived *asDerived() const {
371
4.50M
    return static_cast<const Derived*>(this);
372
4.50M
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::asDerived() const
Line
Count
Source
370
4.06M
  const Derived *asDerived() const {
371
4.06M
    return static_cast<const Derived*>(this);
372
4.06M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::asDerived() const
Line
Count
Source
370
32.8M
  const Derived *asDerived() const {
371
32.8M
    return static_cast<const Derived*>(this);
372
32.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::asDerived() const
Line
Count
Source
370
8.89k
  const Derived *asDerived() const {
371
8.89k
    return static_cast<const Derived*>(this);
372
8.89k
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::asDerived() const
Line
Count
Source
370
12.1M
  const Derived *asDerived() const {
371
12.1M
    return static_cast<const Derived*>(this);
372
12.1M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::asDerived() const
Line
Count
Source
370
33.2k
  const Derived *asDerived() const {
371
33.2k
    return static_cast<const Derived*>(this);
372
33.2k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::asDerived() const
Line
Count
Source
370
816
  const Derived *asDerived() const {
371
816
    return static_cast<const Derived*>(this);
372
816
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::asDerived() const
Line
Count
Source
370
8.53M
  const Derived *asDerived() const {
371
8.53M
    return static_cast<const Derived*>(this);
372
8.53M
  }
373
374
1.91G
  static bool isKind(const TypeLoc &TL) {
375
1.91G
    return !TL.getType().hasLocalQualifiers() &&
376
1.91G
           
Derived::classofType(TL.getTypePtr())1.91G
;
377
1.91G
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
45.5M
  static bool isKind(const TypeLoc &TL) {
375
45.5M
    return !TL.getType().hasLocalQualifiers() &&
376
45.5M
           
Derived::classofType(TL.getTypePtr())45.5M
;
377
45.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
859M
  static bool isKind(const TypeLoc &TL) {
375
859M
    return !TL.getType().hasLocalQualifiers() &&
376
859M
           
Derived::classofType(TL.getTypePtr())859M
;
377
859M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
389M
  static bool isKind(const TypeLoc &TL) {
375
389M
    return !TL.getType().hasLocalQualifiers() &&
376
389M
           
Derived::classofType(TL.getTypePtr())389M
;
377
389M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
36.9M
  static bool isKind(const TypeLoc &TL) {
375
36.9M
    return !TL.getType().hasLocalQualifiers() &&
376
36.9M
           Derived::classofType(TL.getTypePtr());
377
36.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
126M
  static bool isKind(const TypeLoc &TL) {
375
126M
    return !TL.getType().hasLocalQualifiers() &&
376
126M
           
Derived::classofType(TL.getTypePtr())126M
;
377
126M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
36.6M
  static bool isKind(const TypeLoc &TL) {
375
36.6M
    return !TL.getType().hasLocalQualifiers() &&
376
36.6M
           
Derived::classofType(TL.getTypePtr())36.6M
;
377
36.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
36.6M
  static bool isKind(const TypeLoc &TL) {
375
36.6M
    return !TL.getType().hasLocalQualifiers() &&
376
36.6M
           
Derived::classofType(TL.getTypePtr())36.6M
;
377
36.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
37.6M
  static bool isKind(const TypeLoc &TL) {
375
37.6M
    return !TL.getType().hasLocalQualifiers() &&
376
37.6M
           
Derived::classofType(TL.getTypePtr())37.6M
;
377
37.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
49.8M
  static bool isKind(const TypeLoc &TL) {
375
49.8M
    return !TL.getType().hasLocalQualifiers() &&
376
49.8M
           Derived::classofType(TL.getTypePtr());
377
49.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
511k
  static bool isKind(const TypeLoc &TL) {
375
511k
    return !TL.getType().hasLocalQualifiers() &&
376
511k
           Derived::classofType(TL.getTypePtr());
377
511k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
141M
  static bool isKind(const TypeLoc &TL) {
375
141M
    return !TL.getType().hasLocalQualifiers() &&
376
141M
           Derived::classofType(TL.getTypePtr());
377
141M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
4.80M
  static bool isKind(const TypeLoc &TL) {
375
4.80M
    return !TL.getType().hasLocalQualifiers() &&
376
4.80M
           Derived::classofType(TL.getTypePtr());
377
4.80M
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
3.49M
  static bool isKind(const TypeLoc &TL) {
375
3.49M
    return !TL.getType().hasLocalQualifiers() &&
376
3.49M
           Derived::classofType(TL.getTypePtr());
377
3.49M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
745
  static bool isKind(const TypeLoc &TL) {
375
745
    return !TL.getType().hasLocalQualifiers() &&
376
745
           Derived::classofType(TL.getTypePtr());
377
745
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
32.8M
  static bool isKind(const TypeLoc &TL) {
375
32.8M
    return !TL.getType().hasLocalQualifiers() &&
376
32.8M
           Derived::classofType(TL.getTypePtr());
377
32.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
15.0k
  static bool isKind(const TypeLoc &TL) {
375
15.0k
    return !TL.getType().hasLocalQualifiers() &&
376
15.0k
           Derived::classofType(TL.getTypePtr());
377
15.0k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
1.14M
  static bool isKind(const TypeLoc &TL) {
375
1.14M
    return !TL.getType().hasLocalQualifiers() &&
376
1.14M
           Derived::classofType(TL.getTypePtr());
377
1.14M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
1.02k
  static bool isKind(const TypeLoc &TL) {
375
1.02k
    return !TL.getType().hasLocalQualifiers() &&
376
1.02k
           Derived::classofType(TL.getTypePtr());
377
1.02k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
464k
  static bool isKind(const TypeLoc &TL) {
375
464k
    return !TL.getType().hasLocalQualifiers() &&
376
464k
           Derived::classofType(TL.getTypePtr());
377
464k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
10.2M
  static bool isKind(const TypeLoc &TL) {
375
10.2M
    return !TL.getType().hasLocalQualifiers() &&
376
10.2M
           Derived::classofType(TL.getTypePtr());
377
10.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
3.45M
  static bool isKind(const TypeLoc &TL) {
375
3.45M
    return !TL.getType().hasLocalQualifiers() &&
376
3.45M
           Derived::classofType(TL.getTypePtr());
377
3.45M
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
12.9M
  static bool isKind(const TypeLoc &TL) {
375
12.9M
    return !TL.getType().hasLocalQualifiers() &&
376
12.9M
           Derived::classofType(TL.getTypePtr());
377
12.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
927k
  static bool isKind(const TypeLoc &TL) {
375
927k
    return !TL.getType().hasLocalQualifiers() &&
376
927k
           Derived::classofType(TL.getTypePtr());
377
927k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
7.99M
  static bool isKind(const TypeLoc &TL) {
375
7.99M
    return !TL.getType().hasLocalQualifiers() &&
376
7.99M
           
Derived::classofType(TL.getTypePtr())7.97M
;
377
7.99M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
1.36k
  static bool isKind(const TypeLoc &TL) {
375
1.36k
    return !TL.getType().hasLocalQualifiers() &&
376
1.36k
           Derived::classofType(TL.getTypePtr());
377
1.36k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
63.4M
  static bool isKind(const TypeLoc &TL) {
375
63.4M
    return !TL.getType().hasLocalQualifiers() &&
376
63.4M
           
Derived::classofType(TL.getTypePtr())63.4M
;
377
63.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
42.5k
  static bool isKind(const TypeLoc &TL) {
375
42.5k
    return !TL.getType().hasLocalQualifiers() &&
376
42.5k
           Derived::classofType(TL.getTypePtr());
377
42.5k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
899
  static bool isKind(const TypeLoc &TL) {
375
899
    return !TL.getType().hasLocalQualifiers() &&
376
899
           Derived::classofType(TL.getTypePtr());
377
899
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
7.76M
  static bool isKind(const TypeLoc &TL) {
375
7.76M
    return !TL.getType().hasLocalQualifiers() &&
376
7.76M
           Derived::classofType(TL.getTypePtr());
377
7.76M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
852k
  static bool isKind(const TypeLoc &TL) {
375
852k
    return !TL.getType().hasLocalQualifiers() &&
376
852k
           Derived::classofType(TL.getTypePtr());
377
852k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
386k
  static bool isKind(const TypeLoc &TL) {
375
386k
    return !TL.getType().hasLocalQualifiers() &&
376
386k
           Derived::classofType(TL.getTypePtr());
377
386k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
666
  static bool isKind(const TypeLoc &TL) {
375
666
    return !TL.getType().hasLocalQualifiers() &&
376
666
           Derived::classofType(TL.getTypePtr());
377
666
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
374
11.4k
  static bool isKind(const TypeLoc &TL) {
375
11.4k
    return !TL.getType().hasLocalQualifiers() &&
376
11.4k
           Derived::classofType(TL.getTypePtr());
377
11.4k
  }
378
379
1.91G
  static bool classofType(const Type *Ty) {
380
1.91G
    return TypeClass::classof(Ty);
381
1.91G
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
45.5M
  static bool classofType(const Type *Ty) {
380
45.5M
    return TypeClass::classof(Ty);
381
45.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
859M
  static bool classofType(const Type *Ty) {
380
859M
    return TypeClass::classof(Ty);
381
859M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
389M
  static bool classofType(const Type *Ty) {
380
389M
    return TypeClass::classof(Ty);
381
389M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
36.9M
  static bool classofType(const Type *Ty) {
380
36.9M
    return TypeClass::classof(Ty);
381
36.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
126M
  static bool classofType(const Type *Ty) {
380
126M
    return TypeClass::classof(Ty);
381
126M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
36.6M
  static bool classofType(const Type *Ty) {
380
36.6M
    return TypeClass::classof(Ty);
381
36.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
36.6M
  static bool classofType(const Type *Ty) {
380
36.6M
    return TypeClass::classof(Ty);
381
36.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
37.6M
  static bool classofType(const Type *Ty) {
380
37.6M
    return TypeClass::classof(Ty);
381
37.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
49.8M
  static bool classofType(const Type *Ty) {
380
49.8M
    return TypeClass::classof(Ty);
381
49.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
511k
  static bool classofType(const Type *Ty) {
380
511k
    return TypeClass::classof(Ty);
381
511k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
141M
  static bool classofType(const Type *Ty) {
380
141M
    return TypeClass::classof(Ty);
381
141M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
4.80M
  static bool classofType(const Type *Ty) {
380
4.80M
    return TypeClass::classof(Ty);
381
4.80M
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
3.49M
  static bool classofType(const Type *Ty) {
380
3.49M
    return TypeClass::classof(Ty);
381
3.49M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
745
  static bool classofType(const Type *Ty) {
380
745
    return TypeClass::classof(Ty);
381
745
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
32.8M
  static bool classofType(const Type *Ty) {
380
32.8M
    return TypeClass::classof(Ty);
381
32.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
15.0k
  static bool classofType(const Type *Ty) {
380
15.0k
    return TypeClass::classof(Ty);
381
15.0k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
1.14M
  static bool classofType(const Type *Ty) {
380
1.14M
    return TypeClass::classof(Ty);
381
1.14M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
1.02k
  static bool classofType(const Type *Ty) {
380
1.02k
    return TypeClass::classof(Ty);
381
1.02k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
464k
  static bool classofType(const Type *Ty) {
380
464k
    return TypeClass::classof(Ty);
381
464k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
10.2M
  static bool classofType(const Type *Ty) {
380
10.2M
    return TypeClass::classof(Ty);
381
10.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
3.45M
  static bool classofType(const Type *Ty) {
380
3.45M
    return TypeClass::classof(Ty);
381
3.45M
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
12.9M
  static bool classofType(const Type *Ty) {
380
12.9M
    return TypeClass::classof(Ty);
381
12.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
927k
  static bool classofType(const Type *Ty) {
380
927k
    return TypeClass::classof(Ty);
381
927k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
7.97M
  static bool classofType(const Type *Ty) {
380
7.97M
    return TypeClass::classof(Ty);
381
7.97M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
1.36k
  static bool classofType(const Type *Ty) {
380
1.36k
    return TypeClass::classof(Ty);
381
1.36k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
63.4M
  static bool classofType(const Type *Ty) {
380
63.4M
    return TypeClass::classof(Ty);
381
63.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
42.5k
  static bool classofType(const Type *Ty) {
380
42.5k
    return TypeClass::classof(Ty);
381
42.5k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
899
  static bool classofType(const Type *Ty) {
380
899
    return TypeClass::classof(Ty);
381
899
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
7.76M
  static bool classofType(const Type *Ty) {
380
7.76M
    return TypeClass::classof(Ty);
381
7.76M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
852k
  static bool classofType(const Type *Ty) {
380
852k
    return TypeClass::classof(Ty);
381
852k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
386k
  static bool classofType(const Type *Ty) {
380
386k
    return TypeClass::classof(Ty);
381
386k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
666
  static bool classofType(const Type *Ty) {
380
666
    return TypeClass::classof(Ty);
381
666
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
379
11.4k
  static bool classofType(const Type *Ty) {
380
11.4k
    return TypeClass::classof(Ty);
381
11.4k
  }
382
383
public:
384
1.03G
  unsigned getLocalDataAlignment() const {
385
1.03G
    return std::max(unsigned(alignof(LocalData)),
386
1.03G
                    asDerived()->getExtraLocalDataAlignment());
387
1.03G
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
268M
  unsigned getLocalDataAlignment() const {
385
268M
    return std::max(unsigned(alignof(LocalData)),
386
268M
                    asDerived()->getExtraLocalDataAlignment());
387
268M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
10.2k
  unsigned getLocalDataAlignment() const {
385
10.2k
    return std::max(unsigned(alignof(LocalData)),
386
10.2k
                    asDerived()->getExtraLocalDataAlignment());
387
10.2k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
894k
  unsigned getLocalDataAlignment() const {
385
894k
    return std::max(unsigned(alignof(LocalData)),
386
894k
                    asDerived()->getExtraLocalDataAlignment());
387
894k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
32.2k
  unsigned getLocalDataAlignment() const {
385
32.2k
    return std::max(unsigned(alignof(LocalData)),
386
32.2k
                    asDerived()->getExtraLocalDataAlignment());
387
32.2k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
4.44M
  unsigned getLocalDataAlignment() const {
385
4.44M
    return std::max(unsigned(alignof(LocalData)),
386
4.44M
                    asDerived()->getExtraLocalDataAlignment());
387
4.44M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
226
  unsigned getLocalDataAlignment() const {
385
226
    return std::max(unsigned(alignof(LocalData)),
386
226
                    asDerived()->getExtraLocalDataAlignment());
387
226
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
528M
  unsigned getLocalDataAlignment() const {
385
528M
    return std::max(unsigned(alignof(LocalData)),
386
528M
                    asDerived()->getExtraLocalDataAlignment());
387
528M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
190k
  unsigned getLocalDataAlignment() const {
385
190k
    return std::max(unsigned(alignof(LocalData)),
386
190k
                    asDerived()->getExtraLocalDataAlignment());
387
190k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
48.9M
  unsigned getLocalDataAlignment() const {
385
48.9M
    return std::max(unsigned(alignof(LocalData)),
386
48.9M
                    asDerived()->getExtraLocalDataAlignment());
387
48.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
1.15M
  unsigned getLocalDataAlignment() const {
385
1.15M
    return std::max(unsigned(alignof(LocalData)),
386
1.15M
                    asDerived()->getExtraLocalDataAlignment());
387
1.15M
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
1.15M
  unsigned getLocalDataAlignment() const {
385
1.15M
    return std::max(unsigned(alignof(LocalData)),
386
1.15M
                    asDerived()->getExtraLocalDataAlignment());
387
1.15M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
258
  unsigned getLocalDataAlignment() const {
385
258
    return std::max(unsigned(alignof(LocalData)),
386
258
                    asDerived()->getExtraLocalDataAlignment());
387
258
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
7.74M
  unsigned getLocalDataAlignment() const {
385
7.74M
    return std::max(unsigned(alignof(LocalData)),
386
7.74M
                    asDerived()->getExtraLocalDataAlignment());
387
7.74M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
2.69k
  unsigned getLocalDataAlignment() const {
385
2.69k
    return std::max(unsigned(alignof(LocalData)),
386
2.69k
                    asDerived()->getExtraLocalDataAlignment());
387
2.69k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
279k
  unsigned getLocalDataAlignment() const {
385
279k
    return std::max(unsigned(alignof(LocalData)),
386
279k
                    asDerived()->getExtraLocalDataAlignment());
387
279k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
176
  unsigned getLocalDataAlignment() const {
385
176
    return std::max(unsigned(alignof(LocalData)),
386
176
                    asDerived()->getExtraLocalDataAlignment());
387
176
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
45.2M
  unsigned getLocalDataAlignment() const {
385
45.2M
    return std::max(unsigned(alignof(LocalData)),
386
45.2M
                    asDerived()->getExtraLocalDataAlignment());
387
45.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
240k
  unsigned getLocalDataAlignment() const {
385
240k
    return std::max(unsigned(alignof(LocalData)),
386
240k
                    asDerived()->getExtraLocalDataAlignment());
387
240k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
1.98k
  unsigned getLocalDataAlignment() const {
385
1.98k
    return std::max(unsigned(alignof(LocalData)),
386
1.98k
                    asDerived()->getExtraLocalDataAlignment());
387
1.98k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
67.5k
  unsigned getLocalDataAlignment() const {
385
67.5k
    return std::max(unsigned(alignof(LocalData)),
386
67.5k
                    asDerived()->getExtraLocalDataAlignment());
387
67.5k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
3.93M
  unsigned getLocalDataAlignment() const {
385
3.93M
    return std::max(unsigned(alignof(LocalData)),
386
3.93M
                    asDerived()->getExtraLocalDataAlignment());
387
3.93M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
1.35M
  unsigned getLocalDataAlignment() const {
385
1.35M
    return std::max(unsigned(alignof(LocalData)),
386
1.35M
                    asDerived()->getExtraLocalDataAlignment());
387
1.35M
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
5.37M
  unsigned getLocalDataAlignment() const {
385
5.37M
    return std::max(unsigned(alignof(LocalData)),
386
5.37M
                    asDerived()->getExtraLocalDataAlignment());
387
5.37M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
222k
  unsigned getLocalDataAlignment() const {
385
222k
    return std::max(unsigned(alignof(LocalData)),
386
222k
                    asDerived()->getExtraLocalDataAlignment());
387
222k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
966k
  unsigned getLocalDataAlignment() const {
385
966k
    return std::max(unsigned(alignof(LocalData)),
386
966k
                    asDerived()->getExtraLocalDataAlignment());
387
966k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
1.48M
  unsigned getLocalDataAlignment() const {
385
1.48M
    return std::max(unsigned(alignof(LocalData)),
386
1.48M
                    asDerived()->getExtraLocalDataAlignment());
387
1.48M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
273
  unsigned getLocalDataAlignment() const {
385
273
    return std::max(unsigned(alignof(LocalData)),
386
273
                    asDerived()->getExtraLocalDataAlignment());
387
273
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
15.3M
  unsigned getLocalDataAlignment() const {
385
15.3M
    return std::max(unsigned(alignof(LocalData)),
386
15.3M
                    asDerived()->getExtraLocalDataAlignment());
387
15.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
13.3M
  unsigned getLocalDataAlignment() const {
385
13.3M
    return std::max(unsigned(alignof(LocalData)),
386
13.3M
                    asDerived()->getExtraLocalDataAlignment());
387
13.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
85.4M
  unsigned getLocalDataAlignment() const {
385
85.4M
    return std::max(unsigned(alignof(LocalData)),
386
85.4M
                    asDerived()->getExtraLocalDataAlignment());
387
85.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
15.0k
  unsigned getLocalDataAlignment() const {
385
15.0k
    return std::max(unsigned(alignof(LocalData)),
386
15.0k
                    asDerived()->getExtraLocalDataAlignment());
387
15.0k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
206
  unsigned getLocalDataAlignment() const {
385
206
    return std::max(unsigned(alignof(LocalData)),
386
206
                    asDerived()->getExtraLocalDataAlignment());
387
206
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
1.94M
  unsigned getLocalDataAlignment() const {
385
1.94M
    return std::max(unsigned(alignof(LocalData)),
386
1.94M
                    asDerived()->getExtraLocalDataAlignment());
387
1.94M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
384
200k
  unsigned getLocalDataAlignment() const {
385
200k
    return std::max(unsigned(alignof(LocalData)),
386
200k
                    asDerived()->getExtraLocalDataAlignment());
387
200k
  }
388
389
525M
  unsigned getLocalDataSize() const {
390
525M
    unsigned size = sizeof(LocalData);
391
525M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
525M
    size = llvm::alignTo(size, extraAlign);
393
525M
    size += asDerived()->getExtraLocalDataSize();
394
525M
    return size;
395
525M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getLocalDataSize() const
Line
Count
Source
389
10.7M
  unsigned getLocalDataSize() const {
390
10.7M
    unsigned size = sizeof(LocalData);
391
10.7M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
10.7M
    size = llvm::alignTo(size, extraAlign);
393
10.7M
    size += asDerived()->getExtraLocalDataSize();
394
10.7M
    return size;
395
10.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getLocalDataSize() const
Line
Count
Source
389
229
  unsigned getLocalDataSize() const {
390
229
    unsigned size = sizeof(LocalData);
391
229
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
229
    size = llvm::alignTo(size, extraAlign);
393
229
    size += asDerived()->getExtraLocalDataSize();
394
229
    return size;
395
229
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
389
1.89M
  unsigned getLocalDataSize() const {
390
1.89M
    unsigned size = sizeof(LocalData);
391
1.89M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
1.89M
    size = llvm::alignTo(size, extraAlign);
393
1.89M
    size += asDerived()->getExtraLocalDataSize();
394
1.89M
    return size;
395
1.89M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getLocalDataSize() const
Line
Count
Source
389
739k
  unsigned getLocalDataSize() const {
390
739k
    unsigned size = sizeof(LocalData);
391
739k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
739k
    size = llvm::alignTo(size, extraAlign);
393
739k
    size += asDerived()->getExtraLocalDataSize();
394
739k
    return size;
395
739k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getLocalDataSize() const
Line
Count
Source
389
1.53M
  unsigned getLocalDataSize() const {
390
1.53M
    unsigned size = sizeof(LocalData);
391
1.53M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
1.53M
    size = llvm::alignTo(size, extraAlign);
393
1.53M
    size += asDerived()->getExtraLocalDataSize();
394
1.53M
    return size;
395
1.53M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getLocalDataSize() const
Line
Count
Source
389
133M
  unsigned getLocalDataSize() const {
390
133M
    unsigned size = sizeof(LocalData);
391
133M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
133M
    size = llvm::alignTo(size, extraAlign);
393
133M
    size += asDerived()->getExtraLocalDataSize();
394
133M
    return size;
395
133M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getLocalDataSize() const
Line
Count
Source
389
1.92M
  unsigned getLocalDataSize() const {
390
1.92M
    unsigned size = sizeof(LocalData);
391
1.92M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
1.92M
    size = llvm::alignTo(size, extraAlign);
393
1.92M
    size += asDerived()->getExtraLocalDataSize();
394
1.92M
    return size;
395
1.92M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getLocalDataSize() const
Line
Count
Source
389
317
  unsigned getLocalDataSize() const {
390
317
    unsigned size = sizeof(LocalData);
391
317
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
317
    size = llvm::alignTo(size, extraAlign);
393
317
    size += asDerived()->getExtraLocalDataSize();
394
317
    return size;
395
317
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
389
480k
  unsigned getLocalDataSize() const {
390
480k
    unsigned size = sizeof(LocalData);
391
480k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
480k
    size = llvm::alignTo(size, extraAlign);
393
480k
    size += asDerived()->getExtraLocalDataSize();
394
480k
    return size;
395
480k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
389
650
  unsigned getLocalDataSize() const {
390
650
    unsigned size = sizeof(LocalData);
391
650
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
650
    size = llvm::alignTo(size, extraAlign);
393
650
    size += asDerived()->getExtraLocalDataSize();
394
650
    return size;
395
650
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
389
9.45k
  unsigned getLocalDataSize() const {
390
9.45k
    unsigned size = sizeof(LocalData);
391
9.45k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
9.45k
    size = llvm::alignTo(size, extraAlign);
393
9.45k
    size += asDerived()->getExtraLocalDataSize();
394
9.45k
    return size;
395
9.45k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getLocalDataSize() const
Line
Count
Source
389
12.5M
  unsigned getLocalDataSize() const {
390
12.5M
    unsigned size = sizeof(LocalData);
391
12.5M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
12.5M
    size = llvm::alignTo(size, extraAlign);
393
12.5M
    size += asDerived()->getExtraLocalDataSize();
394
12.5M
    return size;
395
12.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
389
2.96M
  unsigned getLocalDataSize() const {
390
2.96M
    unsigned size = sizeof(LocalData);
391
2.96M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
2.96M
    size = llvm::alignTo(size, extraAlign);
393
2.96M
    size += asDerived()->getExtraLocalDataSize();
394
2.96M
    return size;
395
2.96M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
389
57.9k
  unsigned getLocalDataSize() const {
390
57.9k
    unsigned size = sizeof(LocalData);
391
57.9k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
57.9k
    size = llvm::alignTo(size, extraAlign);
393
57.9k
    size += asDerived()->getExtraLocalDataSize();
394
57.9k
    return size;
395
57.9k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
389
806
  unsigned getLocalDataSize() const {
390
806
    unsigned size = sizeof(LocalData);
391
806
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
806
    size = llvm::alignTo(size, extraAlign);
393
806
    size += asDerived()->getExtraLocalDataSize();
394
806
    return size;
395
806
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getLocalDataSize() const
Line
Count
Source
389
223k
  unsigned getLocalDataSize() const {
390
223k
    unsigned size = sizeof(LocalData);
391
223k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
223k
    size = llvm::alignTo(size, extraAlign);
393
223k
    size += asDerived()->getExtraLocalDataSize();
394
223k
    return size;
395
223k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getLocalDataSize() const
Line
Count
Source
389
289k
  unsigned getLocalDataSize() const {
390
289k
    unsigned size = sizeof(LocalData);
391
289k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
289k
    size = llvm::alignTo(size, extraAlign);
393
289k
    size += asDerived()->getExtraLocalDataSize();
394
289k
    return size;
395
289k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getLocalDataSize() const
Line
Count
Source
389
4.43M
  unsigned getLocalDataSize() const {
390
4.43M
    unsigned size = sizeof(LocalData);
391
4.43M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
4.43M
    size = llvm::alignTo(size, extraAlign);
393
4.43M
    size += asDerived()->getExtraLocalDataSize();
394
4.43M
    return size;
395
4.43M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getLocalDataSize() const
Line
Count
Source
389
37.4M
  unsigned getLocalDataSize() const {
390
37.4M
    unsigned size = sizeof(LocalData);
391
37.4M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
37.4M
    size = llvm::alignTo(size, extraAlign);
393
37.4M
    size += asDerived()->getExtraLocalDataSize();
394
37.4M
    return size;
395
37.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getLocalDataSize() const
Line
Count
Source
389
29.4M
  unsigned getLocalDataSize() const {
390
29.4M
    unsigned size = sizeof(LocalData);
391
29.4M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
29.4M
    size = llvm::alignTo(size, extraAlign);
393
29.4M
    size += asDerived()->getExtraLocalDataSize();
394
29.4M
    return size;
395
29.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getLocalDataSize() const
Line
Count
Source
389
204M
  unsigned getLocalDataSize() const {
390
204M
    unsigned size = sizeof(LocalData);
391
204M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
204M
    size = llvm::alignTo(size, extraAlign);
393
204M
    size += asDerived()->getExtraLocalDataSize();
394
204M
    return size;
395
204M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getLocalDataSize() const
Line
Count
Source
389
23.8M
  unsigned getLocalDataSize() const {
390
23.8M
    unsigned size = sizeof(LocalData);
391
23.8M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
23.8M
    size = llvm::alignTo(size, extraAlign);
393
23.8M
    size += asDerived()->getExtraLocalDataSize();
394
23.8M
    return size;
395
23.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
389
919k
  unsigned getLocalDataSize() const {
390
919k
    unsigned size = sizeof(LocalData);
391
919k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
919k
    size = llvm::alignTo(size, extraAlign);
393
919k
    size += asDerived()->getExtraLocalDataSize();
394
919k
    return size;
395
919k
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
389
934k
  unsigned getLocalDataSize() const {
390
934k
    unsigned size = sizeof(LocalData);
391
934k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
934k
    size = llvm::alignTo(size, extraAlign);
393
934k
    size += asDerived()->getExtraLocalDataSize();
394
934k
    return size;
395
934k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getLocalDataSize() const
Line
Count
Source
389
7.29M
  unsigned getLocalDataSize() const {
390
7.29M
    unsigned size = sizeof(LocalData);
391
7.29M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
7.29M
    size = llvm::alignTo(size, extraAlign);
393
7.29M
    size += asDerived()->getExtraLocalDataSize();
394
7.29M
    return size;
395
7.29M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getLocalDataSize() const
Line
Count
Source
389
275k
  unsigned getLocalDataSize() const {
390
275k
    unsigned size = sizeof(LocalData);
391
275k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
275k
    size = llvm::alignTo(size, extraAlign);
393
275k
    size += asDerived()->getExtraLocalDataSize();
394
275k
    return size;
395
275k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
389
1.98k
  unsigned getLocalDataSize() const {
390
1.98k
    unsigned size = sizeof(LocalData);
391
1.98k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
1.98k
    size = llvm::alignTo(size, extraAlign);
393
1.98k
    size += asDerived()->getExtraLocalDataSize();
394
1.98k
    return size;
395
1.98k
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getLocalDataSize() const
Line
Count
Source
389
1.91M
  unsigned getLocalDataSize() const {
390
1.91M
    unsigned size = sizeof(LocalData);
391
1.91M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
1.91M
    size = llvm::alignTo(size, extraAlign);
393
1.91M
    size += asDerived()->getExtraLocalDataSize();
394
1.91M
    return size;
395
1.91M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
389
132k
  unsigned getLocalDataSize() const {
390
132k
    unsigned size = sizeof(LocalData);
391
132k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
132k
    size = llvm::alignTo(size, extraAlign);
393
132k
    size += asDerived()->getExtraLocalDataSize();
394
132k
    return size;
395
132k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getLocalDataSize() const
Line
Count
Source
389
45.7M
  unsigned getLocalDataSize() const {
390
45.7M
    unsigned size = sizeof(LocalData);
391
45.7M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
45.7M
    size = llvm::alignTo(size, extraAlign);
393
45.7M
    size += asDerived()->getExtraLocalDataSize();
394
45.7M
    return size;
395
45.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
389
4.94k
  unsigned getLocalDataSize() const {
390
4.94k
    unsigned size = sizeof(LocalData);
391
4.94k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
4.94k
    size = llvm::alignTo(size, extraAlign);
393
4.94k
    size += asDerived()->getExtraLocalDataSize();
394
4.94k
    return size;
395
4.94k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
389
182
  unsigned getLocalDataSize() const {
390
182
    unsigned size = sizeof(LocalData);
391
182
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
182
    size = llvm::alignTo(size, extraAlign);
393
182
    size += asDerived()->getExtraLocalDataSize();
394
182
    return size;
395
182
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
389
1.93M
  unsigned getLocalDataSize() const {
390
1.93M
    unsigned size = sizeof(LocalData);
391
1.93M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
392
1.93M
    size = llvm::alignTo(size, extraAlign);
393
1.93M
    size += asDerived()->getExtraLocalDataSize();
394
1.93M
    return size;
395
1.93M
  }
396
397
1.68k
  void copyLocal(Derived other) {
398
    // Some subclasses have no data to copy.
399
1.68k
    if (asDerived()->getLocalDataSize() == 0) 
return8
;
400
401
    // Copy the fixed-sized local data.
402
1.67k
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
403
404
    // Copy the variable-sized local data. We need to do this
405
    // separately because the padding in the source and the padding in
406
    // the destination might be different.
407
1.67k
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
408
1.67k
           asDerived()->getExtraLocalDataSize());
409
1.67k
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::copyLocal(clang::AdjustedTypeLoc)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::copyLocal(clang::ArrayTypeLoc)
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::copyLocal(clang::AtomicTypeLoc)
Line
Count
Source
397
1
  void copyLocal(Derived other) {
398
    // Some subclasses have no data to copy.
399
1
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
400
401
    // Copy the fixed-sized local data.
402
1
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
403
404
    // Copy the variable-sized local data. We need to do this
405
    // separately because the padding in the source and the padding in
406
    // the destination might be different.
407
1
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
408
1
           asDerived()->getExtraLocalDataSize());
409
1
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::copyLocal(clang::AttributedTypeLoc)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::copyLocal(clang::BTFTagAttributedTypeLoc)
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::copyLocal(clang::TypeSpecTypeLoc)
Line
Count
Source
397
494
  void copyLocal(Derived other) {
398
    // Some subclasses have no data to copy.
399
494
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
400
401
    // Copy the fixed-sized local data.
402
494
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
403
404
    // Copy the variable-sized local data. We need to do this
405
    // separately because the padding in the source and the padding in
406
    // the destination might be different.
407
494
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
408
494
           asDerived()->getExtraLocalDataSize());
409
494
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::copyLocal(clang::BlockPointerTypeLoc)
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::copyLocal(clang::BuiltinTypeLoc)
Line
Count
Source
397
997
  void copyLocal(Derived other) {
398
    // Some subclasses have no data to copy.
399
997
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
400
401
    // Copy the fixed-sized local data.
402
997
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
403
404
    // Copy the variable-sized local data. We need to do this
405
    // separately because the padding in the source and the padding in
406
    // the destination might be different.
407
997
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
408
997
           asDerived()->getExtraLocalDataSize());
409
997
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::copyLocal(clang::DecltypeTypeLoc)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::copyLocal(clang::AutoTypeLoc)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::copyLocal(clang::DependentAddressSpaceTypeLoc)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::copyLocal(clang::DependentNameTypeLoc)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::copyLocal(clang::DependentSizedExtVectorTypeLoc)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::copyLocal(clang::DependentTemplateSpecializationTypeLoc)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::copyLocal(clang::DependentVectorTypeLoc)
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::copyLocal(clang::ElaboratedTypeLoc)
Line
Count
Source
397
8
  void copyLocal(Derived other) {
398
    // Some subclasses have no data to copy.
399
8
    if (asDerived()->getLocalDataSize() == 0) return;
400
401
    // Copy the fixed-sized local data.
402
0
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
403
404
    // Copy the variable-sized local data. We need to do this
405
    // separately because the padding in the source and the padding in
406
    // the destination might be different.
407
0
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
408
0
           asDerived()->getExtraLocalDataSize());
409
0
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::copyLocal(clang::FunctionTypeLoc)
Line
Count
Source
397
7
  void copyLocal(Derived other) {
398
    // Some subclasses have no data to copy.
399
7
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
400
401
    // Copy the fixed-sized local data.
402
7
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
403
404
    // Copy the variable-sized local data. We need to do this
405
    // separately because the padding in the source and the padding in
406
    // the destination might be different.
407
7
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
408
7
           asDerived()->getExtraLocalDataSize());
409
7
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::copyLocal(clang::MacroQualifiedTypeLoc)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::copyLocal(clang::MatrixTypeLoc)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::copyLocal(clang::MemberPointerTypeLoc)
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::copyLocal(clang::ObjCObjectPointerTypeLoc)
Line
Count
Source
397
19
  void copyLocal(Derived other) {
398
    // Some subclasses have no data to copy.
399
19
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
400
401
    // Copy the fixed-sized local data.
402
19
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
403
404
    // Copy the variable-sized local data. We need to do this
405
    // separately because the padding in the source and the padding in
406
    // the destination might be different.
407
19
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
408
19
           asDerived()->getExtraLocalDataSize());
409
19
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::copyLocal(clang::ObjCObjectTypeLoc)
Line
Count
Source
397
19
  void copyLocal(Derived other) {
398
    // Some subclasses have no data to copy.
399
19
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
400
401
    // Copy the fixed-sized local data.
402
19
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
403
404
    // Copy the variable-sized local data. We need to do this
405
    // separately because the padding in the source and the padding in
406
    // the destination might be different.
407
19
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
408
19
           asDerived()->getExtraLocalDataSize());
409
19
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::copyLocal(clang::ObjCInterfaceTypeLoc)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::copyLocal(clang::ObjCTypeParamTypeLoc)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::copyLocal(clang::PackExpansionTypeLoc)
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::copyLocal(clang::ParenTypeLoc)
Line
Count
Source
397
7
  void copyLocal(Derived other) {
398
    // Some subclasses have no data to copy.
399
7
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
400
401
    // Copy the fixed-sized local data.
402
7
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
403
404
    // Copy the variable-sized local data. We need to do this
405
    // separately because the padding in the source and the padding in
406
    // the destination might be different.
407
7
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
408
7
           asDerived()->getExtraLocalDataSize());
409
7
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::copyLocal(clang::PipeTypeLoc)
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::copyLocal(clang::PointerTypeLoc)
Line
Count
Source
397
126
  void copyLocal(Derived other) {
398
    // Some subclasses have no data to copy.
399
126
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
400
401
    // Copy the fixed-sized local data.
402
126
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
403
404
    // Copy the variable-sized local data. We need to do this
405
    // separately because the padding in the source and the padding in
406
    // the destination might be different.
407
126
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
408
126
           asDerived()->getExtraLocalDataSize());
409
126
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::copyLocal(clang::ReferenceTypeLoc)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::copyLocal(clang::TemplateSpecializationTypeLoc)
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::copyLocal(clang::TypeOfExprTypeLoc)
Line
Count
Source
397
1
  void copyLocal(Derived other) {
398
    // Some subclasses have no data to copy.
399
1
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
400
401
    // Copy the fixed-sized local data.
402
1
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
403
404
    // Copy the variable-sized local data. We need to do this
405
    // separately because the padding in the source and the padding in
406
    // the destination might be different.
407
1
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
408
1
           asDerived()->getExtraLocalDataSize());
409
1
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::copyLocal(clang::TypeOfTypeLoc)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::copyLocal(clang::UnaryTransformTypeLoc)
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::copyLocal(clang::VectorTypeLoc)
Line
Count
Source
397
2
  void copyLocal(Derived other) {
398
    // Some subclasses have no data to copy.
399
2
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
400
401
    // Copy the fixed-sized local data.
402
2
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
403
404
    // Copy the variable-sized local data. We need to do this
405
    // separately because the padding in the source and the padding in
406
    // the destination might be different.
407
2
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
408
2
           asDerived()->getExtraLocalDataSize());
409
2
  }
410
411
945M
  TypeLoc getNextTypeLoc() const {
412
945M
    return getNextTypeLoc(asDerived()->getInnerType());
413
945M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
17.2k
  TypeLoc getNextTypeLoc() const {
412
17.2k
    return getNextTypeLoc(asDerived()->getInnerType());
413
17.2k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
1.26M
  TypeLoc getNextTypeLoc() const {
412
1.26M
    return getNextTypeLoc(asDerived()->getInnerType());
413
1.26M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
36.0k
  TypeLoc getNextTypeLoc() const {
412
36.0k
    return getNextTypeLoc(asDerived()->getInnerType());
413
36.0k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
5.70M
  TypeLoc getNextTypeLoc() const {
412
5.70M
    return getNextTypeLoc(asDerived()->getInnerType());
413
5.70M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
123
  TypeLoc getNextTypeLoc() const {
412
123
    return getNextTypeLoc(asDerived()->getInnerType());
413
123
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
287M
  TypeLoc getNextTypeLoc() const {
412
287M
    return getNextTypeLoc(asDerived()->getInnerType());
413
287M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
160k
  TypeLoc getNextTypeLoc() const {
412
160k
    return getNextTypeLoc(asDerived()->getInnerType());
413
160k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
37.0M
  TypeLoc getNextTypeLoc() const {
412
37.0M
    return getNextTypeLoc(asDerived()->getInnerType());
413
37.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
1.50M
  TypeLoc getNextTypeLoc() const {
412
1.50M
    return getNextTypeLoc(asDerived()->getInnerType());
413
1.50M
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
1.03M
  TypeLoc getNextTypeLoc() const {
412
1.03M
    return getNextTypeLoc(asDerived()->getInnerType());
413
1.03M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
226
  TypeLoc getNextTypeLoc() const {
412
226
    return getNextTypeLoc(asDerived()->getInnerType());
413
226
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
10.5M
  TypeLoc getNextTypeLoc() const {
412
10.5M
    return getNextTypeLoc(asDerived()->getInnerType());
413
10.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
5.49k
  TypeLoc getNextTypeLoc() const {
412
5.49k
    return getNextTypeLoc(asDerived()->getInnerType());
413
5.49k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
385k
  TypeLoc getNextTypeLoc() const {
412
385k
    return getNextTypeLoc(asDerived()->getInnerType());
413
385k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
368
  TypeLoc getNextTypeLoc() const {
412
368
    return getNextTypeLoc(asDerived()->getInnerType());
413
368
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
341M
  TypeLoc getNextTypeLoc() const {
412
341M
    return getNextTypeLoc(asDerived()->getInnerType());
413
341M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
87.4M
  TypeLoc getNextTypeLoc() const {
412
87.4M
    return getNextTypeLoc(asDerived()->getInnerType());
413
87.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
342k
  TypeLoc getNextTypeLoc() const {
412
342k
    return getNextTypeLoc(asDerived()->getInnerType());
413
342k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
2.92k
  TypeLoc getNextTypeLoc() const {
412
2.92k
    return getNextTypeLoc(asDerived()->getInnerType());
413
2.92k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
227k
  TypeLoc getNextTypeLoc() const {
412
227k
    return getNextTypeLoc(asDerived()->getInnerType());
413
227k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
3.09M
  TypeLoc getNextTypeLoc() const {
412
3.09M
    return getNextTypeLoc(asDerived()->getInnerType());
413
3.09M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
930k
  TypeLoc getNextTypeLoc() const {
412
930k
    return getNextTypeLoc(asDerived()->getInnerType());
413
930k
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
2.97M
  TypeLoc getNextTypeLoc() const {
412
2.97M
    return getNextTypeLoc(asDerived()->getInnerType());
413
2.97M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
287k
  TypeLoc getNextTypeLoc() const {
412
287k
    return getNextTypeLoc(asDerived()->getInnerType());
413
287k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
1.60M
  TypeLoc getNextTypeLoc() const {
412
1.60M
    return getNextTypeLoc(asDerived()->getInnerType());
413
1.60M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
1.07M
  TypeLoc getNextTypeLoc() const {
412
1.07M
    return getNextTypeLoc(asDerived()->getInnerType());
413
1.07M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
543
  TypeLoc getNextTypeLoc() const {
412
543
    return getNextTypeLoc(asDerived()->getInnerType());
413
543
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
24.1M
  TypeLoc getNextTypeLoc() const {
412
24.1M
    return getNextTypeLoc(asDerived()->getInnerType());
413
24.1M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
17.2M
  TypeLoc getNextTypeLoc() const {
412
17.2M
    return getNextTypeLoc(asDerived()->getInnerType());
413
17.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
115M
  TypeLoc getNextTypeLoc() const {
412
115M
    return getNextTypeLoc(asDerived()->getInnerType());
413
115M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
8.31k
  TypeLoc getNextTypeLoc() const {
412
8.31k
    return getNextTypeLoc(asDerived()->getInnerType());
413
8.31k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
246
  TypeLoc getNextTypeLoc() const {
412
246
    return getNextTypeLoc(asDerived()->getInnerType());
413
246
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
2.70M
  TypeLoc getNextTypeLoc() const {
412
2.70M
    return getNextTypeLoc(asDerived()->getInnerType());
413
2.70M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
411
328k
  TypeLoc getNextTypeLoc() const {
412
328k
    return getNextTypeLoc(asDerived()->getInnerType());
413
328k
  }
414
415
3.81G
  const TypeClass *getTypePtr() const {
416
3.81G
    return cast<TypeClass>(Base::getTypePtr());
417
3.81G
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getTypePtr() const
Line
Count
Source
415
144M
  const TypeClass *getTypePtr() const {
416
144M
    return cast<TypeClass>(Base::getTypePtr());
417
144M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getTypePtr() const
Line
Count
Source
415
13.3M
  const TypeClass *getTypePtr() const {
416
13.3M
    return cast<TypeClass>(Base::getTypePtr());
417
13.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getTypePtr() const
Line
Count
Source
415
327k
  const TypeClass *getTypePtr() const {
416
327k
    return cast<TypeClass>(Base::getTypePtr());
417
327k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getTypePtr() const
Line
Count
Source
415
18.2M
  const TypeClass *getTypePtr() const {
416
18.2M
    return cast<TypeClass>(Base::getTypePtr());
417
18.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getTypePtr() const
Line
Count
Source
415
360
  const TypeClass *getTypePtr() const {
416
360
    return cast<TypeClass>(Base::getTypePtr());
417
360
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getTypePtr() const
Line
Count
Source
415
6.82M
  const TypeClass *getTypePtr() const {
416
6.82M
    return cast<TypeClass>(Base::getTypePtr());
417
6.82M
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getTypePtr() const
Line
Count
Source
415
28.7k
  const TypeClass *getTypePtr() const {
416
28.7k
    return cast<TypeClass>(Base::getTypePtr());
417
28.7k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getTypePtr() const
Line
Count
Source
415
1.24M
  const TypeClass *getTypePtr() const {
416
1.24M
    return cast<TypeClass>(Base::getTypePtr());
417
1.24M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getTypePtr() const
Line
Count
Source
415
2.25M
  const TypeClass *getTypePtr() const {
416
2.25M
    return cast<TypeClass>(Base::getTypePtr());
417
2.25M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getTypePtr() const
Line
Count
Source
415
38.9k
  const TypeClass *getTypePtr() const {
416
38.9k
    return cast<TypeClass>(Base::getTypePtr());
417
38.9k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getTypePtr() const
Line
Count
Source
415
493k
  const TypeClass *getTypePtr() const {
416
493k
    return cast<TypeClass>(Base::getTypePtr());
417
493k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getTypePtr() const
Line
Count
Source
415
40.2M
  const TypeClass *getTypePtr() const {
416
40.2M
    return cast<TypeClass>(Base::getTypePtr());
417
40.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getTypePtr() const
Line
Count
Source
415
722M
  const TypeClass *getTypePtr() const {
416
722M
    return cast<TypeClass>(Base::getTypePtr());
417
722M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getTypePtr() const
Line
Count
Source
415
2.67M
  const TypeClass *getTypePtr() const {
416
2.67M
    return cast<TypeClass>(Base::getTypePtr());
417
2.67M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getTypePtr() const
Line
Count
Source
415
77.4M
  const TypeClass *getTypePtr() const {
416
77.4M
    return cast<TypeClass>(Base::getTypePtr());
417
77.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getTypePtr() const
Line
Count
Source
415
550
  const TypeClass *getTypePtr() const {
416
550
    return cast<TypeClass>(Base::getTypePtr());
417
550
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getTypePtr() const
Line
Count
Source
415
657k
  const TypeClass *getTypePtr() const {
416
657k
    return cast<TypeClass>(Base::getTypePtr());
417
657k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getTypePtr() const
Line
Count
Source
415
1.07k
  const TypeClass *getTypePtr() const {
416
1.07k
    return cast<TypeClass>(Base::getTypePtr());
417
1.07k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getTypePtr() const
Line
Count
Source
415
14.8k
  const TypeClass *getTypePtr() const {
416
14.8k
    return cast<TypeClass>(Base::getTypePtr());
417
14.8k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getTypePtr() const
Line
Count
Source
415
4.72k
  const TypeClass *getTypePtr() const {
416
4.72k
    return cast<TypeClass>(Base::getTypePtr());
417
4.72k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getTypePtr() const
Line
Count
Source
415
1
  const TypeClass *getTypePtr() const {
416
1
    return cast<TypeClass>(Base::getTypePtr());
417
1
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::getTypePtr() const
Line
Count
Source
415
184k
  const TypeClass *getTypePtr() const {
416
184k
    return cast<TypeClass>(Base::getTypePtr());
417
184k
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getTypePtr() const
Line
Count
Source
415
751k
  const TypeClass *getTypePtr() const {
416
751k
    return cast<TypeClass>(Base::getTypePtr());
417
751k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getTypePtr() const
Line
Count
Source
415
2.71G
  const TypeClass *getTypePtr() const {
416
2.71G
    return cast<TypeClass>(Base::getTypePtr());
417
2.71G
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getTypePtr() const
Line
Count
Source
415
7.02M
  const TypeClass *getTypePtr() const {
416
7.02M
    return cast<TypeClass>(Base::getTypePtr());
417
7.02M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getTypePtr() const
Line
Count
Source
415
853k
  const TypeClass *getTypePtr() const {
416
853k
    return cast<TypeClass>(Base::getTypePtr());
417
853k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getTypePtr() const
Line
Count
Source
415
4.32M
  const TypeClass *getTypePtr() const {
416
4.32M
    return cast<TypeClass>(Base::getTypePtr());
417
4.32M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getTypePtr() const
Line
Count
Source
415
81.9k
  const TypeClass *getTypePtr() const {
416
81.9k
    return cast<TypeClass>(Base::getTypePtr());
417
81.9k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getTypePtr() const
Line
Count
Source
415
1.09k
  const TypeClass *getTypePtr() const {
416
1.09k
    return cast<TypeClass>(Base::getTypePtr());
417
1.09k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getTypePtr() const
Line
Count
Source
415
324k
  const TypeClass *getTypePtr() const {
416
324k
    return cast<TypeClass>(Base::getTypePtr());
417
324k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getTypePtr() const
Line
Count
Source
415
391
  const TypeClass *getTypePtr() const {
416
391
    return cast<TypeClass>(Base::getTypePtr());
417
391
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getTypePtr() const
Line
Count
Source
415
6.30M
  const TypeClass *getTypePtr() const {
416
6.30M
    return cast<TypeClass>(Base::getTypePtr());
417
6.30M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getTypePtr() const
Line
Count
Source
415
50.8M
  const TypeClass *getTypePtr() const {
416
50.8M
    return cast<TypeClass>(Base::getTypePtr());
417
50.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getTypePtr() const
Line
Count
Source
415
769k
  const TypeClass *getTypePtr() const {
416
769k
    return cast<TypeClass>(Base::getTypePtr());
417
769k
  }
418
419
protected:
420
320M
  unsigned getExtraLocalDataSize() const {
421
320M
    return 0;
422
320M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
10.7M
  unsigned getExtraLocalDataSize() const {
421
10.7M
    return 0;
422
10.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
229
  unsigned getExtraLocalDataSize() const {
421
229
    return 0;
422
229
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
739k
  unsigned getExtraLocalDataSize() const {
421
739k
    return 0;
422
739k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
1.53M
  unsigned getExtraLocalDataSize() const {
421
1.53M
    return 0;
422
1.53M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
1.92M
  unsigned getExtraLocalDataSize() const {
421
1.92M
    return 0;
422
1.92M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
317
  unsigned getExtraLocalDataSize() const {
421
317
    return 0;
422
317
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
480k
  unsigned getExtraLocalDataSize() const {
421
480k
    return 0;
422
480k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
650
  unsigned getExtraLocalDataSize() const {
421
650
    return 0;
422
650
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
9.45k
  unsigned getExtraLocalDataSize() const {
421
9.45k
    return 0;
422
9.45k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
12.5M
  unsigned getExtraLocalDataSize() const {
421
12.5M
    return 0;
422
12.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
2.96M
  unsigned getExtraLocalDataSize() const {
421
2.96M
    return 0;
422
2.96M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
57.9k
  unsigned getExtraLocalDataSize() const {
421
57.9k
    return 0;
422
57.9k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
806
  unsigned getExtraLocalDataSize() const {
421
806
    return 0;
422
806
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
223k
  unsigned getExtraLocalDataSize() const {
421
223k
    return 0;
422
223k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
289k
  unsigned getExtraLocalDataSize() const {
421
289k
    return 0;
422
289k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
4.43M
  unsigned getExtraLocalDataSize() const {
421
4.43M
    return 0;
422
4.43M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
37.4M
  unsigned getExtraLocalDataSize() const {
421
37.4M
    return 0;
422
37.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
29.4M
  unsigned getExtraLocalDataSize() const {
421
29.4M
    return 0;
422
29.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
204M
  unsigned getExtraLocalDataSize() const {
421
204M
    return 0;
422
204M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
919k
  unsigned getExtraLocalDataSize() const {
421
919k
    return 0;
422
919k
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
934k
  unsigned getExtraLocalDataSize() const {
421
934k
    return 0;
422
934k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
7.29M
  unsigned getExtraLocalDataSize() const {
421
7.29M
    return 0;
422
7.29M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
1.98k
  unsigned getExtraLocalDataSize() const {
421
1.98k
    return 0;
422
1.98k
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
1.91M
  unsigned getExtraLocalDataSize() const {
421
1.91M
    return 0;
422
1.91M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
4.94k
  unsigned getExtraLocalDataSize() const {
421
4.94k
    return 0;
422
4.94k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
182
  unsigned getExtraLocalDataSize() const {
421
182
    return 0;
422
182
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
420
1.93M
  unsigned getExtraLocalDataSize() const {
421
1.93M
    return 0;
422
1.93M
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getExtraLocalDataSize() const
423
424
1.17G
  unsigned getExtraLocalDataAlignment() const {
425
1.17G
    return 1;
426
1.17G
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
15.2M
  unsigned getExtraLocalDataAlignment() const {
425
15.2M
    return 1;
426
15.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
455
  unsigned getExtraLocalDataAlignment() const {
425
455
    return 1;
426
455
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
979k
  unsigned getExtraLocalDataAlignment() const {
425
979k
    return 1;
426
979k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
3.01M
  unsigned getExtraLocalDataAlignment() const {
425
3.01M
    return 1;
426
3.01M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
2.82M
  unsigned getExtraLocalDataAlignment() const {
425
2.82M
    return 1;
426
2.82M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
575
  unsigned getExtraLocalDataAlignment() const {
425
575
    return 1;
426
575
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
681k
  unsigned getExtraLocalDataAlignment() const {
425
681k
    return 1;
426
681k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
826
  unsigned getExtraLocalDataAlignment() const {
425
826
    return 1;
426
826
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
12.1k
  unsigned getExtraLocalDataAlignment() const {
425
12.1k
    return 1;
426
12.1k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
281M
  unsigned getExtraLocalDataAlignment() const {
425
281M
    return 1;
426
281M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
3.93M
  unsigned getExtraLocalDataAlignment() const {
425
3.93M
    return 1;
426
3.93M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
90.2k
  unsigned getExtraLocalDataAlignment() const {
425
90.2k
    return 1;
426
90.2k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
1.07k
  unsigned getExtraLocalDataAlignment() const {
425
1.07k
    return 1;
426
1.07k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
414k
  unsigned getExtraLocalDataAlignment() const {
425
414k
    return 1;
426
414k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
357k
  unsigned getExtraLocalDataAlignment() const {
425
357k
    return 1;
426
357k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
8.36M
  unsigned getExtraLocalDataAlignment() const {
425
8.36M
    return 1;
426
8.36M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
52.8M
  unsigned getExtraLocalDataAlignment() const {
425
52.8M
    return 1;
426
52.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
42.8M
  unsigned getExtraLocalDataAlignment() const {
425
42.8M
    return 1;
426
42.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
10.2k
  unsigned getExtraLocalDataAlignment() const {
425
10.2k
    return 1;
426
10.2k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
732M
  unsigned getExtraLocalDataAlignment() const {
425
732M
    return 1;
426
732M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
2.07M
  unsigned getExtraLocalDataAlignment() const {
425
2.07M
    return 1;
426
2.07M
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
2.09M
  unsigned getExtraLocalDataAlignment() const {
425
2.09M
    return 1;
426
2.09M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
15.0M
  unsigned getExtraLocalDataAlignment() const {
425
15.0M
    return 1;
426
15.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
3.97k
  unsigned getExtraLocalDataAlignment() const {
425
3.97k
    return 1;
426
3.97k
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
7.29M
  unsigned getExtraLocalDataAlignment() const {
425
7.29M
    return 1;
426
7.29M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
19.9k
  unsigned getExtraLocalDataAlignment() const {
425
19.9k
    return 1;
426
19.9k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
388
  unsigned getExtraLocalDataAlignment() const {
425
388
    return 1;
426
388
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
424
3.88M
  unsigned getExtraLocalDataAlignment() const {
425
3.88M
    return 1;
426
3.88M
  }
427
428
1.28G
  LocalData *getLocalData() const {
429
1.28G
    return static_cast<LocalData*>(Base::Data);
430
1.28G
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getLocalData() const
Line
Count
Source
428
475M
  LocalData *getLocalData() const {
429
475M
    return static_cast<LocalData*>(Base::Data);
430
475M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getLocalData() const
Line
Count
Source
428
38.1M
  LocalData *getLocalData() const {
429
38.1M
    return static_cast<LocalData*>(Base::Data);
430
38.1M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getLocalData() const
Line
Count
Source
428
177k
  LocalData *getLocalData() const {
429
177k
    return static_cast<LocalData*>(Base::Data);
430
177k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getLocalData() const
Line
Count
Source
428
4.92M
  LocalData *getLocalData() const {
429
4.92M
    return static_cast<LocalData*>(Base::Data);
430
4.92M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getLocalData() const
Line
Count
Source
428
1.25M
  LocalData *getLocalData() const {
429
1.25M
    return static_cast<LocalData*>(Base::Data);
430
1.25M
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getLocalData() const
Line
Count
Source
428
5.96M
  LocalData *getLocalData() const {
429
5.96M
    return static_cast<LocalData*>(Base::Data);
430
5.96M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getLocalData() const
Line
Count
Source
428
244k
  LocalData *getLocalData() const {
429
244k
    return static_cast<LocalData*>(Base::Data);
430
244k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getLocalData() const
Line
Count
Source
428
1.13M
  LocalData *getLocalData() const {
429
1.13M
    return static_cast<LocalData*>(Base::Data);
430
1.13M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getLocalData() const
Line
Count
Source
428
15.4M
  LocalData *getLocalData() const {
429
15.4M
    return static_cast<LocalData*>(Base::Data);
430
15.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getLocalData() const
Line
Count
Source
428
130k
  LocalData *getLocalData() const {
429
130k
    return static_cast<LocalData*>(Base::Data);
430
130k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getLocalData() const
Line
Count
Source
428
261k
  LocalData *getLocalData() const {
429
261k
    return static_cast<LocalData*>(Base::Data);
430
261k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getLocalData() const
Line
Count
Source
428
2.35M
  LocalData *getLocalData() const {
429
2.35M
    return static_cast<LocalData*>(Base::Data);
430
2.35M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getLocalData() const
Line
Count
Source
428
15.7M
  LocalData *getLocalData() const {
429
15.7M
    return static_cast<LocalData*>(Base::Data);
430
15.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getLocalData() const
Line
Count
Source
428
167M
  LocalData *getLocalData() const {
429
167M
    return static_cast<LocalData*>(Base::Data);
430
167M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getLocalData() const
Line
Count
Source
428
1.92M
  LocalData *getLocalData() const {
429
1.92M
    return static_cast<LocalData*>(Base::Data);
430
1.92M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getLocalData() const
Line
Count
Source
428
507M
  LocalData *getLocalData() const {
429
507M
    return static_cast<LocalData*>(Base::Data);
430
507M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getLocalData() const
Line
Count
Source
428
431
  LocalData *getLocalData() const {
429
431
    return static_cast<LocalData*>(Base::Data);
430
431
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getLocalData() const
Line
Count
Source
428
265k
  LocalData *getLocalData() const {
429
265k
    return static_cast<LocalData*>(Base::Data);
430
265k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getLocalData() const
Line
Count
Source
428
396
  LocalData *getLocalData() const {
429
396
    return static_cast<LocalData*>(Base::Data);
430
396
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getLocalData() const
Line
Count
Source
428
8.27k
  LocalData *getLocalData() const {
429
8.27k
    return static_cast<LocalData*>(Base::Data);
430
8.27k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getLocalData() const
Line
Count
Source
428
6.75k
  LocalData *getLocalData() const {
429
6.75k
    return static_cast<LocalData*>(Base::Data);
430
6.75k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getLocalData() const
Line
Count
Source
428
921
  LocalData *getLocalData() const {
429
921
    return static_cast<LocalData*>(Base::Data);
430
921
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::getLocalData() const
Line
Count
Source
428
3.17M
  LocalData *getLocalData() const {
429
3.17M
    return static_cast<LocalData*>(Base::Data);
430
3.17M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getLocalData() const
Line
Count
Source
428
6.98M
  LocalData *getLocalData() const {
429
6.98M
    return static_cast<LocalData*>(Base::Data);
430
6.98M
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getLocalData() const
Line
Count
Source
428
117k
  LocalData *getLocalData() const {
429
117k
    return static_cast<LocalData*>(Base::Data);
430
117k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getLocalData() const
Line
Count
Source
428
8.86M
  LocalData *getLocalData() const {
429
8.86M
    return static_cast<LocalData*>(Base::Data);
430
8.86M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getLocalData() const
Line
Count
Source
428
27.8M
  LocalData *getLocalData() const {
429
27.8M
    return static_cast<LocalData*>(Base::Data);
430
27.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getLocalData() const
Line
Count
Source
428
1.70M
  LocalData *getLocalData() const {
429
1.70M
    return static_cast<LocalData*>(Base::Data);
430
1.70M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getLocalData() const
Line
Count
Source
428
1.63M
  LocalData *getLocalData() const {
429
1.63M
    return static_cast<LocalData*>(Base::Data);
430
1.63M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getLocalData() const
Line
Count
Source
428
76.7k
  LocalData *getLocalData() const {
429
76.7k
    return static_cast<LocalData*>(Base::Data);
430
76.7k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getLocalData() const
Line
Count
Source
428
282
  LocalData *getLocalData() const {
429
282
    return static_cast<LocalData*>(Base::Data);
430
282
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getLocalData() const
Line
Count
Source
428
32.2k
  LocalData *getLocalData() const {
429
32.2k
    return static_cast<LocalData*>(Base::Data);
430
32.2k
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getLocalData() const
431
432
  /// Gets a pointer past the Info structure; useful for classes with
433
  /// local data that can't be captured in the Info (e.g. because it's
434
  /// of variable size).
435
158M
  void *getExtraLocalData() const {
436
158M
    unsigned size = sizeof(LocalData);
437
158M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
438
158M
    size = llvm::alignTo(size, extraAlign);
439
158M
    return reinterpret_cast<char *>(Base::Data) + size;
440
158M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getExtraLocalData() const
Line
Count
Source
435
18.5M
  void *getExtraLocalData() const {
436
18.5M
    unsigned size = sizeof(LocalData);
437
18.5M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
438
18.5M
    size = llvm::alignTo(size, extraAlign);
439
18.5M
    return reinterpret_cast<char *>(Base::Data) + size;
440
18.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getExtraLocalData() const
Line
Count
Source
435
12.9k
  void *getExtraLocalData() const {
436
12.9k
    unsigned size = sizeof(LocalData);
437
12.9k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
438
12.9k
    size = llvm::alignTo(size, extraAlign);
439
12.9k
    return reinterpret_cast<char *>(Base::Data) + size;
440
12.9k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getExtraLocalData() const
Line
Count
Source
435
195k
  void *getExtraLocalData() const {
436
195k
    unsigned size = sizeof(LocalData);
437
195k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
438
195k
    size = llvm::alignTo(size, extraAlign);
439
195k
    return reinterpret_cast<char *>(Base::Data) + size;
440
195k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getExtraLocalData() const
Line
Count
Source
435
107M
  void *getExtraLocalData() const {
436
107M
    unsigned size = sizeof(LocalData);
437
107M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
438
107M
    size = llvm::alignTo(size, extraAlign);
439
107M
    return reinterpret_cast<char *>(Base::Data) + size;
440
107M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getExtraLocalData() const
Line
Count
Source
435
31.7M
  void *getExtraLocalData() const {
436
31.7M
    unsigned size = sizeof(LocalData);
437
31.7M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
438
31.7M
    size = llvm::alignTo(size, extraAlign);
439
31.7M
    return reinterpret_cast<char *>(Base::Data) + size;
440
31.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getExtraLocalData() const
Line
Count
Source
435
225k
  void *getExtraLocalData() const {
436
225k
    unsigned size = sizeof(LocalData);
437
225k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
438
225k
    size = llvm::alignTo(size, extraAlign);
439
225k
    return reinterpret_cast<char *>(Base::Data) + size;
440
225k
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getExtraLocalData() const
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getExtraLocalData() const
Line
Count
Source
435
2
  void *getExtraLocalData() const {
436
2
    unsigned size = sizeof(LocalData);
437
2
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
438
2
    size = llvm::alignTo(size, extraAlign);
439
2
    return reinterpret_cast<char *>(Base::Data) + size;
440
2
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getExtraLocalData() const
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getExtraLocalData() const
Line
Count
Source
435
988
  void *getExtraLocalData() const {
436
988
    unsigned size = sizeof(LocalData);
437
988
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
438
988
    size = llvm::alignTo(size, extraAlign);
439
988
    return reinterpret_cast<char *>(Base::Data) + size;
440
988
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getExtraLocalData() const
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getExtraLocalData() const
Line
Count
Source
435
38
  void *getExtraLocalData() const {
436
38
    unsigned size = sizeof(LocalData);
437
38
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
438
38
    size = llvm::alignTo(size, extraAlign);
439
38
    return reinterpret_cast<char *>(Base::Data) + size;
440
38
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getExtraLocalData() const
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getExtraLocalData() const
Line
Count
Source
435
14
  void *getExtraLocalData() const {
436
14
    unsigned size = sizeof(LocalData);
437
14
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
438
14
    size = llvm::alignTo(size, extraAlign);
439
14
    return reinterpret_cast<char *>(Base::Data) + size;
440
14
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getExtraLocalData() const
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getExtraLocalData() const
Line
Count
Source
435
252
  void *getExtraLocalData() const {
436
252
    unsigned size = sizeof(LocalData);
437
252
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
438
252
    size = llvm::alignTo(size, extraAlign);
439
252
    return reinterpret_cast<char *>(Base::Data) + size;
440
252
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getExtraLocalData() const
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getExtraLocalData() const
Line
Count
Source
435
2
  void *getExtraLocalData() const {
436
2
    unsigned size = sizeof(LocalData);
437
2
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
438
2
    size = llvm::alignTo(size, extraAlign);
439
2
    return reinterpret_cast<char *>(Base::Data) + size;
440
2
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getExtraLocalData() const
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getExtraLocalData() const
Line
Count
Source
435
4
  void *getExtraLocalData() const {
436
4
    unsigned size = sizeof(LocalData);
437
4
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
438
4
    size = llvm::alignTo(size, extraAlign);
439
4
    return reinterpret_cast<char *>(Base::Data) + size;
440
4
  }
441
442
499M
  void *getNonLocalData() const {
443
499M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
444
499M
    data += asDerived()->getLocalDataSize();
445
499M
    data = llvm::alignTo(data, getNextTypeAlign());
446
499M
    return reinterpret_cast<void*>(data);
447
499M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNonLocalData() const
Line
Count
Source
442
7.47M
  void *getNonLocalData() const {
443
7.47M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
444
7.47M
    data += asDerived()->getLocalDataSize();
445
7.47M
    data = llvm::alignTo(data, getNextTypeAlign());
446
7.47M
    return reinterpret_cast<void*>(data);
447
7.47M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getNonLocalData() const
Line
Count
Source
442
160
  void *getNonLocalData() const {
443
160
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
444
160
    data += asDerived()->getLocalDataSize();
445
160
    data = llvm::alignTo(data, getNextTypeAlign());
446
160
    return reinterpret_cast<void*>(data);
447
160
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNonLocalData() const
Line
Count
Source
442
1.08M
  void *getNonLocalData() const {
443
1.08M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
444
1.08M
    data += asDerived()->getLocalDataSize();
445
1.08M
    data = llvm::alignTo(data, getNextTypeAlign());
446
1.08M
    return reinterpret_cast<void*>(data);
447
1.08M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getNonLocalData() const
Line
Count
Source
442
500k
  void *getNonLocalData() const {
443
500k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
444
500k
    data += asDerived()->getLocalDataSize();
445
500k
    data = llvm::alignTo(data, getNextTypeAlign());
446
500k
    return reinterpret_cast<void*>(data);
447
500k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNonLocalData() const
Line
Count
Source
442
1.11M
  void *getNonLocalData() const {
443
1.11M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
444
1.11M
    data += asDerived()->getLocalDataSize();
445
1.11M
    data = llvm::alignTo(data, getNextTypeAlign());
446
1.11M
    return reinterpret_cast<void*>(data);
447
1.11M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNonLocalData() const
Line
Count
Source
442
19.4k
  void *getNonLocalData() const {
443
19.4k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
444
19.4k
    data += asDerived()->getLocalDataSize();
445
19.4k
    data = llvm::alignTo(data, getNextTypeAlign());
446
19.4k
    return reinterpret_cast<void*>(data);
447
19.4k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNonLocalData() const
Line
Count
Source
442
89.2M
  void *getNonLocalData() const {
443
89.2M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
444
89.2M
    data += asDerived()->getLocalDataSize();
445
89.2M
    data = llvm::alignTo(data, getNextTypeAlign());
446
89.2M
    return reinterpret_cast<void*>(data);
447
89.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNonLocalData() const
Line
Count
Source
442
1.31M
  void *getNonLocalData() const {
443
1.31M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
444
1.31M
    data += asDerived()->getLocalDataSize();
445
1.31M
    data = llvm::alignTo(data, getNextTypeAlign());
446
1.31M
    return reinterpret_cast<void*>(data);
447
1.31M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNonLocalData() const
Line
Count
Source
442
227
  void *getNonLocalData() const {
443
227
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
444
227
    data += asDerived()->getLocalDataSize();
445
227
    data = llvm::alignTo(data, getNextTypeAlign());
446
227
    return reinterpret_cast<void*>(data);
447
227
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getNonLocalData() const
Line
Count
Source
442
328k
  void *getNonLocalData() const {
443
328k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
444
328k
    data += asDerived()->getLocalDataSize();
445
328k
    data = llvm::alignTo(data, getNextTypeAlign());
446
328k
    return reinterpret_cast<void*>(data);
447
328k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getNonLocalData() const
Line
Count
Source
442
474
  void *getNonLocalData() const {
443
474
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
444
474
    data += asDerived()->getLocalDataSize();
445
474
    data = llvm::alignTo(data, getNextTypeAlign());
446
474
    return reinterpret_cast<void*>(data);
447
474
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getNonLocalData() const
Line
Count
Source
442
6.76k
  void *getNonLocalData() const {
443
6.76k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
444
6.76k
    data += asDerived()->getLocalDataSize();
445
6.76k
    data = llvm::alignTo(data, getNextTypeAlign());
446
6.76k
    return reinterpret_cast<void*>(data);
447
6.76k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNonLocalData() const
Line
Count
Source
442
348M
  void *getNonLocalData() const {
443
348M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
444
348M
    data += asDerived()->getLocalDataSize();
445
348M
    data = llvm::alignTo(data, getNextTypeAlign());
446
348M
    return reinterpret_cast<void*>(data);
447
348M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNonLocalData() const
Line
Count
Source
442
1.99M
  void *getNonLocalData() const {
443
1.99M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
444
1.99M
    data += asDerived()->getLocalDataSize();
445
1.99M
    data = llvm::alignTo(data, getNextTypeAlign());
446
1.99M
    return reinterpret_cast<void*>(data);
447
1.99M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNonLocalData() const
Line
Count
Source
442
40.8k
  void *getNonLocalData() const {
443
40.8k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
444
40.8k
    data += asDerived()->getLocalDataSize();
445
40.8k
    data = llvm::alignTo(data, getNextTypeAlign());
446
40.8k
    return reinterpret_cast<void*>(data);
447
40.8k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNonLocalData() const
Line
Count
Source
442
545
  void *getNonLocalData() const {
443
545
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
444
545
    data += asDerived()->getLocalDataSize();
445
545
    data = llvm::alignTo(data, getNextTypeAlign());
446
545
    return reinterpret_cast<void*>(data);
447
545
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNonLocalData() const
Line
Count
Source
442
161k
  void *getNonLocalData() const {
443
161k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
444
161k
    data += asDerived()->getLocalDataSize();
445
161k
    data = llvm::alignTo(data, getNextTypeAlign());
446
161k
    return reinterpret_cast<void*>(data);
447
161k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNonLocalData() const
Line
Count
Source
442
229k
  void *getNonLocalData() const {
443
229k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
444
229k
    data += asDerived()->getLocalDataSize();
445
229k
    data = llvm::alignTo(data, getNextTypeAlign());
446
229k
    return reinterpret_cast<void*>(data);
447
229k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNonLocalData() const
Line
Count
Source
442
3.14M
  void *getNonLocalData() const {
443
3.14M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
444
3.14M
    data += asDerived()->getLocalDataSize();
445
3.14M
    data = llvm::alignTo(data, getNextTypeAlign());
446
3.14M
    return reinterpret_cast<void*>(data);
447
3.14M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNonLocalData() const
Line
Count
Source
442
25.3M
  void *getNonLocalData() const {
443
25.3M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
444
25.3M
    data += asDerived()->getLocalDataSize();
445
25.3M
    data = llvm::alignTo(data, getNextTypeAlign());
446
25.3M
    return reinterpret_cast<void*>(data);
447
25.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNonLocalData() const
Line
Count
Source
442
19.2M
  void *getNonLocalData() const {
443
19.2M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
444
19.2M
    data += asDerived()->getLocalDataSize();
445
19.2M
    data = llvm::alignTo(data, getNextTypeAlign());
446
19.2M
    return reinterpret_cast<void*>(data);
447
19.2M
  }
448
449
  struct HasNoInnerType {};
450
459M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getInnerType() const
Line
Count
Source
450
287M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getInnerType() const
Line
Count
Source
450
37.0M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::getInnerType() const
Line
Count
Source
450
1.50M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getInnerType() const
Line
Count
Source
450
1.03M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getInnerType() const
Line
Count
Source
450
10.5M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getInnerType() const
Line
Count
Source
450
385k
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getInnerType() const
Line
Count
Source
450
2.92k
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getInnerType() const
Line
Count
Source
450
2.97M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getInnerType() const
Line
Count
Source
450
287k
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getInnerType() const
Line
Count
Source
450
115M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getInnerType() const
Line
Count
Source
450
8.31k
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getInnerType() const
Line
Count
Source
450
246
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getInnerType() const
Line
Count
Source
450
2.70M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
451
452
14.2M
  TypeLoc getInnerTypeLoc() const {
453
14.2M
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
454
14.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getInnerTypeLoc() const
Line
Count
Source
452
1.76M
  TypeLoc getInnerTypeLoc() const {
453
1.76M
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
454
1.76M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getInnerTypeLoc() const
Line
Count
Source
452
37
  TypeLoc getInnerTypeLoc() const {
453
37
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
454
37
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
452
157k
  TypeLoc getInnerTypeLoc() const {
453
157k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
454
157k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getInnerTypeLoc() const
Line
Count
Source
452
157k
  TypeLoc getInnerTypeLoc() const {
453
157k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
454
157k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getInnerTypeLoc() const
Line
Count
Source
452
42.9k
  TypeLoc getInnerTypeLoc() const {
453
42.9k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
454
42.9k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getInnerTypeLoc() const
Line
Count
Source
452
2.15k
  TypeLoc getInnerTypeLoc() const {
453
2.15k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
454
2.15k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getInnerTypeLoc() const
Line
Count
Source
452
1.88M
  TypeLoc getInnerTypeLoc() const {
453
1.88M
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
454
1.88M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getInnerTypeLoc() const
Line
Count
Source
452
49.6k
  TypeLoc getInnerTypeLoc() const {
453
49.6k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
454
49.6k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getInnerTypeLoc() const
Line
Count
Source
452
1
  TypeLoc getInnerTypeLoc() const {
453
1
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
454
1
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
452
4
  TypeLoc getInnerTypeLoc() const {
453
4
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
454
4
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
452
106
  TypeLoc getInnerTypeLoc() const {
453
106
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
454
106
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
452
1.26k
  TypeLoc getInnerTypeLoc() const {
453
1.26k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
454
1.26k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getInnerTypeLoc() const
Line
Count
Source
452
6.51M
  TypeLoc getInnerTypeLoc() const {
453
6.51M
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
454
6.51M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
452
391k
  TypeLoc getInnerTypeLoc() const {
453
391k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
454
391k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
452
4.79k
  TypeLoc getInnerTypeLoc() const {
453
4.79k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
454
4.79k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
452
2
  TypeLoc getInnerTypeLoc() const {
453
2
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
454
2
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
452
1.48k
  TypeLoc getInnerTypeLoc() const {
453
1.48k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
454
1.48k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getInnerTypeLoc() const
Line
Count
Source
452
2.06k
  TypeLoc getInnerTypeLoc() const {
453
2.06k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
454
2.06k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
452
48.8k
  TypeLoc getInnerTypeLoc() const {
453
48.8k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
454
48.8k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
452
1.26M
  TypeLoc getInnerTypeLoc() const {
453
1.26M
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
454
1.26M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
452
1.92M
  TypeLoc getInnerTypeLoc() const {
453
1.92M
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
454
1.92M
  }
455
456
private:
457
  unsigned getInnerTypeSize() const {
458
    return getInnerTypeSize(asDerived()->getInnerType());
459
  }
460
461
  unsigned getInnerTypeSize(HasNoInnerType _) const {
462
    return 0;
463
  }
464
465
  unsigned getInnerTypeSize(QualType _) const {
466
    return getInnerTypeLoc().getFullDataSize();
467
  }
468
469
499M
  unsigned getNextTypeAlign() const {
470
499M
    return getNextTypeAlign(asDerived()->getInnerType());
471
499M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNextTypeAlign() const
Line
Count
Source
469
7.47M
  unsigned getNextTypeAlign() const {
470
7.47M
    return getNextTypeAlign(asDerived()->getInnerType());
471
7.47M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getNextTypeAlign() const
Line
Count
Source
469
160
  unsigned getNextTypeAlign() const {
470
160
    return getNextTypeAlign(asDerived()->getInnerType());
471
160
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNextTypeAlign() const
Line
Count
Source
469
1.08M
  unsigned getNextTypeAlign() const {
470
1.08M
    return getNextTypeAlign(asDerived()->getInnerType());
471
1.08M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getNextTypeAlign() const
Line
Count
Source
469
500k
  unsigned getNextTypeAlign() const {
470
500k
    return getNextTypeAlign(asDerived()->getInnerType());
471
500k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNextTypeAlign() const
Line
Count
Source
469
1.11M
  unsigned getNextTypeAlign() const {
470
1.11M
    return getNextTypeAlign(asDerived()->getInnerType());
471
1.11M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNextTypeAlign() const
Line
Count
Source
469
19.4k
  unsigned getNextTypeAlign() const {
470
19.4k
    return getNextTypeAlign(asDerived()->getInnerType());
471
19.4k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNextTypeAlign() const
Line
Count
Source
469
89.2M
  unsigned getNextTypeAlign() const {
470
89.2M
    return getNextTypeAlign(asDerived()->getInnerType());
471
89.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNextTypeAlign() const
Line
Count
Source
469
1.31M
  unsigned getNextTypeAlign() const {
470
1.31M
    return getNextTypeAlign(asDerived()->getInnerType());
471
1.31M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNextTypeAlign() const
Line
Count
Source
469
227
  unsigned getNextTypeAlign() const {
470
227
    return getNextTypeAlign(asDerived()->getInnerType());
471
227
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getNextTypeAlign() const
Line
Count
Source
469
328k
  unsigned getNextTypeAlign() const {
470
328k
    return getNextTypeAlign(asDerived()->getInnerType());
471
328k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getNextTypeAlign() const
Line
Count
Source
469
474
  unsigned getNextTypeAlign() const {
470
474
    return getNextTypeAlign(asDerived()->getInnerType());
471
474
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getNextTypeAlign() const
Line
Count
Source
469
6.76k
  unsigned getNextTypeAlign() const {
470
6.76k
    return getNextTypeAlign(asDerived()->getInnerType());
471
6.76k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNextTypeAlign() const
Line
Count
Source
469
348M
  unsigned getNextTypeAlign() const {
470
348M
    return getNextTypeAlign(asDerived()->getInnerType());
471
348M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNextTypeAlign() const
Line
Count
Source
469
1.99M
  unsigned getNextTypeAlign() const {
470
1.99M
    return getNextTypeAlign(asDerived()->getInnerType());
471
1.99M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNextTypeAlign() const
Line
Count
Source
469
40.8k
  unsigned getNextTypeAlign() const {
470
40.8k
    return getNextTypeAlign(asDerived()->getInnerType());
471
40.8k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNextTypeAlign() const
Line
Count
Source
469
545
  unsigned getNextTypeAlign() const {
470
545
    return getNextTypeAlign(asDerived()->getInnerType());
471
545
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNextTypeAlign() const
Line
Count
Source
469
161k
  unsigned getNextTypeAlign() const {
470
161k
    return getNextTypeAlign(asDerived()->getInnerType());
471
161k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNextTypeAlign() const
Line
Count
Source
469
229k
  unsigned getNextTypeAlign() const {
470
229k
    return getNextTypeAlign(asDerived()->getInnerType());
471
229k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNextTypeAlign() const
Line
Count
Source
469
3.14M
  unsigned getNextTypeAlign() const {
470
3.14M
    return getNextTypeAlign(asDerived()->getInnerType());
471
3.14M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNextTypeAlign() const
Line
Count
Source
469
25.3M
  unsigned getNextTypeAlign() const {
470
25.3M
    return getNextTypeAlign(asDerived()->getInnerType());
471
25.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNextTypeAlign() const
Line
Count
Source
469
19.2M
  unsigned getNextTypeAlign() const {
470
19.2M
    return getNextTypeAlign(asDerived()->getInnerType());
471
19.2M
  }
472
473
  unsigned getNextTypeAlign(HasNoInnerType _) const {
474
    return 1;
475
  }
476
477
499M
  unsigned getNextTypeAlign(QualType T) const {
478
499M
    return TypeLoc::getLocalAlignmentForType(T);
479
499M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
477
7.47M
  unsigned getNextTypeAlign(QualType T) const {
478
7.47M
    return TypeLoc::getLocalAlignmentForType(T);
479
7.47M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
477
160
  unsigned getNextTypeAlign(QualType T) const {
478
160
    return TypeLoc::getLocalAlignmentForType(T);
479
160
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
477
1.08M
  unsigned getNextTypeAlign(QualType T) const {
478
1.08M
    return TypeLoc::getLocalAlignmentForType(T);
479
1.08M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
477
500k
  unsigned getNextTypeAlign(QualType T) const {
478
500k
    return TypeLoc::getLocalAlignmentForType(T);
479
500k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
477
1.11M
  unsigned getNextTypeAlign(QualType T) const {
478
1.11M
    return TypeLoc::getLocalAlignmentForType(T);
479
1.11M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
477
19.4k
  unsigned getNextTypeAlign(QualType T) const {
478
19.4k
    return TypeLoc::getLocalAlignmentForType(T);
479
19.4k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
477
89.2M
  unsigned getNextTypeAlign(QualType T) const {
478
89.2M
    return TypeLoc::getLocalAlignmentForType(T);
479
89.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
477
1.31M
  unsigned getNextTypeAlign(QualType T) const {
478
1.31M
    return TypeLoc::getLocalAlignmentForType(T);
479
1.31M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
477
227
  unsigned getNextTypeAlign(QualType T) const {
478
227
    return TypeLoc::getLocalAlignmentForType(T);
479
227
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
477
328k
  unsigned getNextTypeAlign(QualType T) const {
478
328k
    return TypeLoc::getLocalAlignmentForType(T);
479
328k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
477
474
  unsigned getNextTypeAlign(QualType T) const {
478
474
    return TypeLoc::getLocalAlignmentForType(T);
479
474
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
477
6.76k
  unsigned getNextTypeAlign(QualType T) const {
478
6.76k
    return TypeLoc::getLocalAlignmentForType(T);
479
6.76k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
477
348M
  unsigned getNextTypeAlign(QualType T) const {
478
348M
    return TypeLoc::getLocalAlignmentForType(T);
479
348M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
477
1.99M
  unsigned getNextTypeAlign(QualType T) const {
478
1.99M
    return TypeLoc::getLocalAlignmentForType(T);
479
1.99M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
477
40.8k
  unsigned getNextTypeAlign(QualType T) const {
478
40.8k
    return TypeLoc::getLocalAlignmentForType(T);
479
40.8k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
477
545
  unsigned getNextTypeAlign(QualType T) const {
478
545
    return TypeLoc::getLocalAlignmentForType(T);
479
545
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
477
161k
  unsigned getNextTypeAlign(QualType T) const {
478
161k
    return TypeLoc::getLocalAlignmentForType(T);
479
161k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
477
229k
  unsigned getNextTypeAlign(QualType T) const {
478
229k
    return TypeLoc::getLocalAlignmentForType(T);
479
229k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
477
3.14M
  unsigned getNextTypeAlign(QualType T) const {
478
3.14M
    return TypeLoc::getLocalAlignmentForType(T);
479
3.14M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
477
25.3M
  unsigned getNextTypeAlign(QualType T) const {
478
25.3M
    return TypeLoc::getLocalAlignmentForType(T);
479
25.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
477
19.2M
  unsigned getNextTypeAlign(QualType T) const {
478
19.2M
    return TypeLoc::getLocalAlignmentForType(T);
479
19.2M
  }
480
481
459M
  TypeLoc getNextTypeLoc(HasNoInnerType _) const { return {}; }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getNextTypeLoc(clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::HasNoInnerType) const
Line
Count
Source
481
287M
  TypeLoc getNextTypeLoc(HasNoInnerType _) const { return {}; }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getNextTypeLoc(clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::HasNoInnerType) const
Line
Count
Source
481
37.0M
  TypeLoc getNextTypeLoc(HasNoInnerType _) const { return {}; }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::getNextTypeLoc(clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::HasNoInnerType) const
Line
Count
Source
481
1.50M
  TypeLoc getNextTypeLoc(HasNoInnerType _) const { return {}; }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getNextTypeLoc(clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::HasNoInnerType) const
Line
Count
Source
481
1.03M
  TypeLoc getNextTypeLoc(HasNoInnerType _) const { return {}; }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getNextTypeLoc(clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::HasNoInnerType) const
Line
Count
Source
481
10.5M
  TypeLoc getNextTypeLoc(HasNoInnerType _) const { return {}; }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getNextTypeLoc(clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::HasNoInnerType) const
Line
Count
Source
481
385k
  TypeLoc getNextTypeLoc(HasNoInnerType _) const { return {}; }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getNextTypeLoc(clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::HasNoInnerType) const
Line
Count
Source
481
2.92k
  TypeLoc getNextTypeLoc(HasNoInnerType _) const { return {}; }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getNextTypeLoc(clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::HasNoInnerType) const
Line
Count
Source
481
2.97M
  TypeLoc getNextTypeLoc(HasNoInnerType _) const { return {}; }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getNextTypeLoc(clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::HasNoInnerType) const
Line
Count
Source
481
287k
  TypeLoc getNextTypeLoc(HasNoInnerType _) const { return {}; }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getNextTypeLoc(clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::HasNoInnerType) const
Line
Count
Source
481
115M
  TypeLoc getNextTypeLoc(HasNoInnerType _) const { return {}; }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getNextTypeLoc(clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::HasNoInnerType) const
Line
Count
Source
481
8.31k
  TypeLoc getNextTypeLoc(HasNoInnerType _) const { return {}; }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getNextTypeLoc(clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::HasNoInnerType) const
Line
Count
Source
481
246
  TypeLoc getNextTypeLoc(HasNoInnerType _) const { return {}; }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getNextTypeLoc(clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::HasNoInnerType) const
Line
Count
Source
481
2.70M
  TypeLoc getNextTypeLoc(HasNoInnerType _) const { return {}; }
482
483
485M
  TypeLoc getNextTypeLoc(QualType T) const {
484
485M
    return TypeLoc(T, getNonLocalData());
485
485M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
483
17.2k
  TypeLoc getNextTypeLoc(QualType T) const {
484
17.2k
    return TypeLoc(T, getNonLocalData());
485
17.2k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
483
1.26M
  TypeLoc getNextTypeLoc(QualType T) const {
484
1.26M
    return TypeLoc(T, getNonLocalData());
485
1.26M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
483
36.0k
  TypeLoc getNextTypeLoc(QualType T) const {
484
36.0k
    return TypeLoc(T, getNonLocalData());
485
36.0k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
483
5.70M
  TypeLoc getNextTypeLoc(QualType T) const {
484
5.70M
    return TypeLoc(T, getNonLocalData());
485
5.70M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
483
123
  TypeLoc getNextTypeLoc(QualType T) const {
484
123
    return TypeLoc(T, getNonLocalData());
485
123
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
483
160k
  TypeLoc getNextTypeLoc(QualType T) const {
484
160k
    return TypeLoc(T, getNonLocalData());
485
160k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
483
226
  TypeLoc getNextTypeLoc(QualType T) const {
484
226
    return TypeLoc(T, getNonLocalData());
485
226
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
483
5.49k
  TypeLoc getNextTypeLoc(QualType T) const {
484
5.49k
    return TypeLoc(T, getNonLocalData());
485
5.49k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
483
368
  TypeLoc getNextTypeLoc(QualType T) const {
484
368
    return TypeLoc(T, getNonLocalData());
485
368
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
483
341M
  TypeLoc getNextTypeLoc(QualType T) const {
484
341M
    return TypeLoc(T, getNonLocalData());
485
341M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
483
87.4M
  TypeLoc getNextTypeLoc(QualType T) const {
484
87.4M
    return TypeLoc(T, getNonLocalData());
485
87.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
483
342k
  TypeLoc getNextTypeLoc(QualType T) const {
484
342k
    return TypeLoc(T, getNonLocalData());
485
342k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
483
227k
  TypeLoc getNextTypeLoc(QualType T) const {
484
227k
    return TypeLoc(T, getNonLocalData());
485
227k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
483
3.09M
  TypeLoc getNextTypeLoc(QualType T) const {
484
3.09M
    return TypeLoc(T, getNonLocalData());
485
3.09M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
483
930k
  TypeLoc getNextTypeLoc(QualType T) const {
484
930k
    return TypeLoc(T, getNonLocalData());
485
930k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
483
1.60M
  TypeLoc getNextTypeLoc(QualType T) const {
484
1.60M
    return TypeLoc(T, getNonLocalData());
485
1.60M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
483
1.07M
  TypeLoc getNextTypeLoc(QualType T) const {
484
1.07M
    return TypeLoc(T, getNonLocalData());
485
1.07M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
483
543
  TypeLoc getNextTypeLoc(QualType T) const {
484
543
    return TypeLoc(T, getNonLocalData());
485
543
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
483
24.1M
  TypeLoc getNextTypeLoc(QualType T) const {
484
24.1M
    return TypeLoc(T, getNonLocalData());
485
24.1M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
483
17.2M
  TypeLoc getNextTypeLoc(QualType T) const {
484
17.2M
    return TypeLoc(T, getNonLocalData());
485
17.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
483
328k
  TypeLoc getNextTypeLoc(QualType T) const {
484
328k
    return TypeLoc(T, getNonLocalData());
485
328k
  }
486
};
487
488
/// A metaprogramming class designed for concrete subtypes of abstract
489
/// types where all subtypes share equivalently-structured source
490
/// information.  See the note on ConcreteTypeLoc.
491
template <class Base, class Derived, class TypeClass>
492
class InheritingConcreteTypeLoc : public Base {
493
  friend class TypeLoc;
494
495
1.61G
  static bool classofType(const Type *Ty) {
496
1.61G
    return TypeClass::classof(Ty);
497
1.61G
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TypedefTypeLoc, clang::TypedefType>::classofType(clang::Type const*)
Line
Count
Source
495
928M
  static bool classofType(const Type *Ty) {
496
928M
    return TypeClass::classof(Ty);
497
928M
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::ConstantArrayTypeLoc, clang::ConstantArrayType>::classofType(clang::Type const*)
Line
Count
Source
495
2.34M
  static bool classofType(const Type *Ty) {
496
2.34M
    return TypeClass::classof(Ty);
497
2.34M
  }
clang::InheritingConcreteTypeLoc<clang::AdjustedTypeLoc, clang::DecayedTypeLoc, clang::DecayedType>::classofType(clang::Type const*)
Line
Count
Source
495
43.3k
  static bool classofType(const Type *Ty) {
496
43.3k
    return TypeClass::classof(Ty);
497
43.3k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::DependentSizedArrayTypeLoc, clang::DependentSizedArrayType>::classofType(clang::Type const*)
Line
Count
Source
495
239k
  static bool classofType(const Type *Ty) {
496
239k
    return TypeClass::classof(Ty);
497
239k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::IncompleteArrayTypeLoc, clang::IncompleteArrayType>::classofType(clang::Type const*)
Line
Count
Source
495
510k
  static bool classofType(const Type *Ty) {
496
510k
    return TypeClass::classof(Ty);
497
510k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::VariableArrayTypeLoc, clang::VariableArrayType>::classofType(clang::Type const*)
Line
Count
Source
495
127k
  static bool classofType(const Type *Ty) {
496
127k
    return TypeClass::classof(Ty);
497
127k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::BitIntTypeLoc, clang::BitIntType>::classofType(clang::Type const*)
Line
Count
Source
495
11.6k
  static bool classofType(const Type *Ty) {
496
11.6k
    return TypeClass::classof(Ty);
497
11.6k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::ComplexTypeLoc, clang::ComplexType>::classofType(clang::Type const*)
Line
Count
Source
495
49.7k
  static bool classofType(const Type *Ty) {
496
49.7k
    return TypeClass::classof(Ty);
497
49.7k
  }
clang::InheritingConcreteTypeLoc<clang::DeducedTypeLoc, clang::DeducedTemplateSpecializationTypeLoc, clang::DeducedTemplateSpecializationType>::classofType(clang::Type const*)
Line
Count
Source
495
726k
  static bool classofType(const Type *Ty) {
496
726k
    return TypeClass::classof(Ty);
497
726k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DependentBitIntTypeLoc, clang::DependentBitIntType>::classofType(clang::Type const*)
Line
Count
Source
495
1.29k
  static bool classofType(const Type *Ty) {
496
1.29k
    return TypeClass::classof(Ty);
497
1.29k
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionNoProtoTypeLoc, clang::FunctionNoProtoType>::classofType(clang::Type const*)
Line
Count
Source
495
64.2k
  static bool classofType(const Type *Ty) {
496
64.2k
    return TypeClass::classof(Ty);
497
64.2k
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionProtoTypeLoc, clang::FunctionProtoType>::classofType(clang::Type const*)
Line
Count
Source
495
227M
  static bool classofType(const Type *Ty) {
496
227M
    return TypeClass::classof(Ty);
497
227M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::InjectedClassNameTypeLoc, clang::InjectedClassNameType>::classofType(clang::Type const*)
Line
Count
Source
495
14.6M
  static bool classofType(const Type *Ty) {
496
14.6M
    return TypeClass::classof(Ty);
497
14.6M
  }
clang::InheritingConcreteTypeLoc<clang::MatrixTypeLoc, clang::ConstantMatrixTypeLoc, clang::ConstantMatrixType>::classofType(clang::Type const*)
Line
Count
Source
495
4.82k
  static bool classofType(const Type *Ty) {
496
4.82k
    return TypeClass::classof(Ty);
497
4.82k
  }
clang::InheritingConcreteTypeLoc<clang::MatrixTypeLoc, clang::DependentSizedMatrixTypeLoc, clang::DependentSizedMatrixType>::classofType(clang::Type const*)
Line
Count
Source
495
3.04k
  static bool classofType(const Type *Ty) {
496
3.04k
    return TypeClass::classof(Ty);
497
3.04k
  }
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::LValueReferenceTypeLoc, clang::LValueReferenceType>::classofType(clang::Type const*)
Line
Count
Source
495
37.6M
  static bool classofType(const Type *Ty) {
496
37.6M
    return TypeClass::classof(Ty);
497
37.6M
  }
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::RValueReferenceTypeLoc, clang::RValueReferenceType>::classofType(clang::Type const*)
Line
Count
Source
495
11.3M
  static bool classofType(const Type *Ty) {
496
11.3M
    return TypeClass::classof(Ty);
497
11.3M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmPackTypeLoc, clang::SubstTemplateTypeParmPackType>::classofType(clang::Type const*)
Line
Count
Source
495
578k
  static bool classofType(const Type *Ty) {
496
578k
    return TypeClass::classof(Ty);
497
578k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmTypeLoc, clang::SubstTemplateTypeParmType>::classofType(clang::Type const*)
Line
Count
Source
495
87.0M
  static bool classofType(const Type *Ty) {
496
87.0M
    return TypeClass::classof(Ty);
497
87.0M
  }
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::EnumTypeLoc, clang::EnumType>::classofType(clang::Type const*)
Line
Count
Source
495
5.11M
  static bool classofType(const Type *Ty) {
496
5.11M
    return TypeClass::classof(Ty);
497
5.11M
  }
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::RecordTypeLoc, clang::RecordType>::classofType(clang::Type const*)
Line
Count
Source
495
82.5M
  static bool classofType(const Type *Ty) {
496
82.5M
    return TypeClass::classof(Ty);
497
82.5M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TemplateTypeParmTypeLoc, clang::TemplateTypeParmType>::classofType(clang::Type const*)
Line
Count
Source
495
202M
  static bool classofType(const Type *Ty) {
496
202M
    return TypeClass::classof(Ty);
497
202M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::UnresolvedUsingTypeLoc, clang::UnresolvedUsingType>::classofType(clang::Type const*)
Line
Count
Source
495
4.16k
  static bool classofType(const Type *Ty) {
496
4.16k
    return TypeClass::classof(Ty);
497
4.16k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::UsingTypeLoc, clang::UsingType>::classofType(clang::Type const*)
Line
Count
Source
495
6.40M
  static bool classofType(const Type *Ty) {
496
6.40M
    return TypeClass::classof(Ty);
497
6.40M
  }
clang::InheritingConcreteTypeLoc<clang::VectorTypeLoc, clang::ExtVectorTypeLoc, clang::ExtVectorType>::classofType(clang::Type const*)
Line
Count
Source
495
41.0k
  static bool classofType(const Type *Ty) {
496
41.0k
    return TypeClass::classof(Ty);
497
41.0k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DeducedTypeLoc, clang::DeducedType>::classofType(clang::Type const*)
Line
Count
Source
495
2.06k
  static bool classofType(const Type *Ty) {
496
2.06k
    return TypeClass::classof(Ty);
497
2.06k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TagTypeLoc, clang::TagType>::classofType(clang::Type const*)
Line
Count
Source
495
2.24M
  static bool classofType(const Type *Ty) {
496
2.24M
    return TypeClass::classof(Ty);
497
2.24M
  }
498
499
1.61G
  static bool isKind(const TypeLoc &TL) {
500
1.61G
    return !TL.getType().hasLocalQualifiers() &&
501
1.61G
           
Derived::classofType(TL.getTypePtr())1.61G
;
502
1.61G
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TypedefTypeLoc, clang::TypedefType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
928M
  static bool isKind(const TypeLoc &TL) {
500
928M
    return !TL.getType().hasLocalQualifiers() &&
501
928M
           Derived::classofType(TL.getTypePtr());
502
928M
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::ConstantArrayTypeLoc, clang::ConstantArrayType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
2.34M
  static bool isKind(const TypeLoc &TL) {
500
2.34M
    return !TL.getType().hasLocalQualifiers() &&
501
2.34M
           Derived::classofType(TL.getTypePtr());
502
2.34M
  }
clang::InheritingConcreteTypeLoc<clang::AdjustedTypeLoc, clang::DecayedTypeLoc, clang::DecayedType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
43.3k
  static bool isKind(const TypeLoc &TL) {
500
43.3k
    return !TL.getType().hasLocalQualifiers() &&
501
43.3k
           Derived::classofType(TL.getTypePtr());
502
43.3k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::DependentSizedArrayTypeLoc, clang::DependentSizedArrayType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
239k
  static bool isKind(const TypeLoc &TL) {
500
239k
    return !TL.getType().hasLocalQualifiers() &&
501
239k
           Derived::classofType(TL.getTypePtr());
502
239k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::IncompleteArrayTypeLoc, clang::IncompleteArrayType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
510k
  static bool isKind(const TypeLoc &TL) {
500
510k
    return !TL.getType().hasLocalQualifiers() &&
501
510k
           
Derived::classofType(TL.getTypePtr())510k
;
502
510k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::VariableArrayTypeLoc, clang::VariableArrayType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
127k
  static bool isKind(const TypeLoc &TL) {
500
127k
    return !TL.getType().hasLocalQualifiers() &&
501
127k
           
Derived::classofType(TL.getTypePtr())127k
;
502
127k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::BitIntTypeLoc, clang::BitIntType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
11.6k
  static bool isKind(const TypeLoc &TL) {
500
11.6k
    return !TL.getType().hasLocalQualifiers() &&
501
11.6k
           Derived::classofType(TL.getTypePtr());
502
11.6k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::ComplexTypeLoc, clang::ComplexType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
49.7k
  static bool isKind(const TypeLoc &TL) {
500
49.7k
    return !TL.getType().hasLocalQualifiers() &&
501
49.7k
           Derived::classofType(TL.getTypePtr());
502
49.7k
  }
clang::InheritingConcreteTypeLoc<clang::DeducedTypeLoc, clang::DeducedTemplateSpecializationTypeLoc, clang::DeducedTemplateSpecializationType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
731k
  static bool isKind(const TypeLoc &TL) {
500
731k
    return !TL.getType().hasLocalQualifiers() &&
501
731k
           
Derived::classofType(TL.getTypePtr())726k
;
502
731k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DependentBitIntTypeLoc, clang::DependentBitIntType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
1.29k
  static bool isKind(const TypeLoc &TL) {
500
1.29k
    return !TL.getType().hasLocalQualifiers() &&
501
1.29k
           Derived::classofType(TL.getTypePtr());
502
1.29k
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionNoProtoTypeLoc, clang::FunctionNoProtoType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
64.2k
  static bool isKind(const TypeLoc &TL) {
500
64.2k
    return !TL.getType().hasLocalQualifiers() &&
501
64.2k
           Derived::classofType(TL.getTypePtr());
502
64.2k
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionProtoTypeLoc, clang::FunctionProtoType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
227M
  static bool isKind(const TypeLoc &TL) {
500
227M
    return !TL.getType().hasLocalQualifiers() &&
501
227M
           Derived::classofType(TL.getTypePtr());
502
227M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::InjectedClassNameTypeLoc, clang::InjectedClassNameType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
14.6M
  static bool isKind(const TypeLoc &TL) {
500
14.6M
    return !TL.getType().hasLocalQualifiers() &&
501
14.6M
           Derived::classofType(TL.getTypePtr());
502
14.6M
  }
clang::InheritingConcreteTypeLoc<clang::MatrixTypeLoc, clang::ConstantMatrixTypeLoc, clang::ConstantMatrixType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
4.82k
  static bool isKind(const TypeLoc &TL) {
500
4.82k
    return !TL.getType().hasLocalQualifiers() &&
501
4.82k
           Derived::classofType(TL.getTypePtr());
502
4.82k
  }
clang::InheritingConcreteTypeLoc<clang::MatrixTypeLoc, clang::DependentSizedMatrixTypeLoc, clang::DependentSizedMatrixType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
3.04k
  static bool isKind(const TypeLoc &TL) {
500
3.04k
    return !TL.getType().hasLocalQualifiers() &&
501
3.04k
           Derived::classofType(TL.getTypePtr());
502
3.04k
  }
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::LValueReferenceTypeLoc, clang::LValueReferenceType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
37.6M
  static bool isKind(const TypeLoc &TL) {
500
37.6M
    return !TL.getType().hasLocalQualifiers() &&
501
37.6M
           Derived::classofType(TL.getTypePtr());
502
37.6M
  }
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::RValueReferenceTypeLoc, clang::RValueReferenceType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
11.3M
  static bool isKind(const TypeLoc &TL) {
500
11.3M
    return !TL.getType().hasLocalQualifiers() &&
501
11.3M
           Derived::classofType(TL.getTypePtr());
502
11.3M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmPackTypeLoc, clang::SubstTemplateTypeParmPackType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
578k
  static bool isKind(const TypeLoc &TL) {
500
578k
    return !TL.getType().hasLocalQualifiers() &&
501
578k
           Derived::classofType(TL.getTypePtr());
502
578k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmTypeLoc, clang::SubstTemplateTypeParmType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
87.0M
  static bool isKind(const TypeLoc &TL) {
500
87.0M
    return !TL.getType().hasLocalQualifiers() &&
501
87.0M
           Derived::classofType(TL.getTypePtr());
502
87.0M
  }
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::EnumTypeLoc, clang::EnumType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
5.11M
  static bool isKind(const TypeLoc &TL) {
500
5.11M
    return !TL.getType().hasLocalQualifiers() &&
501
5.11M
           Derived::classofType(TL.getTypePtr());
502
5.11M
  }
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::RecordTypeLoc, clang::RecordType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
82.5M
  static bool isKind(const TypeLoc &TL) {
500
82.5M
    return !TL.getType().hasLocalQualifiers() &&
501
82.5M
           
Derived::classofType(TL.getTypePtr())82.5M
;
502
82.5M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TemplateTypeParmTypeLoc, clang::TemplateTypeParmType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
202M
  static bool isKind(const TypeLoc &TL) {
500
202M
    return !TL.getType().hasLocalQualifiers() &&
501
202M
           Derived::classofType(TL.getTypePtr());
502
202M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::UnresolvedUsingTypeLoc, clang::UnresolvedUsingType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
4.16k
  static bool isKind(const TypeLoc &TL) {
500
4.16k
    return !TL.getType().hasLocalQualifiers() &&
501
4.16k
           Derived::classofType(TL.getTypePtr());
502
4.16k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::UsingTypeLoc, clang::UsingType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
6.40M
  static bool isKind(const TypeLoc &TL) {
500
6.40M
    return !TL.getType().hasLocalQualifiers() &&
501
6.40M
           Derived::classofType(TL.getTypePtr());
502
6.40M
  }
clang::InheritingConcreteTypeLoc<clang::VectorTypeLoc, clang::ExtVectorTypeLoc, clang::ExtVectorType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
41.0k
  static bool isKind(const TypeLoc &TL) {
500
41.0k
    return !TL.getType().hasLocalQualifiers() &&
501
41.0k
           Derived::classofType(TL.getTypePtr());
502
41.0k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DeducedTypeLoc, clang::DeducedType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
2.06k
  static bool isKind(const TypeLoc &TL) {
500
2.06k
    return !TL.getType().hasLocalQualifiers() &&
501
2.06k
           Derived::classofType(TL.getTypePtr());
502
2.06k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TagTypeLoc, clang::TagType>::isKind(clang::TypeLoc const&)
Line
Count
Source
499
2.24M
  static bool isKind(const TypeLoc &TL) {
500
2.24M
    return !TL.getType().hasLocalQualifiers() &&
501
2.24M
           Derived::classofType(TL.getTypePtr());
502
2.24M
  }
503
  static bool isKind(const UnqualTypeLoc &TL) {
504
    return Derived::classofType(TL.getTypePtr());
505
  }
506
507
public:
508
23.5M
  const TypeClass *getTypePtr() const {
509
23.5M
    return cast<TypeClass>(Base::getTypePtr());
510
23.5M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::UsingTypeLoc, clang::UsingType>::getTypePtr() const
Line
Count
Source
508
6.45k
  const TypeClass *getTypePtr() const {
509
6.45k
    return cast<TypeClass>(Base::getTypePtr());
510
6.45k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TypedefTypeLoc, clang::TypedefType>::getTypePtr() const
Line
Count
Source
508
1.94M
  const TypeClass *getTypePtr() const {
509
1.94M
    return cast<TypeClass>(Base::getTypePtr());
510
1.94M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::InjectedClassNameTypeLoc, clang::InjectedClassNameType>::getTypePtr() const
Line
Count
Source
508
823k
  const TypeClass *getTypePtr() const {
509
823k
    return cast<TypeClass>(Base::getTypePtr());
510
823k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::UnresolvedUsingTypeLoc, clang::UnresolvedUsingType>::getTypePtr() const
Line
Count
Source
508
122
  const TypeClass *getTypePtr() const {
509
122
    return cast<TypeClass>(Base::getTypePtr());
510
122
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TagTypeLoc, clang::TagType>::getTypePtr() const
Line
Count
Source
508
207k
  const TypeClass *getTypePtr() const {
509
207k
    return cast<TypeClass>(Base::getTypePtr());
510
207k
  }
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::RecordTypeLoc, clang::RecordType>::getTypePtr() const
Line
Count
Source
508
197k
  const TypeClass *getTypePtr() const {
509
197k
    return cast<TypeClass>(Base::getTypePtr());
510
197k
  }
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::EnumTypeLoc, clang::EnumType>::getTypePtr() const
Line
Count
Source
508
7.72k
  const TypeClass *getTypePtr() const {
509
7.72k
    return cast<TypeClass>(Base::getTypePtr());
510
7.72k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TemplateTypeParmTypeLoc, clang::TemplateTypeParmType>::getTypePtr() const
Line
Count
Source
508
9.48M
  const TypeClass *getTypePtr() const {
509
9.48M
    return cast<TypeClass>(Base::getTypePtr());
510
9.48M
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::DependentSizedArrayTypeLoc, clang::DependentSizedArrayType>::getTypePtr() const
Line
Count
Source
508
13.4k
  const TypeClass *getTypePtr() const {
509
13.4k
    return cast<TypeClass>(Base::getTypePtr());
510
13.4k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DeducedTypeLoc, clang::DeducedType>::getTypePtr() const
Line
Count
Source
508
754k
  const TypeClass *getTypePtr() const {
509
754k
    return cast<TypeClass>(Base::getTypePtr());
510
754k
  }
Unexecuted instantiation: clang::InheritingConcreteTypeLoc<clang::AdjustedTypeLoc, clang::DecayedTypeLoc, clang::DecayedType>::getTypePtr() const
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::ConstantArrayTypeLoc, clang::ConstantArrayType>::getTypePtr() const
Line
Count
Source
508
28.4k
  const TypeClass *getTypePtr() const {
509
28.4k
    return cast<TypeClass>(Base::getTypePtr());
510
28.4k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::IncompleteArrayTypeLoc, clang::IncompleteArrayType>::getTypePtr() const
Line
Count
Source
508
6.77k
  const TypeClass *getTypePtr() const {
509
6.77k
    return cast<TypeClass>(Base::getTypePtr());
510
6.77k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::VariableArrayTypeLoc, clang::VariableArrayType>::getTypePtr() const
Line
Count
Source
508
253
  const TypeClass *getTypePtr() const {
509
253
    return cast<TypeClass>(Base::getTypePtr());
510
253
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::BitIntTypeLoc, clang::BitIntType>::getTypePtr() const
Line
Count
Source
508
4
  const TypeClass *getTypePtr() const {
509
4
    return cast<TypeClass>(Base::getTypePtr());
510
4
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::ComplexTypeLoc, clang::ComplexType>::getTypePtr() const
Line
Count
Source
508
1.71k
  const TypeClass *getTypePtr() const {
509
1.71k
    return cast<TypeClass>(Base::getTypePtr());
510
1.71k
  }
clang::InheritingConcreteTypeLoc<clang::DeducedTypeLoc, clang::DeducedTemplateSpecializationTypeLoc, clang::DeducedTemplateSpecializationType>::getTypePtr() const
Line
Count
Source
508
2.71k
  const TypeClass *getTypePtr() const {
509
2.71k
    return cast<TypeClass>(Base::getTypePtr());
510
2.71k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DependentBitIntTypeLoc, clang::DependentBitIntType>::getTypePtr() const
Line
Count
Source
508
192
  const TypeClass *getTypePtr() const {
509
192
    return cast<TypeClass>(Base::getTypePtr());
510
192
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionNoProtoTypeLoc, clang::FunctionNoProtoType>::getTypePtr() const
Line
Count
Source
508
1.68k
  const TypeClass *getTypePtr() const {
509
1.68k
    return cast<TypeClass>(Base::getTypePtr());
510
1.68k
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionProtoTypeLoc, clang::FunctionProtoType>::getTypePtr() const
Line
Count
Source
508
9.76M
  const TypeClass *getTypePtr() const {
509
9.76M
    return cast<TypeClass>(Base::getTypePtr());
510
9.76M
  }
clang::InheritingConcreteTypeLoc<clang::MatrixTypeLoc, clang::ConstantMatrixTypeLoc, clang::ConstantMatrixType>::getTypePtr() const
Line
Count
Source
508
146
  const TypeClass *getTypePtr() const {
509
146
    return cast<TypeClass>(Base::getTypePtr());
510
146
  }
clang::InheritingConcreteTypeLoc<clang::MatrixTypeLoc, clang::DependentSizedMatrixTypeLoc, clang::DependentSizedMatrixType>::getTypePtr() const
Line
Count
Source
508
245
  const TypeClass *getTypePtr() const {
509
245
    return cast<TypeClass>(Base::getTypePtr());
510
245
  }
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::LValueReferenceTypeLoc, clang::LValueReferenceType>::getTypePtr() const
Line
Count
Source
508
80.8k
  const TypeClass *getTypePtr() const {
509
80.8k
    return cast<TypeClass>(Base::getTypePtr());
510
80.8k
  }
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::RValueReferenceTypeLoc, clang::RValueReferenceType>::getTypePtr() const
Line
Count
Source
508
53.8k
  const TypeClass *getTypePtr() const {
509
53.8k
    return cast<TypeClass>(Base::getTypePtr());
510
53.8k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmPackTypeLoc, clang::SubstTemplateTypeParmPackType>::getTypePtr() const
Line
Count
Source
508
1.09k
  const TypeClass *getTypePtr() const {
509
1.09k
    return cast<TypeClass>(Base::getTypePtr());
510
1.09k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmTypeLoc, clang::SubstTemplateTypeParmType>::getTypePtr() const
Line
Count
Source
508
116k
  const TypeClass *getTypePtr() const {
509
116k
    return cast<TypeClass>(Base::getTypePtr());
510
116k
  }
clang::InheritingConcreteTypeLoc<clang::VectorTypeLoc, clang::ExtVectorTypeLoc, clang::ExtVectorType>::getTypePtr() const
Line
Count
Source
508
99
  const TypeClass *getTypePtr() const {
509
99
    return cast<TypeClass>(Base::getTypePtr());
510
99
  }
511
};
512
513
struct TypeSpecLocInfo {
514
  SourceLocation NameLoc;
515
};
516
517
/// A reasonable base class for TypeLocs that correspond to
518
/// types that are written as a type-specifier.
519
class TypeSpecTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
520
                                               TypeSpecTypeLoc,
521
                                               Type,
522
                                               TypeSpecLocInfo> {
523
public:
524
  enum {
525
    LocalDataSize = sizeof(TypeSpecLocInfo),
526
    LocalDataAlignment = alignof(TypeSpecLocInfo)
527
  };
528
529
316M
  SourceLocation getNameLoc() const {
530
316M
    return this->getLocalData()->NameLoc;
531
316M
  }
532
533
159M
  void setNameLoc(SourceLocation Loc) {
534
159M
    this->getLocalData()->NameLoc = Loc;
535
159M
  }
536
537
149M
  SourceRange getLocalSourceRange() const {
538
149M
    return SourceRange(getNameLoc(), getNameLoc());
539
149M
  }
540
541
14.0M
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
542
14.0M
    setNameLoc(Loc);
543
14.0M
  }
544
545
private:
546
  friend class TypeLoc;
547
548
  static bool isKind(const TypeLoc &TL);
549
};
550
551
struct BuiltinLocInfo {
552
  SourceRange BuiltinRange;
553
};
554
555
/// Wrapper for source info for builtin types.
556
class BuiltinTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
557
                                              BuiltinTypeLoc,
558
                                              BuiltinType,
559
                                              BuiltinLocInfo> {
560
public:
561
946k
  SourceLocation getBuiltinLoc() const {
562
946k
    return getLocalData()->BuiltinRange.getBegin();
563
946k
  }
564
565
17.6M
  void setBuiltinLoc(SourceLocation Loc) {
566
17.6M
    getLocalData()->BuiltinRange = Loc;
567
17.6M
  }
568
569
1.76M
  void expandBuiltinRange(SourceRange Range) {
570
1.76M
    SourceRange &BuiltinRange = getLocalData()->BuiltinRange;
571
1.76M
    if (!BuiltinRange.getBegin().isValid()) {
572
758k
      BuiltinRange = Range;
573
1.00M
    } else {
574
1.00M
      BuiltinRange.setBegin(std::min(Range.getBegin(), BuiltinRange.getBegin()));
575
1.00M
      BuiltinRange.setEnd(std::max(Range.getEnd(), BuiltinRange.getEnd()));
576
1.00M
    }
577
1.76M
  }
578
579
0
  SourceLocation getNameLoc() const { return getBuiltinLoc(); }
580
581
8.24M
  WrittenBuiltinSpecs& getWrittenBuiltinSpecs() {
582
8.24M
    return *(static_cast<WrittenBuiltinSpecs*>(getExtraLocalData()));
583
8.24M
  }
584
10.2M
  const WrittenBuiltinSpecs& getWrittenBuiltinSpecs() const {
585
10.2M
    return *(static_cast<WrittenBuiltinSpecs*>(getExtraLocalData()));
586
10.2M
  }
587
588
144M
  bool needsExtraLocalData() const {
589
144M
    BuiltinType::Kind bk = getTypePtr()->getKind();
590
144M
    return (bk >= BuiltinType::UShort && 
bk <= BuiltinType::UInt12882.0M
) ||
591
144M
           
(135M
bk >= BuiltinType::Short135M
&&
bk <= BuiltinType::Ibm12859.6M
) ||
592
144M
           
bk == BuiltinType::UChar76.8M
||
bk == BuiltinType::SChar75.3M
;
593
144M
  }
594
595
23.8M
  unsigned getExtraLocalDataSize() const {
596
23.8M
    return needsExtraLocalData() ? 
sizeof(WrittenBuiltinSpecs)9.05M
:
014.8M
;
597
23.8M
  }
598
599
91.3M
  unsigned getExtraLocalDataAlignment() const {
600
91.3M
    return needsExtraLocalData() ? 
alignof(WrittenBuiltinSpecs)41.4M
:
149.9M
;
601
91.3M
  }
602
603
17.7M
  SourceRange getLocalSourceRange() const {
604
17.7M
    return getLocalData()->BuiltinRange;
605
17.7M
  }
606
607
4.90M
  TypeSpecifierSign getWrittenSignSpec() const {
608
4.90M
    if (needsExtraLocalData())
609
4.90M
      return static_cast<TypeSpecifierSign>(getWrittenBuiltinSpecs().Sign);
610
0
    else
611
0
      return TypeSpecifierSign::Unspecified;
612
4.90M
  }
613
614
0
  bool hasWrittenSignSpec() const {
615
0
    return getWrittenSignSpec() != TypeSpecifierSign::Unspecified;
616
0
  }
617
618
162k
  void setWrittenSignSpec(TypeSpecifierSign written) {
619
162k
    if (needsExtraLocalData())
620
162k
      getWrittenBuiltinSpecs().Sign = static_cast<unsigned>(written);
621
162k
  }
622
623
4.90M
  TypeSpecifierWidth getWrittenWidthSpec() const {
624
4.90M
    if (needsExtraLocalData())
625
4.90M
      return static_cast<TypeSpecifierWidth>(getWrittenBuiltinSpecs().Width);
626
0
    else
627
0
      return TypeSpecifierWidth::Unspecified;
628
4.90M
  }
629
630
0
  bool hasWrittenWidthSpec() const {
631
0
    return getWrittenWidthSpec() != TypeSpecifierWidth::Unspecified;
632
0
  }
633
634
162k
  void setWrittenWidthSpec(TypeSpecifierWidth written) {
635
162k
    if (needsExtraLocalData())
636
162k
      getWrittenBuiltinSpecs().Width = static_cast<unsigned>(written);
637
162k
  }
638
639
  TypeSpecifierType getWrittenTypeSpec() const;
640
641
0
  bool hasWrittenTypeSpec() const {
642
0
    return getWrittenTypeSpec() != TST_unspecified;
643
0
  }
644
645
162k
  void setWrittenTypeSpec(TypeSpecifierType written) {
646
162k
    if (needsExtraLocalData())
647
162k
      getWrittenBuiltinSpecs().Type = written;
648
162k
  }
649
650
238k
  bool hasModeAttr() const {
651
238k
    if (needsExtraLocalData())
652
238k
      return getWrittenBuiltinSpecs().ModeAttr;
653
0
    else
654
0
      return false;
655
238k
  }
656
657
162k
  void setModeAttr(bool written) {
658
162k
    if (needsExtraLocalData())
659
162k
      getWrittenBuiltinSpecs().ModeAttr = written;
660
162k
  }
661
662
4.79M
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
663
4.79M
    setBuiltinLoc(Loc);
664
4.79M
    if (needsExtraLocalData()) {
665
2.86M
      WrittenBuiltinSpecs &wbs = getWrittenBuiltinSpecs();
666
2.86M
      wbs.Sign = static_cast<unsigned>(TypeSpecifierSign::Unspecified);
667
2.86M
      wbs.Width = static_cast<unsigned>(TypeSpecifierWidth::Unspecified);
668
2.86M
      wbs.Type = TST_unspecified;
669
2.86M
      wbs.ModeAttr = false;
670
2.86M
    }
671
4.79M
  }
672
};
673
674
/// Wrapper for source info for types used via transparent aliases.
675
class UsingTypeLoc : public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
676
                                                      UsingTypeLoc, UsingType> {
677
public:
678
3
  QualType getUnderlyingType() const {
679
3
    return getTypePtr()->getUnderlyingType();
680
3
  }
681
  UsingShadowDecl *getFoundDecl() const { return getTypePtr()->getFoundDecl(); }
682
};
683
684
/// Wrapper for source info for typedefs.
685
class TypedefTypeLoc : public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
686
                                                        TypedefTypeLoc,
687
                                                        TypedefType> {
688
public:
689
11.2k
  TypedefNameDecl *getTypedefNameDecl() const {
690
11.2k
    return getTypePtr()->getDecl();
691
11.2k
  }
692
};
693
694
/// Wrapper for source info for injected class names of class
695
/// templates.
696
class InjectedClassNameTypeLoc :
697
    public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
698
                                     InjectedClassNameTypeLoc,
699
                                     InjectedClassNameType> {
700
public:
701
16
  CXXRecordDecl *getDecl() const {
702
16
    return getTypePtr()->getDecl();
703
16
  }
704
};
705
706
/// Wrapper for source info for unresolved typename using decls.
707
class UnresolvedUsingTypeLoc :
708
    public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
709
                                     UnresolvedUsingTypeLoc,
710
                                     UnresolvedUsingType> {
711
public:
712
0
  UnresolvedUsingTypenameDecl *getDecl() const {
713
0
    return getTypePtr()->getDecl();
714
0
  }
715
};
716
717
/// Wrapper for source info for tag types.  Note that this only
718
/// records source info for the name itself; a type written 'struct foo'
719
/// should be represented as an ElaboratedTypeLoc.  We currently
720
/// only do that when C++ is enabled because of the expense of
721
/// creating an ElaboratedType node for so many type references in C.
722
class TagTypeLoc : public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
723
                                                    TagTypeLoc,
724
                                                    TagType> {
725
public:
726
1.60k
  TagDecl *getDecl() const { return getTypePtr()->getDecl(); }
727
728
  /// True if the tag was defined in this type specifier.
729
  bool isDefinition() const;
730
};
731
732
/// Wrapper for source info for record types.
733
class RecordTypeLoc : public InheritingConcreteTypeLoc<TagTypeLoc,
734
                                                       RecordTypeLoc,
735
                                                       RecordType> {
736
public:
737
54
  RecordDecl *getDecl() const { return getTypePtr()->getDecl(); }
738
};
739
740
/// Wrapper for source info for enum types.
741
class EnumTypeLoc : public InheritingConcreteTypeLoc<TagTypeLoc,
742
                                                     EnumTypeLoc,
743
                                                     EnumType> {
744
public:
745
0
  EnumDecl *getDecl() const { return getTypePtr()->getDecl(); }
746
};
747
748
/// Wrapper for template type parameters.
749
class TemplateTypeParmTypeLoc :
750
    public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
751
                                     TemplateTypeParmTypeLoc,
752
                                     TemplateTypeParmType> {
753
public:
754
1.47k
  TemplateTypeParmDecl *getDecl() const { return getTypePtr()->getDecl(); }
755
};
756
757
struct ObjCTypeParamTypeLocInfo {
758
  SourceLocation NameLoc;
759
};
760
761
/// ProtocolLAngleLoc, ProtocolRAngleLoc, and the source locations for
762
/// protocol qualifiers are stored after Info.
763
class ObjCTypeParamTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
764
                                     ObjCTypeParamTypeLoc,
765
                                     ObjCTypeParamType,
766
                                     ObjCTypeParamTypeLocInfo> {
767
  // SourceLocations are stored after Info, one for each protocol qualifier.
768
3.60k
  SourceLocation *getProtocolLocArray() const {
769
3.60k
    return (SourceLocation*)this->getExtraLocalData() + 2;
770
3.60k
  }
771
772
public:
773
5
  ObjCTypeParamDecl *getDecl() const { return getTypePtr()->getDecl(); }
774
775
46.4k
  SourceLocation getNameLoc() const {
776
46.4k
    return this->getLocalData()->NameLoc;
777
46.4k
  }
778
779
130k
  void setNameLoc(SourceLocation Loc) {
780
130k
    this->getLocalData()->NameLoc = Loc;
781
130k
  }
782
783
30
  SourceLocation getProtocolLAngleLoc() const {
784
30
    return getNumProtocols()  ?
785
30
      *((SourceLocation*)this->getExtraLocalData()) :
786
30
      
SourceLocation()0
;
787
30
  }
788
789
3.55k
  void setProtocolLAngleLoc(SourceLocation Loc) {
790
3.55k
    *((SourceLocation*)this->getExtraLocalData()) = Loc;
791
3.55k
  }
792
793
46.5k
  SourceLocation getProtocolRAngleLoc() const {
794
46.5k
    return getNumProtocols()  ?
795
2.23k
      *((SourceLocation*)this->getExtraLocalData() + 1) :
796
46.5k
      
SourceLocation()44.2k
;
797
46.5k
  }
798
799
3.55k
  void setProtocolRAngleLoc(SourceLocation Loc) {
800
3.55k
    *((SourceLocation*)this->getExtraLocalData() + 1) = Loc;
801
3.55k
  }
802
803
326k
  unsigned getNumProtocols() const {
804
326k
    return this->getTypePtr()->getNumProtocols();
805
326k
  }
806
807
47
  SourceLocation getProtocolLoc(unsigned i) const {
808
47
    assert(i < getNumProtocols() && "Index is out of bounds!");
809
47
    return getProtocolLocArray()[i];
810
47
  }
811
812
3.55k
  void setProtocolLoc(unsigned i, SourceLocation Loc) {
813
3.55k
    assert(i < getNumProtocols() && "Index is out of bounds!");
814
3.55k
    getProtocolLocArray()[i] = Loc;
815
3.55k
  }
816
817
16
  ObjCProtocolDecl *getProtocol(unsigned i) const {
818
16
    assert(i < getNumProtocols() && "Index is out of bounds!");
819
16
    return *(this->getTypePtr()->qual_begin() + i);
820
16
  }
821
822
0
  ArrayRef<SourceLocation> getProtocolLocs() const {
823
0
    return llvm::ArrayRef(getProtocolLocArray(), getNumProtocols());
824
0
  }
825
826
  void initializeLocal(ASTContext &Context, SourceLocation Loc);
827
828
132k
  unsigned getExtraLocalDataSize() const {
829
132k
    if (!this->getNumProtocols()) 
return 0129k
;
830
    // When there are protocol qualifers, we have LAngleLoc and RAngleLoc
831
    // as well.
832
3.55k
    return (this->getNumProtocols() + 2) * sizeof(SourceLocation) ;
833
132k
  }
834
835
368k
  unsigned getExtraLocalDataAlignment() const {
836
368k
    return alignof(SourceLocation);
837
368k
  }
838
839
46.4k
  SourceRange getLocalSourceRange() const {
840
46.4k
    SourceLocation start = getNameLoc();
841
46.4k
    SourceLocation end = getProtocolRAngleLoc();
842
46.4k
    if (end.isInvalid()) 
return SourceRange(start, start)44.2k
;
843
2.20k
    return SourceRange(start, end);
844
46.4k
  }
845
};
846
847
/// Wrapper for substituted template type parameters.
848
class SubstTemplateTypeParmTypeLoc :
849
    public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
850
                                     SubstTemplateTypeParmTypeLoc,
851
                                     SubstTemplateTypeParmType> {
852
};
853
854
  /// Wrapper for substituted template type parameters.
855
class SubstTemplateTypeParmPackTypeLoc :
856
    public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
857
                                     SubstTemplateTypeParmPackTypeLoc,
858
                                     SubstTemplateTypeParmPackType> {
859
};
860
861
struct AttributedLocInfo {
862
  const Attr *TypeAttr;
863
};
864
865
/// Type source information for an attributed type.
866
class AttributedTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
867
                                                 AttributedTypeLoc,
868
                                                 AttributedType,
869
                                                 AttributedLocInfo> {
870
public:
871
352
  attr::Kind getAttrKind() const {
872
352
    return getTypePtr()->getAttrKind();
873
352
  }
874
875
25
  bool isQualifier() const {
876
25
    return getTypePtr()->isQualifier();
877
25
  }
878
879
  /// The modified type, which is generally canonically different from
880
  /// the attribute type.
881
  ///    int main(int, char**) __attribute__((noreturn))
882
  ///    ~~~     ~~~~~~~~~~~~~
883
1.76M
  TypeLoc getModifiedLoc() const {
884
1.76M
    return getInnerTypeLoc();
885
1.76M
  }
886
887
  /// The type attribute.
888
1.64M
  const Attr *getAttr() const {
889
1.64M
    return getLocalData()->TypeAttr;
890
1.64M
  }
891
3.28M
  void setAttr(const Attr *A) {
892
3.28M
    getLocalData()->TypeAttr = A;
893
3.28M
  }
894
895
16.1k
  template<typename T> const T *getAttrAs() {
896
16.1k
    return dyn_cast_or_null<T>(getAttr());
897
16.1k
  }
clang::LifetimeBoundAttr const* clang::AttributedTypeLoc::getAttrAs<clang::LifetimeBoundAttr>()
Line
Count
Source
895
15.8k
  template<typename T> const T *getAttrAs() {
896
15.8k
    return dyn_cast_or_null<T>(getAttr());
897
15.8k
  }
clang::ObjCOwnershipAttr const* clang::AttributedTypeLoc::getAttrAs<clang::ObjCOwnershipAttr>()
Line
Count
Source
895
340
  template<typename T> const T *getAttrAs() {
896
340
    return dyn_cast_or_null<T>(getAttr());
897
340
  }
898
899
  SourceRange getLocalSourceRange() const;
900
901
1.65k
  void initializeLocal(ASTContext &Context, SourceLocation loc) {
902
1.65k
    setAttr(nullptr);
903
1.65k
  }
904
905
14.9M
  QualType getInnerType() const {
906
14.9M
    return getTypePtr()->getModifiedType();
907
14.9M
  }
908
};
909
910
struct BTFTagAttributedLocInfo {}; // Nothing.
911
912
/// Type source information for an btf_tag attributed type.
913
class BTFTagAttributedTypeLoc
914
    : public ConcreteTypeLoc<UnqualTypeLoc, BTFTagAttributedTypeLoc,
915
                             BTFTagAttributedType, BTFTagAttributedLocInfo> {
916
public:
917
37
  TypeLoc getWrappedLoc() const { return getInnerTypeLoc(); }
918
919
  /// The btf_type_tag attribute.
920
40
  const BTFTypeTagAttr *getAttr() const { return getTypePtr()->getAttr(); }
921
922
  template <typename T> T *getAttrAs() {
923
    return dyn_cast_or_null<T>(getAttr());
924
  }
925
926
  SourceRange getLocalSourceRange() const;
927
928
0
  void initializeLocal(ASTContext &Context, SourceLocation loc) {}
929
930
320
  QualType getInnerType() const { return getTypePtr()->getWrappedType(); }
931
};
932
933
struct ObjCObjectTypeLocInfo {
934
  SourceLocation TypeArgsLAngleLoc;
935
  SourceLocation TypeArgsRAngleLoc;
936
  SourceLocation ProtocolLAngleLoc;
937
  SourceLocation ProtocolRAngleLoc;
938
  bool HasBaseTypeAsWritten;
939
};
940
941
// A helper class for defining ObjC TypeLocs that can qualified with
942
// protocols.
943
//
944
// TypeClass basically has to be either ObjCInterfaceType or
945
// ObjCObjectPointerType.
946
class ObjCObjectTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
947
                                                 ObjCObjectTypeLoc,
948
                                                 ObjCObjectType,
949
                                                 ObjCObjectTypeLocInfo> {
950
  // TypeSourceInfo*'s are stored after Info, one for each type argument.
951
195k
  TypeSourceInfo **getTypeArgLocArray() const {
952
195k
    return (TypeSourceInfo**)this->getExtraLocalData();
953
195k
  }
954
955
  // SourceLocations are stored after the type argument information, one for
956
  // each Protocol.
957
25.5k
  SourceLocation *getProtocolLocArray() const {
958
25.5k
    return (SourceLocation*)(getTypeArgLocArray() + getNumTypeArgs());
959
25.5k
  }
960
961
public:
962
69.1k
  SourceLocation getTypeArgsLAngleLoc() const {
963
69.1k
    return this->getLocalData()->TypeArgsLAngleLoc;
964
69.1k
  }
965
966
206k
  void setTypeArgsLAngleLoc(SourceLocation Loc) {
967
206k
    this->getLocalData()->TypeArgsLAngleLoc = Loc;
968
206k
  }
969
970
60.4k
  SourceLocation getTypeArgsRAngleLoc() const {
971
60.4k
    return this->getLocalData()->TypeArgsRAngleLoc;
972
60.4k
  }
973
974
206k
  void setTypeArgsRAngleLoc(SourceLocation Loc) {
975
206k
    this->getLocalData()->TypeArgsRAngleLoc = Loc;
976
206k
  }
977
978
2.43M
  unsigned getNumTypeArgs() const {
979
2.43M
    return this->getTypePtr()->getTypeArgsAsWritten().size();
980
2.43M
  }
981
982
7.72k
  TypeSourceInfo *getTypeArgTInfo(unsigned i) const {
983
7.72k
    assert(i < getNumTypeArgs() && "Index is out of bounds!");
984
7.72k
    return getTypeArgLocArray()[i];
985
7.72k
  }
986
987
161k
  void setTypeArgTInfo(unsigned i, TypeSourceInfo *TInfo) {
988
161k
    assert(i < getNumTypeArgs() && "Index is out of bounds!");
989
161k
    getTypeArgLocArray()[i] = TInfo;
990
161k
  }
991
992
14.2k
  SourceLocation getProtocolLAngleLoc() const {
993
14.2k
    return this->getLocalData()->ProtocolLAngleLoc;
994
14.2k
  }
995
996
206k
  void setProtocolLAngleLoc(SourceLocation Loc) {
997
206k
    this->getLocalData()->ProtocolLAngleLoc = Loc;
998
206k
  }
999
1000
69.1k
  SourceLocation getProtocolRAngleLoc() const {
1001
69.1k
    return this->getLocalData()->ProtocolRAngleLoc;
1002
69.1k
  }
1003
1004
206k
  void setProtocolRAngleLoc(SourceLocation Loc) {
1005
206k
    this->getLocalData()->ProtocolRAngleLoc = Loc;
1006
206k
  }
1007
1008
2.16M
  unsigned getNumProtocols() const {
1009
2.16M
    return this->getTypePtr()->getNumProtocols();
1010
2.16M
  }
1011
1012
3.13k
  SourceLocation getProtocolLoc(unsigned i) const {
1013
3.13k
    assert(i < getNumProtocols() && "Index is out of bounds!");
1014
3.13k
    return getProtocolLocArray()[i];
1015
3.13k
  }
1016
1017
22.3k
  void setProtocolLoc(unsigned i, SourceLocation Loc) {
1018
22.3k
    assert(i < getNumProtocols() && "Index is out of bounds!");
1019
22.3k
    getProtocolLocArray()[i] = Loc;
1020
22.3k
  }
1021
1022
1.27k
  ObjCProtocolDecl *getProtocol(unsigned i) const {
1023
1.27k
    assert(i < getNumProtocols() && "Index is out of bounds!");
1024
1.27k
    return *(this->getTypePtr()->qual_begin() + i);
1025
1.27k
  }
1026
1027
1028
17
  ArrayRef<SourceLocation> getProtocolLocs() const {
1029
17
    return llvm::ArrayRef(getProtocolLocArray(), getNumProtocols());
1030
17
  }
1031
1032
5.57k
  bool hasBaseTypeAsWritten() const {
1033
5.57k
    return getLocalData()->HasBaseTypeAsWritten;
1034
5.57k
  }
1035
1036
206k
  void setHasBaseTypeAsWritten(bool HasBaseType) {
1037
206k
    getLocalData()->HasBaseTypeAsWritten = HasBaseType;
1038
206k
  }
1039
1040
157k
  TypeLoc getBaseLoc() const {
1041
157k
    return getInnerTypeLoc();
1042
157k
  }
1043
1044
63.5k
  SourceRange getLocalSourceRange() const {
1045
63.5k
    SourceLocation start = getTypeArgsLAngleLoc();
1046
63.5k
    if (start.isInvalid())
1047
8.67k
      start = getProtocolLAngleLoc();
1048
63.5k
    SourceLocation end = getProtocolRAngleLoc();
1049
63.5k
    if (end.isInvalid())
1050
54.8k
      end = getTypeArgsRAngleLoc();
1051
63.5k
    return SourceRange(start, end);
1052
63.5k
  }
1053
1054
  void initializeLocal(ASTContext &Context, SourceLocation Loc);
1055
1056
1.89M
  unsigned getExtraLocalDataSize() const {
1057
1.89M
    return this->getNumTypeArgs() * sizeof(TypeSourceInfo *)
1058
1.89M
         + this->getNumProtocols() * sizeof(SourceLocation);
1059
1.89M
  }
1060
1061
3.44M
  unsigned getExtraLocalDataAlignment() const {
1062
3.44M
    static_assert(alignof(ObjCObjectTypeLoc) >= alignof(TypeSourceInfo *),
1063
3.44M
                  "not enough alignment for tail-allocated data");
1064
3.44M
    return alignof(TypeSourceInfo *);
1065
3.44M
  }
1066
1067
2.17M
  QualType getInnerType() const {
1068
2.17M
    return getTypePtr()->getBaseType();
1069
2.17M
  }
1070
};
1071
1072
struct ObjCInterfaceLocInfo {
1073
  SourceLocation NameLoc;
1074
  SourceLocation NameEndLoc;
1075
};
1076
1077
/// Wrapper for source info for ObjC interfaces.
1078
class ObjCInterfaceTypeLoc : public ConcreteTypeLoc<ObjCObjectTypeLoc,
1079
                                                    ObjCInterfaceTypeLoc,
1080
                                                    ObjCInterfaceType,
1081
                                                    ObjCInterfaceLocInfo> {
1082
public:
1083
395
  ObjCInterfaceDecl *getIFaceDecl() const {
1084
395
    return getTypePtr()->getDecl();
1085
395
  }
1086
1087
1.60M
  SourceLocation getNameLoc() const {
1088
1.60M
    return getLocalData()->NameLoc;
1089
1.60M
  }
1090
1091
1.37M
  void setNameLoc(SourceLocation Loc) {
1092
1.37M
    getLocalData()->NameLoc = Loc;
1093
1.37M
  }
1094
1095
1.57M
  SourceRange getLocalSourceRange() const {
1096
1.57M
    return SourceRange(getNameLoc(), getNameEndLoc());
1097
1.57M
  }
1098
1099
1.60M
  SourceLocation getNameEndLoc() const {
1100
1.60M
    return getLocalData()->NameEndLoc;
1101
1.60M
  }
1102
1103
1.37M
  void setNameEndLoc(SourceLocation Loc) {
1104
1.37M
    getLocalData()->NameEndLoc = Loc;
1105
1.37M
  }
1106
1107
342k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1108
342k
    setNameLoc(Loc);
1109
342k
    setNameEndLoc(Loc);
1110
342k
  }
1111
};
1112
1113
struct MacroQualifiedLocInfo {
1114
  SourceLocation ExpansionLoc;
1115
};
1116
1117
class MacroQualifiedTypeLoc
1118
    : public ConcreteTypeLoc<UnqualTypeLoc, MacroQualifiedTypeLoc,
1119
                             MacroQualifiedType, MacroQualifiedLocInfo> {
1120
public:
1121
57
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1122
57
    setExpansionLoc(Loc);
1123
57
  }
1124
1125
157k
  TypeLoc getInnerLoc() const { return getInnerTypeLoc(); }
1126
1127
23
  const IdentifierInfo *getMacroIdentifier() const {
1128
23
    return getTypePtr()->getMacroIdentifier();
1129
23
  }
1130
1131
5.66k
  SourceLocation getExpansionLoc() const {
1132
5.66k
    return this->getLocalData()->ExpansionLoc;
1133
5.66k
  }
1134
1135
238k
  void setExpansionLoc(SourceLocation Loc) {
1136
238k
    this->getLocalData()->ExpansionLoc = Loc;
1137
238k
  }
1138
1139
1.00M
  QualType getInnerType() const { return getTypePtr()->getUnderlyingType(); }
1140
1141
489
  SourceRange getLocalSourceRange() const {
1142
489
    return getInnerLoc().getLocalSourceRange();
1143
489
  }
1144
};
1145
1146
struct ParenLocInfo {
1147
  SourceLocation LParenLoc;
1148
  SourceLocation RParenLoc;
1149
};
1150
1151
class ParenTypeLoc
1152
  : public ConcreteTypeLoc<UnqualTypeLoc, ParenTypeLoc, ParenType,
1153
                           ParenLocInfo> {
1154
public:
1155
226k
  SourceLocation getLParenLoc() const {
1156
226k
    return this->getLocalData()->LParenLoc;
1157
226k
  }
1158
1159
226k
  SourceLocation getRParenLoc() const {
1160
226k
    return this->getLocalData()->RParenLoc;
1161
226k
  }
1162
1163
340k
  void setLParenLoc(SourceLocation Loc) {
1164
340k
    this->getLocalData()->LParenLoc = Loc;
1165
340k
  }
1166
1167
340k
  void setRParenLoc(SourceLocation Loc) {
1168
340k
    this->getLocalData()->RParenLoc = Loc;
1169
340k
  }
1170
1171
199k
  SourceRange getLocalSourceRange() const {
1172
199k
    return SourceRange(getLParenLoc(), getRParenLoc());
1173
199k
  }
1174
1175
8.87k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1176
8.87k
    setLParenLoc(Loc);
1177
8.87k
    setRParenLoc(Loc);
1178
8.87k
  }
1179
1180
42.9k
  TypeLoc getInnerLoc() const {
1181
42.9k
    return getInnerTypeLoc();
1182
42.9k
  }
1183
1184
2.23M
  QualType getInnerType() const {
1185
2.23M
    return this->getTypePtr()->getInnerType();
1186
2.23M
  }
1187
};
1188
1189
5.34M
inline TypeLoc TypeLoc::IgnoreParens() const {
1190
5.34M
  if (ParenTypeLoc::isKind(*this))
1191
173
    return IgnoreParensImpl(*this);
1192
5.34M
  return *this;
1193
5.34M
}
1194
1195
struct AdjustedLocInfo {}; // Nothing.
1196
1197
class AdjustedTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, AdjustedTypeLoc,
1198
                                               AdjustedType, AdjustedLocInfo> {
1199
public:
1200
2.15k
  TypeLoc getOriginalLoc() const {
1201
2.15k
    return getInnerTypeLoc();
1202
2.15k
  }
1203
1204
4.35k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1205
    // do nothing
1206
4.35k
  }
1207
1208
38.9k
  QualType getInnerType() const {
1209
    // The inner type is the undecayed type, since that's what we have source
1210
    // location information for.
1211
38.9k
    return getTypePtr()->getOriginalType();
1212
38.9k
  }
1213
1214
4.84k
  SourceRange getLocalSourceRange() const { return {}; }
1215
1216
29.1k
  unsigned getLocalDataSize() const {
1217
    // sizeof(AdjustedLocInfo) is 1, but we don't need its address to be unique
1218
    // anyway.  TypeLocBuilder can't handle data sizes of 1.
1219
29.1k
    return 0;  // No data.
1220
29.1k
  }
1221
};
1222
1223
/// Wrapper for source info for pointers decayed from arrays and
1224
/// functions.
1225
class DecayedTypeLoc : public InheritingConcreteTypeLoc<
1226
                           AdjustedTypeLoc, DecayedTypeLoc, DecayedType> {
1227
};
1228
1229
struct PointerLikeLocInfo {
1230
  SourceLocation StarLoc;
1231
};
1232
1233
/// A base class for
1234
template <class Derived, class TypeClass, class LocalData = PointerLikeLocInfo>
1235
class PointerLikeTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, Derived,
1236
                                                  TypeClass, LocalData> {
1237
public:
1238
17.9M
  SourceLocation getSigilLoc() const {
1239
17.9M
    return this->getLocalData()->StarLoc;
1240
17.9M
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getSigilLoc() const
Line
Count
Source
1238
5.56M
  SourceLocation getSigilLoc() const {
1239
5.56M
    return this->getLocalData()->StarLoc;
1240
5.56M
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getSigilLoc() const
Line
Count
Source
1238
67.8k
  SourceLocation getSigilLoc() const {
1239
67.8k
    return this->getLocalData()->StarLoc;
1240
67.8k
  }
clang::PointerLikeTypeLoc<clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getSigilLoc() const
Line
Count
Source
1238
74.9k
  SourceLocation getSigilLoc() const {
1239
74.9k
    return this->getLocalData()->StarLoc;
1240
74.9k
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getSigilLoc() const
Line
Count
Source
1238
1.11M
  SourceLocation getSigilLoc() const {
1239
1.11M
    return this->getLocalData()->StarLoc;
1240
1.11M
  }
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getSigilLoc() const
Line
Count
Source
1238
11.1M
  SourceLocation getSigilLoc() const {
1239
11.1M
    return this->getLocalData()->StarLoc;
1240
11.1M
  }
1241
1242
15.9M
  void setSigilLoc(SourceLocation Loc) {
1243
15.9M
    this->getLocalData()->StarLoc = Loc;
1244
15.9M
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::setSigilLoc(clang::SourceLocation)
Line
Count
Source
1242
9.93M
  void setSigilLoc(SourceLocation Loc) {
1243
9.93M
    this->getLocalData()->StarLoc = Loc;
1244
9.93M
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::setSigilLoc(clang::SourceLocation)
Line
Count
Source
1242
62.2k
  void setSigilLoc(SourceLocation Loc) {
1243
62.2k
    this->getLocalData()->StarLoc = Loc;
1244
62.2k
  }
clang::PointerLikeTypeLoc<clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::setSigilLoc(clang::SourceLocation)
Line
Count
Source
1242
55.5k
  void setSigilLoc(SourceLocation Loc) {
1243
55.5k
    this->getLocalData()->StarLoc = Loc;
1244
55.5k
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::setSigilLoc(clang::SourceLocation)
Line
Count
Source
1242
1.23M
  void setSigilLoc(SourceLocation Loc) {
1243
1.23M
    this->getLocalData()->StarLoc = Loc;
1244
1.23M
  }
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::setSigilLoc(clang::SourceLocation)
Line
Count
Source
1242
4.64M
  void setSigilLoc(SourceLocation Loc) {
1243
4.64M
    this->getLocalData()->StarLoc = Loc;
1244
4.64M
  }
1245
1246
3.24M
  TypeLoc getPointeeLoc() const {
1247
3.24M
    return this->getInnerTypeLoc();
1248
3.24M
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getPointeeLoc() const
Line
Count
Source
1246
1.48k
  TypeLoc getPointeeLoc() const {
1247
1.48k
    return this->getInnerTypeLoc();
1248
1.48k
  }
clang::PointerLikeTypeLoc<clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getPointeeLoc() const
Line
Count
Source
1246
2.06k
  TypeLoc getPointeeLoc() const {
1247
2.06k
    return this->getInnerTypeLoc();
1248
2.06k
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getPointeeLoc() const
Line
Count
Source
1246
48.8k
  TypeLoc getPointeeLoc() const {
1247
48.8k
    return this->getInnerTypeLoc();
1248
48.8k
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getPointeeLoc() const
Line
Count
Source
1246
1.26M
  TypeLoc getPointeeLoc() const {
1247
1.26M
    return this->getInnerTypeLoc();
1248
1.26M
  }
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getPointeeLoc() const
Line
Count
Source
1246
1.92M
  TypeLoc getPointeeLoc() const {
1247
1.92M
    return this->getInnerTypeLoc();
1248
1.92M
  }
1249
1250
6.69M
  SourceRange getLocalSourceRange() const {
1251
6.69M
    return SourceRange(getSigilLoc(), getSigilLoc());
1252
6.69M
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getLocalSourceRange() const
Line
Count
Source
1250
33.2k
  SourceRange getLocalSourceRange() const {
1251
33.2k
    return SourceRange(getSigilLoc(), getSigilLoc());
1252
33.2k
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getLocalSourceRange() const
Line
Count
Source
1250
541k
  SourceRange getLocalSourceRange() const {
1251
541k
    return SourceRange(getSigilLoc(), getSigilLoc());
1252
541k
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getLocalSourceRange() const
Line
Count
Source
1250
2.23M
  SourceRange getLocalSourceRange() const {
1251
2.23M
    return SourceRange(getSigilLoc(), getSigilLoc());
1252
2.23M
  }
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getLocalSourceRange() const
Line
Count
Source
1250
3.88M
  SourceRange getLocalSourceRange() const {
1251
3.88M
    return SourceRange(getSigilLoc(), getSigilLoc());
1252
3.88M
  }
1253
1254
1.56M
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1255
1.56M
    setSigilLoc(Loc);
1256
1.56M
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation)
Line
Count
Source
1254
793
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1255
793
    setSigilLoc(Loc);
1256
793
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation)
Line
Count
Source
1254
56.0k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1255
56.0k
    setSigilLoc(Loc);
1256
56.0k
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation)
Line
Count
Source
1254
746k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1255
746k
    setSigilLoc(Loc);
1256
746k
  }
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation)
Line
Count
Source
1254
761k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1255
761k
    setSigilLoc(Loc);
1256
761k
  }
1257
1258
57.8M
  QualType getInnerType() const {
1259
57.8M
    return this->getTypePtr()->getPointeeType();
1260
57.8M
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getInnerType() const
Line
Count
Source
1258
323k
  QualType getInnerType() const {
1259
323k
    return this->getTypePtr()->getPointeeType();
1260
323k
  }
clang::PointerLikeTypeLoc<clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getInnerType() const
Line
Count
Source
1258
459k
  QualType getInnerType() const {
1259
459k
    return this->getTypePtr()->getPointeeType();
1260
459k
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getInnerType() const
Line
Count
Source
1258
6.28M
  QualType getInnerType() const {
1259
6.28M
    return this->getTypePtr()->getPointeeType();
1260
6.28M
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getInnerType() const
Line
Count
Source
1258
50.7M
  QualType getInnerType() const {
1259
50.7M
    return this->getTypePtr()->getPointeeType();
1260
50.7M
  }
1261
};
1262
1263
/// Wrapper for source info for pointers.
1264
class PointerTypeLoc : public PointerLikeTypeLoc<PointerTypeLoc,
1265
                                                 PointerType> {
1266
public:
1267
133k
  SourceLocation getStarLoc() const {
1268
133k
    return getSigilLoc();
1269
133k
  }
1270
1271
8.69M
  void setStarLoc(SourceLocation Loc) {
1272
8.69M
    setSigilLoc(Loc);
1273
8.69M
  }
1274
};
1275
1276
/// Wrapper for source info for block pointers.
1277
class BlockPointerTypeLoc : public PointerLikeTypeLoc<BlockPointerTypeLoc,
1278
                                                      BlockPointerType> {
1279
public:
1280
1.28k
  SourceLocation getCaretLoc() const {
1281
1.28k
    return getSigilLoc();
1282
1.28k
  }
1283
1284
61.4k
  void setCaretLoc(SourceLocation Loc) {
1285
61.4k
    setSigilLoc(Loc);
1286
61.4k
  }
1287
};
1288
1289
struct MemberPointerLocInfo : public PointerLikeLocInfo {
1290
  TypeSourceInfo *ClassTInfo;
1291
};
1292
1293
/// Wrapper for source info for member pointers.
1294
class MemberPointerTypeLoc : public PointerLikeTypeLoc<MemberPointerTypeLoc,
1295
                                                       MemberPointerType,
1296
                                                       MemberPointerLocInfo> {
1297
public:
1298
74.3k
  SourceLocation getStarLoc() const {
1299
74.3k
    return getSigilLoc();
1300
74.3k
  }
1301
1302
32.6k
  void setStarLoc(SourceLocation Loc) {
1303
32.6k
    setSigilLoc(Loc);
1304
32.6k
  }
1305
1306
32.5k
  const Type *getClass() const {
1307
32.5k
    return getTypePtr()->getClass();
1308
32.5k
  }
1309
1310
75.4k
  TypeSourceInfo *getClassTInfo() const {
1311
75.4k
    return getLocalData()->ClassTInfo;
1312
75.4k
  }
1313
1314
55.5k
  void setClassTInfo(TypeSourceInfo* TI) {
1315
55.5k
    getLocalData()->ClassTInfo = TI;
1316
55.5k
  }
1317
1318
22.2k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1319
22.2k
    setSigilLoc(Loc);
1320
22.2k
    setClassTInfo(nullptr);
1321
22.2k
  }
1322
1323
73.2k
  SourceRange getLocalSourceRange() const {
1324
73.2k
    if (TypeSourceInfo *TI = getClassTInfo())
1325
49.1k
      return SourceRange(TI->getTypeLoc().getBeginLoc(), getStarLoc());
1326
24.1k
    else
1327
24.1k
      return SourceRange(getStarLoc());
1328
73.2k
  }
1329
};
1330
1331
/// Wraps an ObjCPointerType with source location information.
1332
class ObjCObjectPointerTypeLoc :
1333
    public PointerLikeTypeLoc<ObjCObjectPointerTypeLoc,
1334
                              ObjCObjectPointerType> {
1335
public:
1336
34.7k
  SourceLocation getStarLoc() const {
1337
34.7k
    return getSigilLoc();
1338
34.7k
  }
1339
1340
1.17M
  void setStarLoc(SourceLocation Loc) {
1341
1.17M
    setSigilLoc(Loc);
1342
1.17M
  }
1343
};
1344
1345
class ReferenceTypeLoc : public PointerLikeTypeLoc<ReferenceTypeLoc,
1346
                                                   ReferenceType> {
1347
public:
1348
38.4M
  QualType getInnerType() const {
1349
38.4M
    return getTypePtr()->getPointeeTypeAsWritten();
1350
38.4M
  }
1351
};
1352
1353
class LValueReferenceTypeLoc :
1354
    public InheritingConcreteTypeLoc<ReferenceTypeLoc,
1355
                                     LValueReferenceTypeLoc,
1356
                                     LValueReferenceType> {
1357
public:
1358
60.0k
  SourceLocation getAmpLoc() const {
1359
60.0k
    return getSigilLoc();
1360
60.0k
  }
1361
1362
1.88M
  void setAmpLoc(SourceLocation Loc) {
1363
1.88M
    setSigilLoc(Loc);
1364
1.88M
  }
1365
};
1366
1367
class RValueReferenceTypeLoc :
1368
    public InheritingConcreteTypeLoc<ReferenceTypeLoc,
1369
                                     RValueReferenceTypeLoc,
1370
                                     RValueReferenceType> {
1371
public:
1372
6.49k
  SourceLocation getAmpAmpLoc() const {
1373
6.49k
    return getSigilLoc();
1374
6.49k
  }
1375
1376
330k
  void setAmpAmpLoc(SourceLocation Loc) {
1377
330k
    setSigilLoc(Loc);
1378
330k
  }
1379
};
1380
1381
struct FunctionLocInfo {
1382
  SourceLocation LocalRangeBegin;
1383
  SourceLocation LParenLoc;
1384
  SourceLocation RParenLoc;
1385
  SourceLocation LocalRangeEnd;
1386
};
1387
1388
/// Wrapper for source info for functions.
1389
class FunctionTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
1390
                                               FunctionTypeLoc,
1391
                                               FunctionType,
1392
                                               FunctionLocInfo> {
1393
176M
  bool hasExceptionSpec() const {
1394
176M
    if (auto *FPT = dyn_cast<FunctionProtoType>(getTypePtr())) {
1395
176M
      return FPT->hasExceptionSpec();
1396
176M
    }
1397
52.8k
    return false;
1398
176M
  }
1399
1400
2.28M
  SourceRange *getExceptionSpecRangePtr() const {
1401
2.28M
    assert(hasExceptionSpec() && "No exception spec range");
1402
    // After the Info comes the ParmVarDecl array, and after that comes the
1403
    // exception specification information.
1404
2.28M
    return (SourceRange *)(getParmArray() + getNumParams());
1405
2.28M
  }
1406
1407
public:
1408
3.43M
  SourceLocation getLocalRangeBegin() const {
1409
3.43M
    return getLocalData()->LocalRangeBegin;
1410
3.43M
  }
1411
1412
39.3M
  void setLocalRangeBegin(SourceLocation L) {
1413
39.3M
    getLocalData()->LocalRangeBegin = L;
1414
39.3M
  }
1415
1416
3.43M
  SourceLocation getLocalRangeEnd() const {
1417
3.43M
    return getLocalData()->LocalRangeEnd;
1418
3.43M
  }
1419
1420
39.3M
  void setLocalRangeEnd(SourceLocation L) {
1421
39.3M
    getLocalData()->LocalRangeEnd = L;
1422
39.3M
  }
1423
1424
1.73M
  SourceLocation getLParenLoc() const {
1425
1.73M
    return this->getLocalData()->LParenLoc;
1426
1.73M
  }
1427
1428
39.3M
  void setLParenLoc(SourceLocation Loc) {
1429
39.3M
    this->getLocalData()->LParenLoc = Loc;
1430
39.3M
  }
1431
1432
1.72M
  SourceLocation getRParenLoc() const {
1433
1.72M
    return this->getLocalData()->RParenLoc;
1434
1.72M
  }
1435
1436
39.3M
  void setRParenLoc(SourceLocation Loc) {
1437
39.3M
    this->getLocalData()->RParenLoc = Loc;
1438
39.3M
  }
1439
1440
0
  SourceRange getParensRange() const {
1441
0
    return SourceRange(getLParenLoc(), getRParenLoc());
1442
0
  }
1443
1444
1.72M
  SourceRange getExceptionSpecRange() const {
1445
1.72M
    if (hasExceptionSpec())
1446
580k
      return *getExceptionSpecRangePtr();
1447
1.14M
    return {};
1448
1.72M
  }
1449
1450
38.7M
  void setExceptionSpecRange(SourceRange R) {
1451
38.7M
    if (hasExceptionSpec())
1452
1.70M
      *getExceptionSpecRangePtr() = R;
1453
38.7M
  }
1454
1455
1.80M
  ArrayRef<ParmVarDecl *> getParams() const {
1456
1.80M
    return llvm::ArrayRef(getParmArray(), getNumParams());
1457
1.80M
  }
1458
1459
  // ParmVarDecls* are stored after Info, one for each parameter.
1460
107M
  ParmVarDecl **getParmArray() const {
1461
107M
    return (ParmVarDecl**) getExtraLocalData();
1462
107M
  }
1463
1464
178M
  unsigned getNumParams() const {
1465
178M
    if (isa<FunctionNoProtoType>(getTypePtr()))
1466
53.0k
      return 0;
1467
178M
    return cast<FunctionProtoType>(getTypePtr())->getNumParams();
1468
178M
  }
1469
1470
5.64M
  ParmVarDecl *getParam(unsigned i) const { return getParmArray()[i]; }
1471
97.7M
  void setParam(unsigned i, ParmVarDecl *VD) { getParmArray()[i] = VD; }
1472
1473
1.88M
  TypeLoc getReturnLoc() const {
1474
1.88M
    return getInnerTypeLoc();
1475
1.88M
  }
1476
1477
1.70M
  SourceRange getLocalSourceRange() const {
1478
1.70M
    return SourceRange(getLocalRangeBegin(), getLocalRangeEnd());
1479
1.70M
  }
1480
1481
655k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1482
655k
    setLocalRangeBegin(Loc);
1483
655k
    setLParenLoc(Loc);
1484
655k
    setRParenLoc(Loc);
1485
655k
    setLocalRangeEnd(Loc);
1486
1.24M
    for (unsigned i = 0, e = getNumParams(); i != e; 
++i594k
)
1487
594k
      setParam(i, nullptr);
1488
655k
    if (hasExceptionSpec())
1489
55.4k
      setExceptionSpecRange(Loc);
1490
655k
  }
1491
1492
  /// Returns the size of the type source info data block that is
1493
  /// specific to this type.
1494
133M
  unsigned getExtraLocalDataSize() const {
1495
133M
    unsigned ExceptSpecSize = hasExceptionSpec() ? 
sizeof(SourceRange)10.5M
:
0122M
;
1496
133M
    return (getNumParams() * sizeof(ParmVarDecl *)) + ExceptSpecSize;
1497
133M
  }
1498
1499
285M
  unsigned getExtraLocalDataAlignment() const { return alignof(ParmVarDecl *); }
1500
1501
178M
  QualType getInnerType() const { return getTypePtr()->getReturnType(); }
1502
};
1503
1504
class FunctionProtoTypeLoc :
1505
    public InheritingConcreteTypeLoc<FunctionTypeLoc,
1506
                                     FunctionProtoTypeLoc,
1507
                                     FunctionProtoType> {
1508
};
1509
1510
class FunctionNoProtoTypeLoc :
1511
    public InheritingConcreteTypeLoc<FunctionTypeLoc,
1512
                                     FunctionNoProtoTypeLoc,
1513
                                     FunctionNoProtoType> {
1514
};
1515
1516
struct ArrayLocInfo {
1517
  SourceLocation LBracketLoc, RBracketLoc;
1518
  Expr *Size;
1519
};
1520
1521
/// Wrapper for source info for arrays.
1522
class ArrayTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
1523
                                            ArrayTypeLoc,
1524
                                            ArrayType,
1525
                                            ArrayLocInfo> {
1526
public:
1527
100k
  SourceLocation getLBracketLoc() const {
1528
100k
    return getLocalData()->LBracketLoc;
1529
100k
  }
1530
1531
532k
  void setLBracketLoc(SourceLocation Loc) {
1532
532k
    getLocalData()->LBracketLoc = Loc;
1533
532k
  }
1534
1535
100k
  SourceLocation getRBracketLoc() const {
1536
100k
    return getLocalData()->RBracketLoc;
1537
100k
  }
1538
1539
532k
  void setRBracketLoc(SourceLocation Loc) {
1540
532k
    getLocalData()->RBracketLoc = Loc;
1541
532k
  }
1542
1543
20.6k
  SourceRange getBracketsRange() const {
1544
20.6k
    return SourceRange(getLBracketLoc(), getRBracketLoc());
1545
20.6k
  }
1546
1547
118k
  Expr *getSizeExpr() const {
1548
118k
    return getLocalData()->Size;
1549
118k
  }
1550
1551
537k
  void setSizeExpr(Expr *Size) {
1552
537k
    getLocalData()->Size = Size;
1553
537k
  }
1554
1555
49.6k
  TypeLoc getElementLoc() const {
1556
49.6k
    return getInnerTypeLoc();
1557
49.6k
  }
1558
1559
34.3k
  SourceRange getLocalSourceRange() const {
1560
34.3k
    return SourceRange(getLBracketLoc(), getRBracketLoc());
1561
34.3k
  }
1562
1563
144k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1564
144k
    setLBracketLoc(Loc);
1565
144k
    setRBracketLoc(Loc);
1566
144k
    setSizeExpr(nullptr);
1567
144k
  }
1568
1569
2.62M
  QualType getInnerType() const { return getTypePtr()->getElementType(); }
1570
};
1571
1572
class ConstantArrayTypeLoc :
1573
    public InheritingConcreteTypeLoc<ArrayTypeLoc,
1574
                                     ConstantArrayTypeLoc,
1575
                                     ConstantArrayType> {
1576
};
1577
1578
class IncompleteArrayTypeLoc :
1579
    public InheritingConcreteTypeLoc<ArrayTypeLoc,
1580
                                     IncompleteArrayTypeLoc,
1581
                                     IncompleteArrayType> {
1582
};
1583
1584
class DependentSizedArrayTypeLoc :
1585
    public InheritingConcreteTypeLoc<ArrayTypeLoc,
1586
                                     DependentSizedArrayTypeLoc,
1587
                                     DependentSizedArrayType> {
1588
public:
1589
4.44k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1590
4.44k
    ArrayTypeLoc::initializeLocal(Context, Loc);
1591
4.44k
    setSizeExpr(getTypePtr()->getSizeExpr());
1592
4.44k
  }
1593
};
1594
1595
class VariableArrayTypeLoc :
1596
    public InheritingConcreteTypeLoc<ArrayTypeLoc,
1597
                                     VariableArrayTypeLoc,
1598
                                     VariableArrayType> {
1599
};
1600
1601
// Location information for a TemplateName.  Rudimentary for now.
1602
struct TemplateNameLocInfo {
1603
  SourceLocation NameLoc;
1604
};
1605
1606
struct TemplateSpecializationLocInfo : TemplateNameLocInfo {
1607
  SourceLocation TemplateKWLoc;
1608
  SourceLocation LAngleLoc;
1609
  SourceLocation RAngleLoc;
1610
};
1611
1612
class TemplateSpecializationTypeLoc :
1613
    public ConcreteTypeLoc<UnqualTypeLoc,
1614
                           TemplateSpecializationTypeLoc,
1615
                           TemplateSpecializationType,
1616
                           TemplateSpecializationLocInfo> {
1617
public:
1618
166M
  SourceLocation getTemplateKeywordLoc() const {
1619
166M
    return getLocalData()->TemplateKWLoc;
1620
166M
  }
1621
1622
12.7M
  void setTemplateKeywordLoc(SourceLocation Loc) {
1623
12.7M
    getLocalData()->TemplateKWLoc = Loc;
1624
12.7M
  }
1625
1626
12.7M
  SourceLocation getLAngleLoc() const {
1627
12.7M
    return getLocalData()->LAngleLoc;
1628
12.7M
  }
1629
1630
12.7M
  void setLAngleLoc(SourceLocation Loc) {
1631
12.7M
    getLocalData()->LAngleLoc = Loc;
1632
12.7M
  }
1633
1634
147M
  SourceLocation getRAngleLoc() const {
1635
147M
    return getLocalData()->RAngleLoc;
1636
147M
  }
1637
1638
12.7M
  void setRAngleLoc(SourceLocation Loc) {
1639
12.7M
    getLocalData()->RAngleLoc = Loc;
1640
12.7M
  }
1641
1642
55.4M
  unsigned getNumArgs() const {
1643
55.4M
    return getTypePtr()->template_arguments().size();
1644
55.4M
  }
1645
1646
17.3M
  void setArgLocInfo(unsigned i, TemplateArgumentLocInfo AI) {
1647
17.3M
    getArgInfos()[i] = AI;
1648
17.3M
  }
1649
1650
11.9M
  TemplateArgumentLocInfo getArgLocInfo(unsigned i) const {
1651
11.9M
    return getArgInfos()[i];
1652
11.9M
  }
1653
1654
11.9M
  TemplateArgumentLoc getArgLoc(unsigned i) const {
1655
11.9M
    return TemplateArgumentLoc(getTypePtr()->template_arguments()[i],
1656
11.9M
                               getArgLocInfo(i));
1657
11.9M
  }
1658
1659
128M
  SourceLocation getTemplateNameLoc() const {
1660
128M
    return getLocalData()->NameLoc;
1661
128M
  }
1662
1663
12.7M
  void setTemplateNameLoc(SourceLocation Loc) {
1664
12.7M
    getLocalData()->NameLoc = Loc;
1665
12.7M
  }
1666
1667
  /// - Copy the location information from the given info.
1668
0
  void copy(TemplateSpecializationTypeLoc Loc) {
1669
0
    unsigned size = getFullDataSize();
1670
0
    assert(size == Loc.getFullDataSize());
1671
1672
    // We're potentially copying Expr references here.  We don't
1673
    // bother retaining them because TypeSourceInfos live forever, so
1674
    // as long as the Expr was retained when originally written into
1675
    // the TypeLoc, we're okay.
1676
0
    memcpy(Data, Loc.Data, size);
1677
0
  }
1678
1679
135M
  SourceRange getLocalSourceRange() const {
1680
135M
    if (getTemplateKeywordLoc().isValid())
1681
25.3M
      return SourceRange(getTemplateKeywordLoc(), getRAngleLoc());
1682
109M
    else
1683
109M
      return SourceRange(getTemplateNameLoc(), getRAngleLoc());
1684
135M
  }
1685
1686
2.39M
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1687
2.39M
    setTemplateKeywordLoc(Loc);
1688
2.39M
    setTemplateNameLoc(Loc);
1689
2.39M
    setLAngleLoc(Loc);
1690
2.39M
    setRAngleLoc(Loc);
1691
2.39M
    initializeArgLocs(Context, getTypePtr()->template_arguments(),
1692
2.39M
                      getArgInfos(), Loc);
1693
2.39M
  }
1694
1695
  static void initializeArgLocs(ASTContext &Context,
1696
                                ArrayRef<TemplateArgument> Args,
1697
                                TemplateArgumentLocInfo *ArgInfos,
1698
                                SourceLocation Loc);
1699
1700
45.7M
  unsigned getExtraLocalDataSize() const {
1701
45.7M
    return getNumArgs() * sizeof(TemplateArgumentLocInfo);
1702
45.7M
  }
1703
1704
162M
  unsigned getExtraLocalDataAlignment() const {
1705
162M
    return alignof(TemplateArgumentLocInfo);
1706
162M
  }
1707
1708
private:
1709
31.7M
  TemplateArgumentLocInfo *getArgInfos() const {
1710
31.7M
    return static_cast<TemplateArgumentLocInfo*>(getExtraLocalData());
1711
31.7M
  }
1712
};
1713
1714
struct DependentAddressSpaceLocInfo {
1715
  Expr *ExprOperand;
1716
  SourceRange OperandParens;
1717
  SourceLocation AttrLoc;
1718
};
1719
1720
class DependentAddressSpaceTypeLoc
1721
    : public ConcreteTypeLoc<UnqualTypeLoc,
1722
                             DependentAddressSpaceTypeLoc,
1723
                             DependentAddressSpaceType,
1724
                             DependentAddressSpaceLocInfo> {
1725
public:
1726
  /// The location of the attribute name, i.e.
1727
  ///    int * __attribute__((address_space(11)))
1728
  ///                         ^~~~~~~~~~~~~
1729
85
  SourceLocation getAttrNameLoc() const {
1730
85
    return getLocalData()->AttrLoc;
1731
85
  }
1732
64
  void setAttrNameLoc(SourceLocation loc) {
1733
64
    getLocalData()->AttrLoc = loc;
1734
64
  }
1735
1736
  /// The attribute's expression operand, if it has one.
1737
  ///    int * __attribute__((address_space(11)))
1738
  ///                                       ^~
1739
11
  Expr *getAttrExprOperand() const {
1740
11
    return getLocalData()->ExprOperand;
1741
11
  }
1742
64
  void setAttrExprOperand(Expr *e) {
1743
64
    getLocalData()->ExprOperand = e;
1744
64
  }
1745
1746
  /// The location of the parentheses around the operand, if there is
1747
  /// an operand.
1748
  ///    int * __attribute__((address_space(11)))
1749
  ///                                      ^  ^
1750
85
  SourceRange getAttrOperandParensRange() const {
1751
85
    return getLocalData()->OperandParens;
1752
85
  }
1753
122
  void setAttrOperandParensRange(SourceRange range) {
1754
122
    getLocalData()->OperandParens = range;
1755
122
  }
1756
1757
74
  SourceRange getLocalSourceRange() const {
1758
74
    SourceRange range(getAttrNameLoc());
1759
74
    range.setEnd(getAttrOperandParensRange().getEnd());
1760
74
    return range;
1761
74
  }
1762
1763
  ///  Returns the type before the address space attribute application
1764
  ///  area.
1765
  ///    int * __attribute__((address_space(11))) *
1766
  ///    ^   ^
1767
454
  QualType getInnerType() const {
1768
454
    return this->getTypePtr()->getPointeeType();
1769
454
  }
1770
1771
1
  TypeLoc getPointeeTypeLoc() const {
1772
1
    return this->getInnerTypeLoc();
1773
1
  }
1774
1775
58
  void initializeLocal(ASTContext &Context, SourceLocation loc) {
1776
58
    setAttrNameLoc(loc);
1777
58
    setAttrOperandParensRange(loc);
1778
58
    setAttrOperandParensRange(SourceRange(loc));
1779
58
    setAttrExprOperand(getTypePtr()->getAddrSpaceExpr());
1780
58
  }
1781
};
1782
1783
//===----------------------------------------------------------------------===//
1784
//
1785
//  All of these need proper implementations.
1786
//
1787
//===----------------------------------------------------------------------===//
1788
1789
// FIXME: size expression and attribute locations (or keyword if we
1790
// ever fully support altivec syntax).
1791
struct VectorTypeLocInfo {
1792
  SourceLocation NameLoc;
1793
};
1794
1795
class VectorTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, VectorTypeLoc,
1796
                                             VectorType, VectorTypeLocInfo> {
1797
public:
1798
115k
  SourceLocation getNameLoc() const { return this->getLocalData()->NameLoc; }
1799
1800
149k
  void setNameLoc(SourceLocation Loc) { this->getLocalData()->NameLoc = Loc; }
1801
1802
57.0k
  SourceRange getLocalSourceRange() const {
1803
57.0k
    return SourceRange(getNameLoc(), getNameLoc());
1804
57.0k
  }
1805
1806
148k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1807
148k
    setNameLoc(Loc);
1808
148k
  }
1809
1810
4
  TypeLoc getElementLoc() const { return getInnerTypeLoc(); }
1811
1812
656k
  QualType getInnerType() const { return this->getTypePtr()->getElementType(); }
1813
};
1814
1815
// FIXME: size expression and attribute locations (or keyword if we
1816
// ever fully support altivec syntax).
1817
class DependentVectorTypeLoc
1818
    : public ConcreteTypeLoc<UnqualTypeLoc, DependentVectorTypeLoc,
1819
                             DependentVectorType, VectorTypeLocInfo> {
1820
public:
1821
326
  SourceLocation getNameLoc() const { return this->getLocalData()->NameLoc; }
1822
1823
70
  void setNameLoc(SourceLocation Loc) { this->getLocalData()->NameLoc = Loc; }
1824
1825
134
  SourceRange getLocalSourceRange() const {
1826
134
    return SourceRange(getNameLoc(), getNameLoc());
1827
134
  }
1828
1829
52
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1830
52
    setNameLoc(Loc);
1831
52
  }
1832
1833
106
  TypeLoc getElementLoc() const { return getInnerTypeLoc(); }
1834
1835
948
  QualType getInnerType() const { return this->getTypePtr()->getElementType(); }
1836
};
1837
1838
// FIXME: size expression and attribute locations.
1839
class ExtVectorTypeLoc
1840
    : public InheritingConcreteTypeLoc<VectorTypeLoc, ExtVectorTypeLoc,
1841
                                       ExtVectorType> {};
1842
1843
// FIXME: attribute locations.
1844
// For some reason, this isn't a subtype of VectorType.
1845
class DependentSizedExtVectorTypeLoc
1846
    : public ConcreteTypeLoc<UnqualTypeLoc, DependentSizedExtVectorTypeLoc,
1847
                             DependentSizedExtVectorType, VectorTypeLocInfo> {
1848
public:
1849
6.84k
  SourceLocation getNameLoc() const { return this->getLocalData()->NameLoc; }
1850
1851
1.43k
  void setNameLoc(SourceLocation Loc) { this->getLocalData()->NameLoc = Loc; }
1852
1853
2.78k
  SourceRange getLocalSourceRange() const {
1854
2.78k
    return SourceRange(getNameLoc(), getNameLoc());
1855
2.78k
  }
1856
1857
1.42k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1858
1.42k
    setNameLoc(Loc);
1859
1.42k
  }
1860
1861
1.26k
  TypeLoc getElementLoc() const { return getInnerTypeLoc(); }
1862
1863
13.5k
  QualType getInnerType() const { return this->getTypePtr()->getElementType(); }
1864
};
1865
1866
struct MatrixTypeLocInfo {
1867
  SourceLocation AttrLoc;
1868
  SourceRange OperandParens;
1869
  Expr *RowOperand;
1870
  Expr *ColumnOperand;
1871
};
1872
1873
class MatrixTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, MatrixTypeLoc,
1874
                                             MatrixType, MatrixTypeLocInfo> {
1875
public:
1876
  /// The location of the attribute name, i.e.
1877
  ///    float __attribute__((matrix_type(4, 2)))
1878
  ///                         ^~~~~~~~~~~~~~~~~
1879
1.20k
  SourceLocation getAttrNameLoc() const { return getLocalData()->AttrLoc; }
1880
895
  void setAttrNameLoc(SourceLocation loc) { getLocalData()->AttrLoc = loc; }
1881
1882
  /// The attribute's row operand, if it has one.
1883
  ///    float __attribute__((matrix_type(4, 2)))
1884
  ///                                     ^
1885
383
  Expr *getAttrRowOperand() const { return getLocalData()->RowOperand; }
1886
895
  void setAttrRowOperand(Expr *e) { getLocalData()->RowOperand = e; }
1887
1888
  /// The attribute's column operand, if it has one.
1889
  ///    float __attribute__((matrix_type(4, 2)))
1890
  ///                                        ^
1891
383
  Expr *getAttrColumnOperand() const { return getLocalData()->ColumnOperand; }
1892
895
  void setAttrColumnOperand(Expr *e) { getLocalData()->ColumnOperand = e; }
1893
1894
  /// The location of the parentheses around the operand, if there is
1895
  /// an operand.
1896
  ///    float __attribute__((matrix_type(4, 2)))
1897
  ///                                    ^    ^
1898
1.20k
  SourceRange getAttrOperandParensRange() const {
1899
1.20k
    return getLocalData()->OperandParens;
1900
1.20k
  }
1901
895
  void setAttrOperandParensRange(SourceRange range) {
1902
895
    getLocalData()->OperandParens = range;
1903
895
  }
1904
1905
842
  SourceRange getLocalSourceRange() const {
1906
842
    SourceRange range(getAttrNameLoc());
1907
842
    range.setEnd(getAttrOperandParensRange().getEnd());
1908
842
    return range;
1909
842
  }
1910
1911
532
  void initializeLocal(ASTContext &Context, SourceLocation loc) {
1912
532
    setAttrNameLoc(loc);
1913
532
    setAttrOperandParensRange(loc);
1914
532
    setAttrRowOperand(nullptr);
1915
532
    setAttrColumnOperand(nullptr);
1916
532
  }
1917
};
1918
1919
class ConstantMatrixTypeLoc
1920
    : public InheritingConcreteTypeLoc<MatrixTypeLoc, ConstantMatrixTypeLoc,
1921
                                       ConstantMatrixType> {};
1922
1923
class DependentSizedMatrixTypeLoc
1924
    : public InheritingConcreteTypeLoc<MatrixTypeLoc,
1925
                                       DependentSizedMatrixTypeLoc,
1926
                                       DependentSizedMatrixType> {};
1927
1928
// FIXME: location of the '_Complex' keyword.
1929
class ComplexTypeLoc : public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
1930
                                                        ComplexTypeLoc,
1931
                                                        ComplexType> {
1932
};
1933
1934
struct TypeofLocInfo {
1935
  SourceLocation TypeofLoc;
1936
  SourceLocation LParenLoc;
1937
  SourceLocation RParenLoc;
1938
};
1939
1940
struct TypeOfExprTypeLocInfo : public TypeofLocInfo {
1941
};
1942
1943
struct TypeOfTypeLocInfo : public TypeofLocInfo {
1944
  TypeSourceInfo *UnmodifiedTInfo;
1945
};
1946
1947
template <class Derived, class TypeClass, class LocalData = TypeofLocInfo>
1948
class TypeofLikeTypeLoc
1949
  : public ConcreteTypeLoc<UnqualTypeLoc, Derived, TypeClass, LocalData> {
1950
public:
1951
7.40k
  SourceLocation getTypeofLoc() const {
1952
7.40k
    return this->getLocalData()->TypeofLoc;
1953
7.40k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getTypeofLoc() const
Line
Count
Source
1951
92
  SourceLocation getTypeofLoc() const {
1952
92
    return this->getLocalData()->TypeofLoc;
1953
92
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getTypeofLoc() const
Line
Count
Source
1951
7.31k
  SourceLocation getTypeofLoc() const {
1952
7.31k
    return this->getLocalData()->TypeofLoc;
1953
7.31k
  }
1954
1955
3.83k
  void setTypeofLoc(SourceLocation Loc) {
1956
3.83k
    this->getLocalData()->TypeofLoc = Loc;
1957
3.83k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::setTypeofLoc(clang::SourceLocation)
Line
Count
Source
1955
3.66k
  void setTypeofLoc(SourceLocation Loc) {
1956
3.66k
    this->getLocalData()->TypeofLoc = Loc;
1957
3.66k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::setTypeofLoc(clang::SourceLocation)
Line
Count
Source
1955
173
  void setTypeofLoc(SourceLocation Loc) {
1956
173
    this->getLocalData()->TypeofLoc = Loc;
1957
173
  }
1958
1959
405
  SourceLocation getLParenLoc() const {
1960
405
    return this->getLocalData()->LParenLoc;
1961
405
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getLParenLoc() const
Line
Count
Source
1959
384
  SourceLocation getLParenLoc() const {
1960
384
    return this->getLocalData()->LParenLoc;
1961
384
  }
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getLParenLoc() const
Line
Count
Source
1959
21
  SourceLocation getLParenLoc() const {
1960
21
    return this->getLocalData()->LParenLoc;
1961
21
  }
1962
1963
3.83k
  void setLParenLoc(SourceLocation Loc) {
1964
3.83k
    this->getLocalData()->LParenLoc = Loc;
1965
3.83k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::setLParenLoc(clang::SourceLocation)
Line
Count
Source
1963
3.66k
  void setLParenLoc(SourceLocation Loc) {
1964
3.66k
    this->getLocalData()->LParenLoc = Loc;
1965
3.66k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::setLParenLoc(clang::SourceLocation)
Line
Count
Source
1963
173
  void setLParenLoc(SourceLocation Loc) {
1964
173
    this->getLocalData()->LParenLoc = Loc;
1965
173
  }
1966
1967
13.6k
  SourceLocation getRParenLoc() const {
1968
13.6k
    return this->getLocalData()->RParenLoc;
1969
13.6k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getRParenLoc() const
Line
Count
Source
1967
92
  SourceLocation getRParenLoc() const {
1968
92
    return this->getLocalData()->RParenLoc;
1969
92
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getRParenLoc() const
Line
Count
Source
1967
13.6k
  SourceLocation getRParenLoc() const {
1968
13.6k
    return this->getLocalData()->RParenLoc;
1969
13.6k
  }
1970
1971
3.83k
  void setRParenLoc(SourceLocation Loc) {
1972
3.83k
    this->getLocalData()->RParenLoc = Loc;
1973
3.83k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::setRParenLoc(clang::SourceLocation)
Line
Count
Source
1971
3.66k
  void setRParenLoc(SourceLocation Loc) {
1972
3.66k
    this->getLocalData()->RParenLoc = Loc;
1973
3.66k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::setRParenLoc(clang::SourceLocation)
Line
Count
Source
1971
173
  void setRParenLoc(SourceLocation Loc) {
1972
173
    this->getLocalData()->RParenLoc = Loc;
1973
173
  }
1974
1975
  SourceRange getParensRange() const {
1976
    return SourceRange(getLParenLoc(), getRParenLoc());
1977
  }
1978
1979
3.41k
  void setParensRange(SourceRange range) {
1980
3.41k
      setLParenLoc(range.getBegin());
1981
3.41k
      setRParenLoc(range.getEnd());
1982
3.41k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::setParensRange(clang::SourceRange)
Line
Count
Source
1979
3.25k
  void setParensRange(SourceRange range) {
1980
3.25k
      setLParenLoc(range.getBegin());
1981
3.25k
      setRParenLoc(range.getEnd());
1982
3.25k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::setParensRange(clang::SourceRange)
Line
Count
Source
1979
157
  void setParensRange(SourceRange range) {
1980
157
      setLParenLoc(range.getBegin());
1981
157
      setRParenLoc(range.getEnd());
1982
157
  }
1983
1984
71
  SourceRange getLocalSourceRange() const {
1985
71
    return SourceRange(getTypeofLoc(), getRParenLoc());
1986
71
  }
1987
1988
29
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1989
29
    setTypeofLoc(Loc);
1990
29
    setLParenLoc(Loc);
1991
29
    setRParenLoc(Loc);
1992
29
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation)
Line
Count
Source
1988
29
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1989
29
    setTypeofLoc(Loc);
1990
29
    setLParenLoc(Loc);
1991
29
    setRParenLoc(Loc);
1992
29
  }
Unexecuted instantiation: clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation)
1993
};
1994
1995
class TypeOfExprTypeLoc : public TypeofLikeTypeLoc<TypeOfExprTypeLoc,
1996
                                                   TypeOfExprType,
1997
                                                   TypeOfExprTypeLocInfo> {
1998
public:
1999
4.63k
  Expr* getUnderlyingExpr() const {
2000
4.63k
    return getTypePtr()->getUnderlyingExpr();
2001
4.63k
  }
2002
2003
  // Reimplemented to account for GNU/C++ extension
2004
  //     typeof unary-expression
2005
  // where there are no parentheses.
2006
  SourceRange getLocalSourceRange() const;
2007
};
2008
2009
class TypeOfTypeLoc
2010
  : public TypeofLikeTypeLoc<TypeOfTypeLoc, TypeOfType, TypeOfTypeLocInfo> {
2011
public:
2012
0
  QualType getUnmodifiedType() const {
2013
0
    return this->getTypePtr()->getUnmodifiedType();
2014
0
  }
2015
2016
24
  TypeSourceInfo *getUnmodifiedTInfo() const {
2017
24
    return this->getLocalData()->UnmodifiedTInfo;
2018
24
  }
2019
2020
173
  void setUnmodifiedTInfo(TypeSourceInfo *TI) const {
2021
173
    this->getLocalData()->UnmodifiedTInfo = TI;
2022
173
  }
2023
2024
  void initializeLocal(ASTContext &Context, SourceLocation Loc);
2025
};
2026
2027
// decltype(expression) abc;
2028
// ~~~~~~~~                  DecltypeLoc
2029
//                    ~      RParenLoc
2030
// FIXME: add LParenLoc, it is tricky to support due to the limitation of
2031
// annotated-decltype token.
2032
struct DecltypeTypeLocInfo {
2033
  SourceLocation DecltypeLoc;
2034
  SourceLocation RParenLoc;
2035
};
2036
class DecltypeTypeLoc
2037
    : public ConcreteTypeLoc<UnqualTypeLoc, DecltypeTypeLoc, DecltypeType,
2038
                             DecltypeTypeLocInfo> {
2039
public:
2040
1
  Expr *getUnderlyingExpr() const { return getTypePtr()->getUnderlyingExpr(); }
2041
2042
1.30M
  SourceLocation getDecltypeLoc() const { return getLocalData()->DecltypeLoc; }
2043
368k
  void setDecltypeLoc(SourceLocation Loc) { getLocalData()->DecltypeLoc = Loc; }
2044
2045
1.13M
  SourceLocation getRParenLoc() const { return getLocalData()->RParenLoc; }
2046
368k
  void setRParenLoc(SourceLocation Loc) { getLocalData()->RParenLoc = Loc; }
2047
2048
973k
  SourceRange getLocalSourceRange() const {
2049
973k
    return SourceRange(getDecltypeLoc(), getRParenLoc());
2050
973k
  }
2051
2052
133k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
2053
133k
    setDecltypeLoc(Loc);
2054
133k
    setRParenLoc(Loc);
2055
133k
  }
2056
};
2057
2058
struct UnaryTransformTypeLocInfo {
2059
  // FIXME: While there's only one unary transform right now, future ones may
2060
  // need different representations
2061
  SourceLocation KWLoc, LParenLoc, RParenLoc;
2062
  TypeSourceInfo *UnderlyingTInfo;
2063
};
2064
2065
class UnaryTransformTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
2066
                                                    UnaryTransformTypeLoc,
2067
                                                    UnaryTransformType,
2068
                                                    UnaryTransformTypeLocInfo> {
2069
public:
2070
1.54M
  SourceLocation getKWLoc() const { return getLocalData()->KWLoc; }
2071
782k
  void setKWLoc(SourceLocation Loc) { getLocalData()->KWLoc = Loc; }
2072
2073
385k
  SourceLocation getLParenLoc() const { return getLocalData()->LParenLoc; }
2074
782k
  void setLParenLoc(SourceLocation Loc) { getLocalData()->LParenLoc = Loc; }
2075
2076
1.15M
  SourceLocation getRParenLoc() const { return getLocalData()->RParenLoc; }
2077
782k
  void setRParenLoc(SourceLocation Loc) { getLocalData()->RParenLoc = Loc; }
2078
2079
770k
  TypeSourceInfo* getUnderlyingTInfo() const {
2080
770k
    return getLocalData()->UnderlyingTInfo;
2081
770k
  }
2082
2083
782k
  void setUnderlyingTInfo(TypeSourceInfo *TInfo) {
2084
782k
    getLocalData()->UnderlyingTInfo = TInfo;
2085
782k
  }
2086
2087
772k
  SourceRange getLocalSourceRange() const {
2088
772k
    return SourceRange(getKWLoc(), getRParenLoc());
2089
772k
  }
2090
2091
384k
  SourceRange getParensRange() const {
2092
384k
    return SourceRange(getLParenLoc(), getRParenLoc());
2093
384k
  }
2094
2095
396k
  void setParensRange(SourceRange Range) {
2096
396k
    setLParenLoc(Range.getBegin());
2097
396k
    setRParenLoc(Range.getEnd());
2098
396k
  }
2099
2100
  void initializeLocal(ASTContext &Context, SourceLocation Loc);
2101
};
2102
2103
class DeducedTypeLoc
2104
    : public InheritingConcreteTypeLoc<TypeSpecTypeLoc, DeducedTypeLoc,
2105
                                       DeducedType> {};
2106
2107
struct AutoTypeLocInfo : TypeSpecLocInfo {
2108
  // For decltype(auto).
2109
  SourceLocation RParenLoc;
2110
2111
  ConceptReference *CR = nullptr;
2112
};
2113
2114
class AutoTypeLoc
2115
    : public ConcreteTypeLoc<DeducedTypeLoc,
2116
                             AutoTypeLoc,
2117
                             AutoType,
2118
                             AutoTypeLocInfo> {
2119
public:
2120
30
  AutoTypeKeyword getAutoKeyword() const {
2121
30
    return getTypePtr()->getKeyword();
2122
30
  }
2123
2124
115k
  bool isDecltypeAuto() const { return getTypePtr()->isDecltypeAuto(); }
2125
11.9k
  SourceLocation getRParenLoc() const { return getLocalData()->RParenLoc; }
2126
49.7k
  void setRParenLoc(SourceLocation Loc) { getLocalData()->RParenLoc = Loc; }
2127
2128
126k
  bool isConstrained() const {
2129
126k
    return getTypePtr()->isConstrained();
2130
126k
  }
2131
2132
49.4k
  void setConceptReference(ConceptReference *CR) { getLocalData()->CR = CR; }
2133
2134
6.32k
  ConceptReference *getConceptReference() const { return getLocalData()->CR; }
2135
2136
  // FIXME: Several of the following functions can be removed. Instead the
2137
  // caller can directly work with the ConceptReference.
2138
1.33k
  const NestedNameSpecifierLoc getNestedNameSpecifierLoc() const {
2139
1.33k
    if (const auto *CR = getConceptReference())
2140
1.33k
      return CR->getNestedNameSpecifierLoc();
2141
0
    return NestedNameSpecifierLoc();
2142
1.33k
  }
2143
2144
1.35k
  SourceLocation getTemplateKWLoc() const {
2145
1.35k
    if (const auto *CR = getConceptReference())
2146
1.35k
      return CR->getTemplateKWLoc();
2147
0
    return SourceLocation();
2148
1.35k
  }
2149
2150
1.24k
  SourceLocation getConceptNameLoc() const {
2151
1.24k
    if (const auto *CR = getConceptReference())
2152
1.24k
      return CR->getConceptNameLoc();
2153
0
    return SourceLocation();
2154
1.24k
  }
2155
2156
108
  NamedDecl *getFoundDecl() const {
2157
108
    if (const auto *CR = getConceptReference())
2158
108
      return CR->getFoundDecl();
2159
0
    return nullptr;
2160
108
  }
2161
2162
43
  ConceptDecl *getNamedConcept() const {
2163
43
    if (const auto *CR = getConceptReference())
2164
30
      return CR->getNamedConcept();
2165
13
    return nullptr;
2166
43
  }
2167
2168
30
  DeclarationNameInfo getConceptNameInfo() const {
2169
30
    return getConceptReference()->getConceptNameInfo();
2170
30
  }
2171
2172
22
  bool hasExplicitTemplateArgs() const {
2173
22
    return (getConceptReference() &&
2174
22
            getConceptReference()->getTemplateArgsAsWritten() &&
2175
22
            getConceptReference()
2176
22
                ->getTemplateArgsAsWritten()
2177
22
                ->getLAngleLoc()
2178
22
                .isValid());
2179
22
  }
2180
2181
245
  SourceLocation getLAngleLoc() const {
2182
245
    if (const auto *CR = getConceptReference())
2183
245
      if (const auto *TAAW = CR->getTemplateArgsAsWritten())
2184
245
        return TAAW->getLAngleLoc();
2185
0
    return SourceLocation();
2186
245
  }
2187
2188
245
  SourceLocation getRAngleLoc() const {
2189
245
    if (const auto *CR = getConceptReference())
2190
245
      if (const auto *TAAW = CR->getTemplateArgsAsWritten())
2191
245
        return TAAW->getRAngleLoc();
2192
0
    return SourceLocation();
2193
245
  }
2194
2195
245
  unsigned getNumArgs() const {
2196
245
    return getTypePtr()->getTypeConstraintArguments().size();
2197
245
  }
2198
2199
86
  TemplateArgumentLoc getArgLoc(unsigned i) const {
2200
86
    const auto *CR = getConceptReference();
2201
86
    assert(CR && "No ConceptReference");
2202
86
    return CR->getTemplateArgsAsWritten()->getTemplateArgs()[i];
2203
86
  }
2204
2205
112k
  SourceRange getLocalSourceRange() const {
2206
112k
    return {isConstrained()
2207
112k
                ? 
(1.16k
getNestedNameSpecifierLoc()1.16k
2208
1.16k
                       ? 
getNestedNameSpecifierLoc().getBeginLoc()38
2209
1.16k
                       : 
(1.12k
getTemplateKWLoc().isValid()1.12k
?
getTemplateKWLoc()120
2210
1.12k
                                                       : 
getConceptNameLoc()1.00k
))
2211
112k
                : 
getNameLoc()111k
,
2212
112k
            isDecltypeAuto() ? 
getRParenLoc()3.48k
:
getNameLoc()109k
};
2213
112k
  }
2214
2215
147k
  void copy(AutoTypeLoc Loc) {
2216
147k
    unsigned size = getFullDataSize();
2217
147k
    assert(size == Loc.getFullDataSize());
2218
147k
    memcpy(Data, Loc.Data, size);
2219
147k
  }
2220
2221
  void initializeLocal(ASTContext &Context, SourceLocation Loc);
2222
};
2223
2224
class DeducedTemplateSpecializationTypeLoc
2225
    : public InheritingConcreteTypeLoc<DeducedTypeLoc,
2226
                                       DeducedTemplateSpecializationTypeLoc,
2227
                                       DeducedTemplateSpecializationType> {
2228
public:
2229
1.59k
  SourceLocation getTemplateNameLoc() const {
2230
1.59k
    return getNameLoc();
2231
1.59k
  }
2232
2233
136
  void setTemplateNameLoc(SourceLocation Loc) {
2234
136
    setNameLoc(Loc);
2235
136
  }
2236
};
2237
2238
struct ElaboratedLocInfo {
2239
  SourceLocation ElaboratedKWLoc;
2240
2241
  /// Data associated with the nested-name-specifier location.
2242
  void *QualifierData;
2243
};
2244
2245
class ElaboratedTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
2246
                                                 ElaboratedTypeLoc,
2247
                                                 ElaboratedType,
2248
                                                 ElaboratedLocInfo> {
2249
public:
2250
33.6M
  SourceLocation getElaboratedKeywordLoc() const {
2251
33.6M
    return !isEmpty() ? 
getLocalData()->ElaboratedKWLoc2.02M
:
SourceLocation()31.6M
;
2252
33.6M
  }
2253
2254
141M
  void setElaboratedKeywordLoc(SourceLocation Loc) {
2255
141M
    if (isEmpty()) {
2256
139M
      assert(Loc.isInvalid());
2257
139M
      return;
2258
139M
    }
2259
2.38M
    getLocalData()->ElaboratedKWLoc = Loc;
2260
2.38M
  }
2261
2262
34.6M
  NestedNameSpecifierLoc getQualifierLoc() const {
2263
34.6M
    return !isEmpty() ? NestedNameSpecifierLoc(getTypePtr()->getQualifier(),
2264
2.07M
                                               getLocalData()->QualifierData)
2265
34.6M
                      : 
NestedNameSpecifierLoc()32.5M
;
2266
34.6M
  }
2267
2268
140M
  void setQualifierLoc(NestedNameSpecifierLoc QualifierLoc) {
2269
140M
    assert(QualifierLoc.getNestedNameSpecifier() ==
2270
140M
               getTypePtr()->getQualifier() &&
2271
140M
           "Inconsistent nested-name-specifier pointer");
2272
140M
    if (isEmpty()) {
2273
137M
      assert(!QualifierLoc.hasQualifier());
2274
137M
      return;
2275
137M
    }
2276
2.38M
    getLocalData()->QualifierData = QualifierLoc.getOpaqueData();
2277
2.38M
  }
2278
2279
22.5M
  SourceRange getLocalSourceRange() const {
2280
22.5M
    if (getElaboratedKeywordLoc().isValid())
2281
572k
      if (getQualifierLoc())
2282
366k
        return SourceRange(getElaboratedKeywordLoc(),
2283
366k
                           getQualifierLoc().getEndLoc());
2284
206k
      else
2285
206k
        return SourceRange(getElaboratedKeywordLoc());
2286
22.0M
    else
2287
22.0M
      return getQualifierLoc().getSourceRange();
2288
22.5M
  }
2289
2290
  void initializeLocal(ASTContext &Context, SourceLocation Loc);
2291
2292
6.51M
  TypeLoc getNamedTypeLoc() const { return getInnerTypeLoc(); }
2293
2294
696M
  QualType getInnerType() const { return getTypePtr()->getNamedType(); }
2295
2296
876M
  bool isEmpty() const {
2297
876M
    return getTypePtr()->getKeyword() == ElaboratedTypeKeyword::None &&
2298
876M
           
!getTypePtr()->getQualifier()861M
;
2299
876M
  }
2300
2301
268M
  unsigned getLocalDataAlignment() const {
2302
    // FIXME: We want to return 1 here in the empty case, but
2303
    // there are bugs in how alignment is handled in TypeLocs
2304
    // that prevent this from working.
2305
268M
    return ConcreteTypeLoc::getLocalDataAlignment();
2306
268M
  }
2307
2308
522M
  unsigned getLocalDataSize() const {
2309
522M
    return !isEmpty() ? 
ConcreteTypeLoc::getLocalDataSize()12.5M
:
0509M
;
2310
522M
  }
2311
2312
2.09M
  void copy(ElaboratedTypeLoc Loc) {
2313
2.09M
    unsigned size = getFullDataSize();
2314
2.09M
    assert(size == Loc.getFullDataSize());
2315
2.09M
    memcpy(Data, Loc.Data, size);
2316
2.09M
  }
2317
};
2318
2319
// This is exactly the structure of an ElaboratedTypeLoc whose inner
2320
// type is some sort of TypeDeclTypeLoc.
2321
struct DependentNameLocInfo : ElaboratedLocInfo {
2322
  SourceLocation NameLoc;
2323
};
2324
2325
class DependentNameTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
2326
                                                    DependentNameTypeLoc,
2327
                                                    DependentNameType,
2328
                                                    DependentNameLocInfo> {
2329
public:
2330
11.3M
  SourceLocation getElaboratedKeywordLoc() const {
2331
11.3M
    return this->getLocalData()->ElaboratedKWLoc;
2332
11.3M
  }
2333
2334
2.60M
  void setElaboratedKeywordLoc(SourceLocation Loc) {
2335
2.60M
    this->getLocalData()->ElaboratedKWLoc = Loc;
2336
2.60M
  }
2337
2338
1.62M
  NestedNameSpecifierLoc getQualifierLoc() const {
2339
1.62M
    return NestedNameSpecifierLoc(getTypePtr()->getQualifier(),
2340
1.62M
                                  getLocalData()->QualifierData);
2341
1.62M
  }
2342
2343
2.60M
  void setQualifierLoc(NestedNameSpecifierLoc QualifierLoc) {
2344
2.60M
    assert(QualifierLoc.getNestedNameSpecifier()
2345
2.60M
                                            == getTypePtr()->getQualifier() &&
2346
2.60M
           "Inconsistent nested-name-specifier pointer");
2347
2.60M
    getLocalData()->QualifierData = QualifierLoc.getOpaqueData();
2348
2.60M
  }
2349
2350
7.14M
  SourceLocation getNameLoc() const {
2351
7.14M
    return this->getLocalData()->NameLoc;
2352
7.14M
  }
2353
2354
2.60M
  void setNameLoc(SourceLocation Loc) {
2355
2.60M
    this->getLocalData()->NameLoc = Loc;
2356
2.60M
  }
2357
2358
4.16M
  SourceRange getLocalSourceRange() const {
2359
4.16M
    if (getElaboratedKeywordLoc().isValid())
2360
4.15M
      return SourceRange(getElaboratedKeywordLoc(), getNameLoc());
2361
9.54k
    else
2362
9.54k
      return SourceRange(getQualifierLoc().getBeginLoc(), getNameLoc());
2363
4.16M
  }
2364
2365
453k
  void copy(DependentNameTypeLoc Loc) {
2366
453k
    unsigned size = getFullDataSize();
2367
453k
    assert(size == Loc.getFullDataSize());
2368
453k
    memcpy(Data, Loc.Data, size);
2369
453k
  }
2370
2371
  void initializeLocal(ASTContext &Context, SourceLocation Loc);
2372
};
2373
2374
struct DependentTemplateSpecializationLocInfo : DependentNameLocInfo {
2375
  SourceLocation TemplateKWLoc;
2376
  SourceLocation LAngleLoc;
2377
  SourceLocation RAngleLoc;
2378
  // followed by a TemplateArgumentLocInfo[]
2379
};
2380
2381
class DependentTemplateSpecializationTypeLoc :
2382
    public ConcreteTypeLoc<UnqualTypeLoc,
2383
                           DependentTemplateSpecializationTypeLoc,
2384
                           DependentTemplateSpecializationType,
2385
                           DependentTemplateSpecializationLocInfo> {
2386
public:
2387
277k
  SourceLocation getElaboratedKeywordLoc() const {
2388
277k
    return this->getLocalData()->ElaboratedKWLoc;
2389
277k
  }
2390
2391
95.0k
  void setElaboratedKeywordLoc(SourceLocation Loc) {
2392
95.0k
    this->getLocalData()->ElaboratedKWLoc = Loc;
2393
95.0k
  }
2394
2395
144k
  NestedNameSpecifierLoc getQualifierLoc() const {
2396
144k
    if (!getLocalData()->QualifierData)
2397
244
      return NestedNameSpecifierLoc();
2398
2399
143k
    return NestedNameSpecifierLoc(getTypePtr()->getQualifier(),
2400
143k
                                  getLocalData()->QualifierData);
2401
144k
  }
2402
2403
95.0k
  void setQualifierLoc(NestedNameSpecifierLoc QualifierLoc) {
2404
95.0k
    if (!QualifierLoc) {
2405
      // Even if we have a nested-name-specifier in the dependent
2406
      // template specialization type, we won't record the nested-name-specifier
2407
      // location information when this type-source location information is
2408
      // part of a nested-name-specifier.
2409
43
      getLocalData()->QualifierData = nullptr;
2410
43
      return;
2411
43
    }
2412
2413
95.0k
    assert(QualifierLoc.getNestedNameSpecifier()
2414
95.0k
                                        == getTypePtr()->getQualifier() &&
2415
95.0k
           "Inconsistent nested-name-specifier pointer");
2416
95.0k
    getLocalData()->QualifierData = QualifierLoc.getOpaqueData();
2417
95.0k
  }
2418
2419
111k
  SourceLocation getTemplateKeywordLoc() const {
2420
111k
    return getLocalData()->TemplateKWLoc;
2421
111k
  }
2422
2423
95.0k
  void setTemplateKeywordLoc(SourceLocation Loc) {
2424
95.0k
    getLocalData()->TemplateKWLoc = Loc;
2425
95.0k
  }
2426
2427
114k
  SourceLocation getTemplateNameLoc() const {
2428
114k
    return this->getLocalData()->NameLoc;
2429
114k
  }
2430
2431
95.0k
  void setTemplateNameLoc(SourceLocation Loc) {
2432
95.0k
    this->getLocalData()->NameLoc = Loc;
2433
95.0k
  }
2434
2435
110k
  SourceLocation getLAngleLoc() const {
2436
110k
    return this->getLocalData()->LAngleLoc;
2437
110k
  }
2438
2439
95.0k
  void setLAngleLoc(SourceLocation Loc) {
2440
95.0k
    this->getLocalData()->LAngleLoc = Loc;
2441
95.0k
  }
2442
2443
233k
  SourceLocation getRAngleLoc() const {
2444
233k
    return this->getLocalData()->RAngleLoc;
2445
233k
  }
2446
2447
95.0k
  void setRAngleLoc(SourceLocation Loc) {
2448
95.0k
    this->getLocalData()->RAngleLoc = Loc;
2449
95.0k
  }
2450
2451
333k
  unsigned getNumArgs() const {
2452
333k
    return getTypePtr()->template_arguments().size();
2453
333k
  }
2454
2455
95.1k
  void setArgLocInfo(unsigned i, TemplateArgumentLocInfo AI) {
2456
95.1k
    getArgInfos()[i] = AI;
2457
95.1k
  }
2458
2459
83.9k
  TemplateArgumentLocInfo getArgLocInfo(unsigned i) const {
2460
83.9k
    return getArgInfos()[i];
2461
83.9k
  }
2462
2463
83.9k
  TemplateArgumentLoc getArgLoc(unsigned i) const {
2464
83.9k
    return TemplateArgumentLoc(getTypePtr()->template_arguments()[i],
2465
83.9k
                               getArgLocInfo(i));
2466
83.9k
  }
2467
2468
122k
  SourceRange getLocalSourceRange() const {
2469
122k
    if (getElaboratedKeywordLoc().isValid())
2470
103k
      return SourceRange(getElaboratedKeywordLoc(), getRAngleLoc());
2471
19.7k
    else if (getQualifierLoc())
2472
19.4k
      return SourceRange(getQualifierLoc().getBeginLoc(), getRAngleLoc());
2473
244
    else if (getTemplateKeywordLoc().isValid())
2474
192
      return SourceRange(getTemplateKeywordLoc(), getRAngleLoc());
2475
52
    else
2476
52
      return SourceRange(getTemplateNameLoc(), getRAngleLoc());
2477
122k
  }
2478
2479
12.0k
  void copy(DependentTemplateSpecializationTypeLoc Loc) {
2480
12.0k
    unsigned size = getFullDataSize();
2481
12.0k
    assert(size == Loc.getFullDataSize());
2482
12.0k
    memcpy(Data, Loc.Data, size);
2483
12.0k
  }
2484
2485
  void initializeLocal(ASTContext &Context, SourceLocation Loc);
2486
2487
275k
  unsigned getExtraLocalDataSize() const {
2488
275k
    return getNumArgs() * sizeof(TemplateArgumentLocInfo);
2489
275k
  }
2490
2491
780k
  unsigned getExtraLocalDataAlignment() const {
2492
780k
    return alignof(TemplateArgumentLocInfo);
2493
780k
  }
2494
2495
private:
2496
225k
  TemplateArgumentLocInfo *getArgInfos() const {
2497
225k
    return static_cast<TemplateArgumentLocInfo*>(getExtraLocalData());
2498
225k
  }
2499
};
2500
2501
struct PackExpansionTypeLocInfo {
2502
  SourceLocation EllipsisLoc;
2503
};
2504
2505
class PackExpansionTypeLoc
2506
  : public ConcreteTypeLoc<UnqualTypeLoc, PackExpansionTypeLoc,
2507
                           PackExpansionType, PackExpansionTypeLocInfo> {
2508
public:
2509
1.17M
  SourceLocation getEllipsisLoc() const {
2510
1.17M
    return this->getLocalData()->EllipsisLoc;
2511
1.17M
  }
2512
2513
468k
  void setEllipsisLoc(SourceLocation Loc) {
2514
468k
    this->getLocalData()->EllipsisLoc = Loc;
2515
468k
  }
2516
2517
410k
  SourceRange getLocalSourceRange() const {
2518
410k
    return SourceRange(getEllipsisLoc(), getEllipsisLoc());
2519
410k
  }
2520
2521
108k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
2522
108k
    setEllipsisLoc(Loc);
2523
108k
  }
2524
2525
391k
  TypeLoc getPatternLoc() const {
2526
391k
    return getInnerTypeLoc();
2527
391k
  }
2528
2529
3.99M
  QualType getInnerType() const {
2530
3.99M
    return this->getTypePtr()->getPattern();
2531
3.99M
  }
2532
};
2533
2534
struct AtomicTypeLocInfo {
2535
  SourceLocation KWLoc, LParenLoc, RParenLoc;
2536
};
2537
2538
class AtomicTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, AtomicTypeLoc,
2539
                                             AtomicType, AtomicTypeLocInfo> {
2540
public:
2541
4.79k
  TypeLoc getValueLoc() const {
2542
4.79k
    return this->getInnerTypeLoc();
2543
4.79k
  }
2544
2545
13.4k
  SourceRange getLocalSourceRange() const {
2546
13.4k
    return SourceRange(getKWLoc(), getRParenLoc());
2547
13.4k
  }
2548
2549
15.2k
  SourceLocation getKWLoc() const {
2550
15.2k
    return this->getLocalData()->KWLoc;
2551
15.2k
  }
2552
2553
15.2k
  void setKWLoc(SourceLocation Loc) {
2554
15.2k
    this->getLocalData()->KWLoc = Loc;
2555
15.2k
  }
2556
2557
1.21k
  SourceLocation getLParenLoc() const {
2558
1.21k
    return this->getLocalData()->LParenLoc;
2559
1.21k
  }
2560
2561
15.2k
  void setLParenLoc(SourceLocation Loc) {
2562
15.2k
    this->getLocalData()->LParenLoc = Loc;
2563
15.2k
  }
2564
2565
14.6k
  SourceLocation getRParenLoc() const {
2566
14.6k
    return this->getLocalData()->RParenLoc;
2567
14.6k
  }
2568
2569
15.2k
  void setRParenLoc(SourceLocation Loc) {
2570
15.2k
    this->getLocalData()->RParenLoc = Loc;
2571
15.2k
  }
2572
2573
0
  SourceRange getParensRange() const {
2574
0
    return SourceRange(getLParenLoc(), getRParenLoc());
2575
0
  }
2576
2577
3.32k
  void setParensRange(SourceRange Range) {
2578
3.32k
    setLParenLoc(Range.getBegin());
2579
3.32k
    setRParenLoc(Range.getEnd());
2580
3.32k
  }
2581
2582
11.1k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
2583
11.1k
    setKWLoc(Loc);
2584
11.1k
    setLParenLoc(Loc);
2585
11.1k
    setRParenLoc(Loc);
2586
11.1k
  }
2587
2588
81.7k
  QualType getInnerType() const {
2589
81.7k
    return this->getTypePtr()->getValueType();
2590
81.7k
  }
2591
};
2592
2593
struct PipeTypeLocInfo {
2594
  SourceLocation KWLoc;
2595
};
2596
2597
class PipeTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, PipeTypeLoc, PipeType,
2598
                                           PipeTypeLocInfo> {
2599
public:
2600
2
  TypeLoc getValueLoc() const { return this->getInnerTypeLoc(); }
2601
2602
6
  SourceRange getLocalSourceRange() const { return SourceRange(getKWLoc()); }
2603
2604
21
  SourceLocation getKWLoc() const { return this->getLocalData()->KWLoc; }
2605
261
  void setKWLoc(SourceLocation Loc) { this->getLocalData()->KWLoc = Loc; }
2606
2607
0
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
2608
0
    setKWLoc(Loc);
2609
0
  }
2610
2611
1.09k
  QualType getInnerType() const { return this->getTypePtr()->getElementType(); }
2612
};
2613
2614
template <typename T>
2615
36.7M
inline T TypeLoc::getAsAdjusted() const {
2616
36.7M
  TypeLoc Cur = *this;
2617
36.7M
  while (!T::isKind(Cur)) {
2618
36.6M
    if (auto PTL = Cur.getAs<ParenTypeLoc>())
2619
144
      Cur = PTL.getInnerLoc();
2620
36.6M
    else if (auto ATL = Cur.getAs<AttributedTypeLoc>())
2621
52
      Cur = ATL.getModifiedLoc();
2622
36.6M
    else if (auto ATL = Cur.getAs<BTFTagAttributedTypeLoc>())
2623
0
      Cur = ATL.getWrappedLoc();
2624
36.6M
    else if (auto ETL = Cur.getAs<ElaboratedTypeLoc>())
2625
1.75k
      Cur = ETL.getNamedTypeLoc();
2626
36.6M
    else if (auto ATL = Cur.getAs<AdjustedTypeLoc>())
2627
0
      Cur = ATL.getOriginalLoc();
2628
36.6M
    else if (auto MQL = Cur.getAs<MacroQualifiedTypeLoc>())
2629
13.1k
      Cur = MQL.getInnerLoc();
2630
36.6M
    else
2631
36.6M
      break;
2632
36.6M
  }
2633
36.7M
  return Cur.getAs<T>();
2634
36.7M
}
clang::TypedefTypeLoc clang::TypeLoc::getAsAdjusted<clang::TypedefTypeLoc>() const
Line
Count
Source
2615
15.7k
inline T TypeLoc::getAsAdjusted() const {
2616
15.7k
  TypeLoc Cur = *this;
2617
15.8k
  while (!T::isKind(Cur)) {
2618
15.7k
    if (auto PTL = Cur.getAs<ParenTypeLoc>())
2619
0
      Cur = PTL.getInnerLoc();
2620
15.7k
    else if (auto ATL = Cur.getAs<AttributedTypeLoc>())
2621
4
      Cur = ATL.getModifiedLoc();
2622
15.7k
    else if (auto ATL = Cur.getAs<BTFTagAttributedTypeLoc>())
2623
0
      Cur = ATL.getWrappedLoc();
2624
15.7k
    else if (auto ETL = Cur.getAs<ElaboratedTypeLoc>())
2625
22
      Cur = ETL.getNamedTypeLoc();
2626
15.7k
    else if (auto ATL = Cur.getAs<AdjustedTypeLoc>())
2627
0
      Cur = ATL.getOriginalLoc();
2628
15.7k
    else if (auto MQL = Cur.getAs<MacroQualifiedTypeLoc>())
2629
0
      Cur = MQL.getInnerLoc();
2630
15.7k
    else
2631
15.7k
      break;
2632
15.7k
  }
2633
15.7k
  return Cur.getAs<T>();
2634
15.7k
}
clang::FunctionProtoTypeLoc clang::TypeLoc::getAsAdjusted<clang::FunctionProtoTypeLoc>() const
Line
Count
Source
2615
17.2k
inline T TypeLoc::getAsAdjusted() const {
2616
17.2k
  TypeLoc Cur = *this;
2617
17.3k
  while (!T::isKind(Cur)) {
2618
1.05k
    if (auto PTL = Cur.getAs<ParenTypeLoc>())
2619
0
      Cur = PTL.getInnerLoc();
2620
1.05k
    else if (auto ATL = Cur.getAs<AttributedTypeLoc>())
2621
47
      Cur = ATL.getModifiedLoc();
2622
1.00k
    else if (auto ATL = Cur.getAs<BTFTagAttributedTypeLoc>())
2623
0
      Cur = ATL.getWrappedLoc();
2624
1.00k
    else if (auto ETL = Cur.getAs<ElaboratedTypeLoc>())
2625
4
      Cur = ETL.getNamedTypeLoc();
2626
1.00k
    else if (auto ATL = Cur.getAs<AdjustedTypeLoc>())
2627
0
      Cur = ATL.getOriginalLoc();
2628
1.00k
    else if (auto MQL = Cur.getAs<MacroQualifiedTypeLoc>())
2629
1
      Cur = MQL.getInnerLoc();
2630
1.00k
    else
2631
1.00k
      break;
2632
1.05k
  }
2633
17.2k
  return Cur.getAs<T>();
2634
17.2k
}
clang::AttributedTypeLoc clang::TypeLoc::getAsAdjusted<clang::AttributedTypeLoc>() const
Line
Count
Source
2615
36.6M
inline T TypeLoc::getAsAdjusted() const {
2616
36.6M
  TypeLoc Cur = *this;
2617
36.6M
  while (!T::isKind(Cur)) {
2618
36.6M
    if (auto PTL = Cur.getAs<ParenTypeLoc>())
2619
144
      Cur = PTL.getInnerLoc();
2620
36.6M
    else if (auto ATL = Cur.getAs<AttributedTypeLoc>())
2621
0
      Cur = ATL.getModifiedLoc();
2622
36.6M
    else if (auto ATL = Cur.getAs<BTFTagAttributedTypeLoc>())
2623
0
      Cur = ATL.getWrappedLoc();
2624
36.6M
    else if (auto ETL = Cur.getAs<ElaboratedTypeLoc>())
2625
147
      Cur = ETL.getNamedTypeLoc();
2626
36.6M
    else if (auto ATL = Cur.getAs<AdjustedTypeLoc>())
2627
0
      Cur = ATL.getOriginalLoc();
2628
36.6M
    else if (auto MQL = Cur.getAs<MacroQualifiedTypeLoc>())
2629
13.1k
      Cur = MQL.getInnerLoc();
2630
36.6M
    else
2631
36.6M
      break;
2632
36.6M
  }
2633
36.6M
  return Cur.getAs<T>();
2634
36.6M
}
clang::TemplateSpecializationTypeLoc clang::TypeLoc::getAsAdjusted<clang::TemplateSpecializationTypeLoc>() const
Line
Count
Source
2615
1.58k
inline T TypeLoc::getAsAdjusted() const {
2616
1.58k
  TypeLoc Cur = *this;
2617
3.17k
  while (!T::isKind(Cur)) {
2618
1.58k
    if (auto PTL = Cur.getAs<ParenTypeLoc>())
2619
0
      Cur = PTL.getInnerLoc();
2620
1.58k
    else if (auto ATL = Cur.getAs<AttributedTypeLoc>())
2621
0
      Cur = ATL.getModifiedLoc();
2622
1.58k
    else if (auto ATL = Cur.getAs<BTFTagAttributedTypeLoc>())
2623
0
      Cur = ATL.getWrappedLoc();
2624
1.58k
    else if (auto ETL = Cur.getAs<ElaboratedTypeLoc>())
2625
1.58k
      Cur = ETL.getNamedTypeLoc();
2626
2
    else if (auto ATL = Cur.getAs<AdjustedTypeLoc>())
2627
0
      Cur = ATL.getOriginalLoc();
2628
2
    else if (auto MQL = Cur.getAs<MacroQualifiedTypeLoc>())
2629
0
      Cur = MQL.getInnerLoc();
2630
2
    else
2631
2
      break;
2632
1.58k
  }
2633
1.58k
  return Cur.getAs<T>();
2634
1.58k
}
clang::FunctionTypeLoc clang::TypeLoc::getAsAdjusted<clang::FunctionTypeLoc>() const
Line
Count
Source
2615
8
inline T TypeLoc::getAsAdjusted() const {
2616
8
  TypeLoc Cur = *this;
2617
9
  while (!T::isKind(Cur)) {
2618
1
    if (auto PTL = Cur.getAs<ParenTypeLoc>())
2619
0
      Cur = PTL.getInnerLoc();
2620
1
    else if (auto ATL = Cur.getAs<AttributedTypeLoc>())
2621
1
      Cur = ATL.getModifiedLoc();
2622
0
    else if (auto ATL = Cur.getAs<BTFTagAttributedTypeLoc>())
2623
0
      Cur = ATL.getWrappedLoc();
2624
0
    else if (auto ETL = Cur.getAs<ElaboratedTypeLoc>())
2625
0
      Cur = ETL.getNamedTypeLoc();
2626
0
    else if (auto ATL = Cur.getAs<AdjustedTypeLoc>())
2627
0
      Cur = ATL.getOriginalLoc();
2628
0
    else if (auto MQL = Cur.getAs<MacroQualifiedTypeLoc>())
2629
0
      Cur = MQL.getInnerLoc();
2630
0
    else
2631
0
      break;
2632
1
  }
2633
8
  return Cur.getAs<T>();
2634
8
}
2635
class BitIntTypeLoc final
2636
    : public InheritingConcreteTypeLoc<TypeSpecTypeLoc, BitIntTypeLoc,
2637
                                       BitIntType> {};
2638
class DependentBitIntTypeLoc final
2639
    : public InheritingConcreteTypeLoc<TypeSpecTypeLoc, DependentBitIntTypeLoc,
2640
                                       DependentBitIntType> {};
2641
2642
class ObjCProtocolLoc {
2643
  ObjCProtocolDecl *Protocol = nullptr;
2644
  SourceLocation Loc = SourceLocation();
2645
2646
public:
2647
  ObjCProtocolLoc(ObjCProtocolDecl *protocol, SourceLocation loc)
2648
4.93k
      : Protocol(protocol), Loc(loc) {}
2649
0
  ObjCProtocolDecl *getProtocol() const { return Protocol; }
2650
0
  SourceLocation getLocation() const { return Loc; }
2651
2652
  /// The source range is just the protocol name.
2653
0
  SourceRange getSourceRange() const LLVM_READONLY {
2654
0
    return SourceRange(Loc, Loc);
2655
0
  }
2656
};
2657
2658
} // namespace clang
2659
2660
#endif // LLVM_CLANG_AST_TYPELOC_H