Coverage Report

Created: 2021-08-24 07:12

/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/DeclarationName.h"
18
#include "clang/AST/NestedNameSpecifier.h"
19
#include "clang/AST/TemplateBase.h"
20
#include "clang/AST/Type.h"
21
#include "clang/Basic/LLVM.h"
22
#include "clang/Basic/SourceLocation.h"
23
#include "clang/Basic/Specifiers.h"
24
#include "llvm/ADT/ArrayRef.h"
25
#include "llvm/Support/Casting.h"
26
#include "llvm/Support/Compiler.h"
27
#include "llvm/Support/MathExtras.h"
28
#include <algorithm>
29
#include <cassert>
30
#include <cstdint>
31
#include <cstring>
32
33
namespace clang {
34
35
class Attr;
36
class ASTContext;
37
class CXXRecordDecl;
38
class ConceptDecl;
39
class Expr;
40
class ObjCInterfaceDecl;
41
class ObjCProtocolDecl;
42
class ObjCTypeParamDecl;
43
class ParmVarDecl;
44
class TemplateTypeParmDecl;
45
class UnqualTypeLoc;
46
class UnresolvedUsingTypenameDecl;
47
48
// Predeclare all the type nodes.
49
#define ABSTRACT_TYPELOC(Class, Base)
50
#define TYPELOC(Class, Base) \
51
  class Class##TypeLoc;
52
#include "clang/AST/TypeLocNodes.def"
53
54
/// Base wrapper for a particular "section" of type source info.
55
///
56
/// A client should use the TypeLoc subclasses through castAs()/getAs()
57
/// in order to get at the actual information.
58
class TypeLoc {
59
protected:
60
  // The correctness of this relies on the property that, for Type *Ty,
61
  //   QualType(Ty, 0).getAsOpaquePtr() == (void*) Ty
62
  const void *Ty = nullptr;
63
  void *Data = nullptr;
64
65
public:
66
2.97G
  TypeLoc() = default;
67
  TypeLoc(QualType ty, void *opaqueData)
68
1.11G
      : Ty(ty.getAsOpaquePtr()), Data(opaqueData) {}
69
  TypeLoc(const Type *ty, void *opaqueData)
70
76.4M
      : Ty(ty), Data(opaqueData) {}
71
72
  /// Convert to the specified TypeLoc type, asserting that this TypeLoc
73
  /// is of the desired type.
74
  ///
75
  /// \pre T::isKind(*this)
76
  template<typename T>
77
1.92G
  T castAs() const {
78
1.92G
    assert(T::isKind(*this));
79
0
    T t;
80
1.92G
    TypeLoc& tl = t;
81
1.92G
    tl = *this;
82
1.92G
    return t;
83
1.92G
  }
clang::UnqualTypeLoc clang::TypeLoc::castAs<clang::UnqualTypeLoc>() const
Line
Count
Source
77
184M
  T castAs() const {
78
184M
    assert(T::isKind(*this));
79
0
    T t;
80
184M
    TypeLoc& tl = t;
81
184M
    tl = *this;
82
184M
    return t;
83
184M
  }
clang::TemplateSpecializationTypeLoc clang::TypeLoc::castAs<clang::TemplateSpecializationTypeLoc>() const
Line
Count
Source
77
240M
  T castAs() const {
78
240M
    assert(T::isKind(*this));
79
0
    T t;
80
240M
    TypeLoc& tl = t;
81
240M
    tl = *this;
82
240M
    return t;
83
240M
  }
clang::QualifiedTypeLoc clang::TypeLoc::castAs<clang::QualifiedTypeLoc>() const
Line
Count
Source
77
43.7M
  T castAs() const {
78
43.7M
    assert(T::isKind(*this));
79
0
    T t;
80
43.7M
    TypeLoc& tl = t;
81
43.7M
    tl = *this;
82
43.7M
    return t;
83
43.7M
  }
clang::AdjustedTypeLoc clang::TypeLoc::castAs<clang::AdjustedTypeLoc>() const
Line
Count
Source
77
69
  T castAs() const {
78
69
    assert(T::isKind(*this));
79
0
    T t;
80
69
    TypeLoc& tl = t;
81
69
    tl = *this;
82
69
    return t;
83
69
  }
clang::DecayedTypeLoc clang::TypeLoc::castAs<clang::DecayedTypeLoc>() const
Line
Count
Source
77
26.7k
  T castAs() const {
78
26.7k
    assert(T::isKind(*this));
79
0
    T t;
80
26.7k
    TypeLoc& tl = t;
81
26.7k
    tl = *this;
82
26.7k
    return t;
83
26.7k
  }
clang::ConstantArrayTypeLoc clang::TypeLoc::castAs<clang::ConstantArrayTypeLoc>() const
Line
Count
Source
77
2.06M
  T castAs() const {
78
2.06M
    assert(T::isKind(*this));
79
0
    T t;
80
2.06M
    TypeLoc& tl = t;
81
2.06M
    tl = *this;
82
2.06M
    return t;
83
2.06M
  }
clang::DependentSizedArrayTypeLoc clang::TypeLoc::castAs<clang::DependentSizedArrayTypeLoc>() const
Line
Count
Source
77
192k
  T castAs() const {
78
192k
    assert(T::isKind(*this));
79
0
    T t;
80
192k
    TypeLoc& tl = t;
81
192k
    tl = *this;
82
192k
    return t;
83
192k
  }
clang::IncompleteArrayTypeLoc clang::TypeLoc::castAs<clang::IncompleteArrayTypeLoc>() const
Line
Count
Source
77
471k
  T castAs() const {
78
471k
    assert(T::isKind(*this));
79
0
    T t;
80
471k
    TypeLoc& tl = t;
81
471k
    tl = *this;
82
471k
    return t;
83
471k
  }
clang::VariableArrayTypeLoc clang::TypeLoc::castAs<clang::VariableArrayTypeLoc>() const
Line
Count
Source
77
118k
  T castAs() const {
78
118k
    assert(T::isKind(*this));
79
0
    T t;
80
118k
    TypeLoc& tl = t;
81
118k
    tl = *this;
82
118k
    return t;
83
118k
  }
clang::AtomicTypeLoc clang::TypeLoc::castAs<clang::AtomicTypeLoc>() const
Line
Count
Source
77
39.2k
  T castAs() const {
78
39.2k
    assert(T::isKind(*this));
79
0
    T t;
80
39.2k
    TypeLoc& tl = t;
81
39.2k
    tl = *this;
82
39.2k
    return t;
83
39.2k
  }
clang::AttributedTypeLoc clang::TypeLoc::castAs<clang::AttributedTypeLoc>() const
Line
Count
Source
77
14.3M
  T castAs() const {
78
14.3M
    assert(T::isKind(*this));
79
0
    T t;
80
14.3M
    TypeLoc& tl = t;
81
14.3M
    tl = *this;
82
14.3M
    return t;
83
14.3M
  }
clang::BlockPointerTypeLoc clang::TypeLoc::castAs<clang::BlockPointerTypeLoc>() const
Line
Count
Source
77
506k
  T castAs() const {
78
506k
    assert(T::isKind(*this));
79
0
    T t;
80
506k
    TypeLoc& tl = t;
81
506k
    tl = *this;
82
506k
    return t;
83
506k
  }
clang::BuiltinTypeLoc clang::TypeLoc::castAs<clang::BuiltinTypeLoc>() const
Line
Count
Source
77
103M
  T castAs() const {
78
103M
    assert(T::isKind(*this));
79
0
    T t;
80
103M
    TypeLoc& tl = t;
81
103M
    tl = *this;
82
103M
    return t;
83
103M
  }
clang::ComplexTypeLoc clang::TypeLoc::castAs<clang::ComplexTypeLoc>() const
Line
Count
Source
77
90.6k
  T castAs() const {
78
90.6k
    assert(T::isKind(*this));
79
0
    T t;
80
90.6k
    TypeLoc& tl = t;
81
90.6k
    tl = *this;
82
90.6k
    return t;
83
90.6k
  }
clang::DecltypeTypeLoc clang::TypeLoc::castAs<clang::DecltypeTypeLoc>() const
Line
Count
Source
77
3.42M
  T castAs() const {
78
3.42M
    assert(T::isKind(*this));
79
0
    T t;
80
3.42M
    TypeLoc& tl = t;
81
3.42M
    tl = *this;
82
3.42M
    return t;
83
3.42M
  }
clang::AutoTypeLoc clang::TypeLoc::castAs<clang::AutoTypeLoc>() const
Line
Count
Source
77
1.23M
  T castAs() const {
78
1.23M
    assert(T::isKind(*this));
79
0
    T t;
80
1.23M
    TypeLoc& tl = t;
81
1.23M
    tl = *this;
82
1.23M
    return t;
83
1.23M
  }
clang::DeducedTemplateSpecializationTypeLoc clang::TypeLoc::castAs<clang::DeducedTemplateSpecializationTypeLoc>() const
Line
Count
Source
77
28.3k
  T castAs() const {
78
28.3k
    assert(T::isKind(*this));
79
0
    T t;
80
28.3k
    TypeLoc& tl = t;
81
28.3k
    tl = *this;
82
28.3k
    return t;
83
28.3k
  }
clang::DependentAddressSpaceTypeLoc clang::TypeLoc::castAs<clang::DependentAddressSpaceTypeLoc>() const
Line
Count
Source
77
659
  T castAs() const {
78
659
    assert(T::isKind(*this));
79
0
    T t;
80
659
    TypeLoc& tl = t;
81
659
    tl = *this;
82
659
    return t;
83
659
  }
clang::DependentExtIntTypeLoc clang::TypeLoc::castAs<clang::DependentExtIntTypeLoc>() const
Line
Count
Source
77
79
  T castAs() const {
78
79
    assert(T::isKind(*this));
79
0
    T t;
80
79
    TypeLoc& tl = t;
81
79
    tl = *this;
82
79
    return t;
83
79
  }
clang::DependentNameTypeLoc clang::TypeLoc::castAs<clang::DependentNameTypeLoc>() const
Line
Count
Source
77
25.1M
  T castAs() const {
78
25.1M
    assert(T::isKind(*this));
79
0
    T t;
80
25.1M
    TypeLoc& tl = t;
81
25.1M
    tl = *this;
82
25.1M
    return t;
83
25.1M
  }
clang::DependentSizedExtVectorTypeLoc clang::TypeLoc::castAs<clang::DependentSizedExtVectorTypeLoc>() const
Line
Count
Source
77
344
  T castAs() const {
78
344
    assert(T::isKind(*this));
79
0
    T t;
80
344
    TypeLoc& tl = t;
81
344
    tl = *this;
82
344
    return t;
83
344
  }
clang::DependentTemplateSpecializationTypeLoc clang::TypeLoc::castAs<clang::DependentTemplateSpecializationTypeLoc>() const
Line
Count
Source
77
4.16M
  T castAs() const {
78
4.16M
    assert(T::isKind(*this));
79
0
    T t;
80
4.16M
    TypeLoc& tl = t;
81
4.16M
    tl = *this;
82
4.16M
    return t;
83
4.16M
  }
clang::DependentVectorTypeLoc clang::TypeLoc::castAs<clang::DependentVectorTypeLoc>() const
Line
Count
Source
77
735
  T castAs() const {
78
735
    assert(T::isKind(*this));
79
0
    T t;
80
735
    TypeLoc& tl = t;
81
735
    tl = *this;
82
735
    return t;
83
735
  }
clang::ElaboratedTypeLoc clang::TypeLoc::castAs<clang::ElaboratedTypeLoc>() const
Line
Count
Source
77
19.6M
  T castAs() const {
78
19.6M
    assert(T::isKind(*this));
79
0
    T t;
80
19.6M
    TypeLoc& tl = t;
81
19.6M
    tl = *this;
82
19.6M
    return t;
83
19.6M
  }
clang::ExtIntTypeLoc clang::TypeLoc::castAs<clang::ExtIntTypeLoc>() const
Line
Count
Source
77
6.47k
  T castAs() const {
78
6.47k
    assert(T::isKind(*this));
79
0
    T t;
80
6.47k
    TypeLoc& tl = t;
81
6.47k
    tl = *this;
82
6.47k
    return t;
83
6.47k
  }
clang::FunctionNoProtoTypeLoc clang::TypeLoc::castAs<clang::FunctionNoProtoTypeLoc>() const
Line
Count
Source
77
613k
  T castAs() const {
78
613k
    assert(T::isKind(*this));
79
0
    T t;
80
613k
    TypeLoc& tl = t;
81
613k
    tl = *this;
82
613k
    return t;
83
613k
  }
clang::FunctionProtoTypeLoc clang::TypeLoc::castAs<clang::FunctionProtoTypeLoc>() const
Line
Count
Source
77
191M
  T castAs() const {
78
191M
    assert(T::isKind(*this));
79
0
    T t;
80
191M
    TypeLoc& tl = t;
81
191M
    tl = *this;
82
191M
    return t;
83
191M
  }
clang::InjectedClassNameTypeLoc clang::TypeLoc::castAs<clang::InjectedClassNameTypeLoc>() const
Line
Count
Source
77
10.1M
  T castAs() const {
78
10.1M
    assert(T::isKind(*this));
79
0
    T t;
80
10.1M
    TypeLoc& tl = t;
81
10.1M
    tl = *this;
82
10.1M
    return t;
83
10.1M
  }
clang::MacroQualifiedTypeLoc clang::TypeLoc::castAs<clang::MacroQualifiedTypeLoc>() const
Line
Count
Source
77
801k
  T castAs() const {
78
801k
    assert(T::isKind(*this));
79
0
    T t;
80
801k
    TypeLoc& tl = t;
81
801k
    tl = *this;
82
801k
    return t;
83
801k
  }
clang::ConstantMatrixTypeLoc clang::TypeLoc::castAs<clang::ConstantMatrixTypeLoc>() const
Line
Count
Source
77
4.45k
  T castAs() const {
78
4.45k
    assert(T::isKind(*this));
79
0
    T t;
80
4.45k
    TypeLoc& tl = t;
81
4.45k
    tl = *this;
82
4.45k
    return t;
83
4.45k
  }
clang::DependentSizedMatrixTypeLoc clang::TypeLoc::castAs<clang::DependentSizedMatrixTypeLoc>() const
Line
Count
Source
77
2.70k
  T castAs() const {
78
2.70k
    assert(T::isKind(*this));
79
0
    T t;
80
2.70k
    TypeLoc& tl = t;
81
2.70k
    tl = *this;
82
2.70k
    return t;
83
2.70k
  }
clang::MemberPointerTypeLoc clang::TypeLoc::castAs<clang::MemberPointerTypeLoc>() const
Line
Count
Source
77
407k
  T castAs() const {
78
407k
    assert(T::isKind(*this));
79
0
    T t;
80
407k
    TypeLoc& tl = t;
81
407k
    tl = *this;
82
407k
    return t;
83
407k
  }
clang::ObjCObjectPointerTypeLoc clang::TypeLoc::castAs<clang::ObjCObjectPointerTypeLoc>() const
Line
Count
Source
77
10.1M
  T castAs() const {
78
10.1M
    assert(T::isKind(*this));
79
0
    T t;
80
10.1M
    TypeLoc& tl = t;
81
10.1M
    tl = *this;
82
10.1M
    return t;
83
10.1M
  }
clang::ObjCObjectTypeLoc clang::TypeLoc::castAs<clang::ObjCObjectTypeLoc>() const
Line
Count
Source
77
3.53M
  T castAs() const {
78
3.53M
    assert(T::isKind(*this));
79
0
    T t;
80
3.53M
    TypeLoc& tl = t;
81
3.53M
    tl = *this;
82
3.53M
    return t;
83
3.53M
  }
clang::ObjCInterfaceTypeLoc clang::TypeLoc::castAs<clang::ObjCInterfaceTypeLoc>() const
Line
Count
Source
77
12.9M
  T castAs() const {
78
12.9M
    assert(T::isKind(*this));
79
0
    T t;
80
12.9M
    TypeLoc& tl = t;
81
12.9M
    tl = *this;
82
12.9M
    return t;
83
12.9M
  }
clang::ObjCTypeParamTypeLoc clang::TypeLoc::castAs<clang::ObjCTypeParamTypeLoc>() const
Line
Count
Source
77
769k
  T castAs() const {
78
769k
    assert(T::isKind(*this));
79
0
    T t;
80
769k
    TypeLoc& tl = t;
81
769k
    tl = *this;
82
769k
    return t;
83
769k
  }
clang::PackExpansionTypeLoc clang::TypeLoc::castAs<clang::PackExpansionTypeLoc>() const
Line
Count
Source
77
5.43M
  T castAs() const {
78
5.43M
    assert(T::isKind(*this));
79
0
    T t;
80
5.43M
    TypeLoc& tl = t;
81
5.43M
    tl = *this;
82
5.43M
    return t;
83
5.43M
  }
clang::ParenTypeLoc clang::TypeLoc::castAs<clang::ParenTypeLoc>() const
Line
Count
Source
77
2.86M
  T castAs() const {
78
2.86M
    assert(T::isKind(*this));
79
0
    T t;
80
2.86M
    TypeLoc& tl = t;
81
2.86M
    tl = *this;
82
2.86M
    return t;
83
2.86M
  }
clang::PipeTypeLoc clang::TypeLoc::castAs<clang::PipeTypeLoc>() const
Line
Count
Source
77
1.03k
  T castAs() const {
78
1.03k
    assert(T::isKind(*this));
79
0
    T t;
80
1.03k
    TypeLoc& tl = t;
81
1.03k
    tl = *this;
82
1.03k
    return t;
83
1.03k
  }
clang::PointerTypeLoc clang::TypeLoc::castAs<clang::PointerTypeLoc>() const
Line
Count
Source
77
57.4M
  T castAs() const {
78
57.4M
    assert(T::isKind(*this));
79
0
    T t;
80
57.4M
    TypeLoc& tl = t;
81
57.4M
    tl = *this;
82
57.4M
    return t;
83
57.4M
  }
clang::LValueReferenceTypeLoc clang::TypeLoc::castAs<clang::LValueReferenceTypeLoc>() const
Line
Count
Source
77
24.5M
  T castAs() const {
78
24.5M
    assert(T::isKind(*this));
79
0
    T t;
80
24.5M
    TypeLoc& tl = t;
81
24.5M
    tl = *this;
82
24.5M
    return t;
83
24.5M
  }
clang::RValueReferenceTypeLoc clang::TypeLoc::castAs<clang::RValueReferenceTypeLoc>() const
Line
Count
Source
77
6.69M
  T castAs() const {
78
6.69M
    assert(T::isKind(*this));
79
0
    T t;
80
6.69M
    TypeLoc& tl = t;
81
6.69M
    tl = *this;
82
6.69M
    return t;
83
6.69M
  }
clang::SubstTemplateTypeParmPackTypeLoc clang::TypeLoc::castAs<clang::SubstTemplateTypeParmPackTypeLoc>() const
Line
Count
Source
77
437k
  T castAs() const {
78
437k
    assert(T::isKind(*this));
79
0
    T t;
80
437k
    TypeLoc& tl = t;
81
437k
    tl = *this;
82
437k
    return t;
83
437k
  }
clang::SubstTemplateTypeParmTypeLoc clang::TypeLoc::castAs<clang::SubstTemplateTypeParmTypeLoc>() const
Line
Count
Source
77
71.3M
  T castAs() const {
78
71.3M
    assert(T::isKind(*this));
79
0
    T t;
80
71.3M
    TypeLoc& tl = t;
81
71.3M
    tl = *this;
82
71.3M
    return t;
83
71.3M
  }
clang::EnumTypeLoc clang::TypeLoc::castAs<clang::EnumTypeLoc>() const
Line
Count
Source
77
4.02M
  T castAs() const {
78
4.02M
    assert(T::isKind(*this));
79
0
    T t;
80
4.02M
    TypeLoc& tl = t;
81
4.02M
    tl = *this;
82
4.02M
    return t;
83
4.02M
  }
clang::RecordTypeLoc clang::TypeLoc::castAs<clang::RecordTypeLoc>() const
Line
Count
Source
77
39.2M
  T castAs() const {
78
39.2M
    assert(T::isKind(*this));
79
0
    T t;
80
39.2M
    TypeLoc& tl = t;
81
39.2M
    tl = *this;
82
39.2M
    return t;
83
39.2M
  }
clang::TemplateTypeParmTypeLoc clang::TypeLoc::castAs<clang::TemplateTypeParmTypeLoc>() const
Line
Count
Source
77
132M
  T castAs() const {
78
132M
    assert(T::isKind(*this));
79
0
    T t;
80
132M
    TypeLoc& tl = t;
81
132M
    tl = *this;
82
132M
    return t;
83
132M
  }
clang::TypeOfExprTypeLoc clang::TypeLoc::castAs<clang::TypeOfExprTypeLoc>() const
Line
Count
Source
77
39.3k
  T castAs() const {
78
39.3k
    assert(T::isKind(*this));
79
0
    T t;
80
39.3k
    TypeLoc& tl = t;
81
39.3k
    tl = *this;
82
39.3k
    return t;
83
39.3k
  }
clang::TypeOfTypeLoc clang::TypeLoc::castAs<clang::TypeOfTypeLoc>() const
Line
Count
Source
77
633
  T castAs() const {
78
633
    assert(T::isKind(*this));
79
0
    T t;
80
633
    TypeLoc& tl = t;
81
633
    tl = *this;
82
633
    return t;
83
633
  }
clang::TypedefTypeLoc clang::TypeLoc::castAs<clang::TypedefTypeLoc>() const
Line
Count
Source
77
654M
  T castAs() const {
78
654M
    assert(T::isKind(*this));
79
0
    T t;
80
654M
    TypeLoc& tl = t;
81
654M
    tl = *this;
82
654M
    return t;
83
654M
  }
clang::UnaryTransformTypeLoc clang::TypeLoc::castAs<clang::UnaryTransformTypeLoc>() const
Line
Count
Source
77
19.3k
  T castAs() const {
78
19.3k
    assert(T::isKind(*this));
79
0
    T t;
80
19.3k
    TypeLoc& tl = t;
81
19.3k
    tl = *this;
82
19.3k
    return t;
83
19.3k
  }
clang::UnresolvedUsingTypeLoc clang::TypeLoc::castAs<clang::UnresolvedUsingTypeLoc>() const
Line
Count
Source
77
16.1k
  T castAs() const {
78
16.1k
    assert(T::isKind(*this));
79
0
    T t;
80
16.1k
    TypeLoc& tl = t;
81
16.1k
    tl = *this;
82
16.1k
    return t;
83
16.1k
  }
clang::VectorTypeLoc clang::TypeLoc::castAs<clang::VectorTypeLoc>() const
Line
Count
Source
77
5.06M
  T castAs() const {
78
5.06M
    assert(T::isKind(*this));
79
0
    T t;
80
5.06M
    TypeLoc& tl = t;
81
5.06M
    tl = *this;
82
5.06M
    return t;
83
5.06M
  }
clang::ExtVectorTypeLoc clang::TypeLoc::castAs<clang::ExtVectorTypeLoc>() const
Line
Count
Source
77
24.4k
  T castAs() const {
78
24.4k
    assert(T::isKind(*this));
79
0
    T t;
80
24.4k
    TypeLoc& tl = t;
81
24.4k
    tl = *this;
82
24.4k
    return t;
83
24.4k
  }
clang::ArrayTypeLoc clang::TypeLoc::castAs<clang::ArrayTypeLoc>() const
Line
Count
Source
77
331k
  T castAs() const {
78
331k
    assert(T::isKind(*this));
79
0
    T t;
80
331k
    TypeLoc& tl = t;
81
331k
    tl = *this;
82
331k
    return t;
83
331k
  }
clang::TypeLoc clang::TypeLoc::castAs<clang::TypeLoc>() const
Line
Count
Source
77
5.44M
  T castAs() const {
78
5.44M
    assert(T::isKind(*this));
79
0
    T t;
80
5.44M
    TypeLoc& tl = t;
81
5.44M
    tl = *this;
82
5.44M
    return t;
83
5.44M
  }
clang::DeducedTypeLoc clang::TypeLoc::castAs<clang::DeducedTypeLoc>() const
Line
Count
Source
77
814
  T castAs() const {
78
814
    assert(T::isKind(*this));
79
0
    T t;
80
814
    TypeLoc& tl = t;
81
814
    tl = *this;
82
814
    return t;
83
814
  }
clang::FunctionTypeLoc clang::TypeLoc::castAs<clang::FunctionTypeLoc>() const
Line
Count
Source
77
32.3M
  T castAs() const {
78
32.3M
    assert(T::isKind(*this));
79
0
    T t;
80
32.3M
    TypeLoc& tl = t;
81
32.3M
    tl = *this;
82
32.3M
    return t;
83
32.3M
  }
clang::MatrixTypeLoc clang::TypeLoc::castAs<clang::MatrixTypeLoc>() const
Line
Count
Source
77
575
  T castAs() const {
78
575
    assert(T::isKind(*this));
79
0
    T t;
80
575
    TypeLoc& tl = t;
81
575
    tl = *this;
82
575
    return t;
83
575
  }
clang::ReferenceTypeLoc clang::TypeLoc::castAs<clang::ReferenceTypeLoc>() const
Line
Count
Source
77
2.61k
  T castAs() const {
78
2.61k
    assert(T::isKind(*this));
79
0
    T t;
80
2.61k
    TypeLoc& tl = t;
81
2.61k
    tl = *this;
82
2.61k
    return t;
83
2.61k
  }
clang::TagTypeLoc clang::TypeLoc::castAs<clang::TagTypeLoc>() const
Line
Count
Source
77
1.89M
  T castAs() const {
78
1.89M
    assert(T::isKind(*this));
79
0
    T t;
80
1.89M
    TypeLoc& tl = t;
81
1.89M
    tl = *this;
82
1.89M
    return t;
83
1.89M
  }
clang::TypeSpecTypeLoc clang::TypeLoc::castAs<clang::TypeSpecTypeLoc>() const
Line
Count
Source
77
1.36M
  T castAs() const {
78
1.36M
    assert(T::isKind(*this));
79
0
    T t;
80
1.36M
    TypeLoc& tl = t;
81
1.36M
    tl = *this;
82
1.36M
    return t;
83
1.36M
  }
84
85
  /// Convert to the specified TypeLoc type, returning a null TypeLoc if
86
  /// this TypeLoc is not of the desired type.
87
  template<typename T>
88
652M
  T getAs() const {
89
652M
    if (!T::isKind(*this))
90
642M
      return {};
91
10.3M
    T t;
92
10.3M
    TypeLoc& tl = t;
93
10.3M
    tl = *this;
94
10.3M
    return t;
95
652M
  }
clang::QualifiedTypeLoc clang::TypeLoc::getAs<clang::QualifiedTypeLoc>() const
Line
Count
Source
88
189M
  T getAs() const {
89
189M
    if (!T::isKind(*this))
90
184M
      return {};
91
5.29M
    T t;
92
5.29M
    TypeLoc& tl = t;
93
5.29M
    tl = *this;
94
5.29M
    return t;
95
189M
  }
clang::PointerTypeLoc clang::TypeLoc::getAs<clang::PointerTypeLoc>() const
Line
Count
Source
88
15.7k
  T getAs() const {
89
15.7k
    if (!T::isKind(*this))
90
1.34k
      return {};
91
14.4k
    T t;
92
14.4k
    TypeLoc& tl = t;
93
14.4k
    tl = *this;
94
14.4k
    return t;
95
15.7k
  }
clang::ReferenceTypeLoc clang::TypeLoc::getAs<clang::ReferenceTypeLoc>() const
Line
Count
Source
88
1.06k
  T getAs() const {
89
1.06k
    if (!T::isKind(*this))
90
1.04k
      return {};
91
18
    T t;
92
18
    TypeLoc& tl = t;
93
18
    tl = *this;
94
18
    return t;
95
1.06k
  }
clang::BlockPointerTypeLoc clang::TypeLoc::getAs<clang::BlockPointerTypeLoc>() const
Line
Count
Source
88
698
  T getAs() const {
89
698
    if (!T::isKind(*this))
90
601
      return {};
91
97
    T t;
92
97
    TypeLoc& tl = t;
93
97
    tl = *this;
94
97
    return t;
95
698
  }
clang::MemberPointerTypeLoc clang::TypeLoc::getAs<clang::MemberPointerTypeLoc>() const
Line
Count
Source
88
596
  T getAs() const {
89
596
    if (!T::isKind(*this))
90
590
      return {};
91
6
    T t;
92
6
    TypeLoc& tl = t;
93
6
    tl = *this;
94
6
    return t;
95
596
  }
clang::TemplateSpecializationTypeLoc clang::TypeLoc::getAs<clang::TemplateSpecializationTypeLoc>() const
Line
Count
Source
88
51.9k
  T getAs() const {
89
51.9k
    if (!T::isKind(*this))
90
348
      return {};
91
51.6k
    T t;
92
51.6k
    TypeLoc& tl = t;
93
51.6k
    tl = *this;
94
51.6k
    return t;
95
51.9k
  }
clang::FunctionTypeLoc clang::TypeLoc::getAs<clang::FunctionTypeLoc>() const
Line
Count
Source
88
18.0k
  T getAs() const {
89
18.0k
    if (!T::isKind(*this))
90
384
      return {};
91
17.7k
    T t;
92
17.7k
    TypeLoc& tl = t;
93
17.7k
    tl = *this;
94
17.7k
    return t;
95
18.0k
  }
clang::ParenTypeLoc clang::TypeLoc::getAs<clang::ParenTypeLoc>() const
Line
Count
Source
88
32.0M
  T getAs() const {
89
32.0M
    if (!T::isKind(*this))
90
32.0M
      return {};
91
292
    T t;
92
292
    TypeLoc& tl = t;
93
292
    tl = *this;
94
292
    return t;
95
32.0M
  }
clang::AttributedTypeLoc clang::TypeLoc::getAs<clang::AttributedTypeLoc>() const
Line
Count
Source
88
109M
  T getAs() const {
89
109M
    if (!T::isKind(*this))
90
108M
      return {};
91
1.55M
    T t;
92
1.55M
    TypeLoc& tl = t;
93
1.55M
    tl = *this;
94
1.55M
    return t;
95
109M
  }
clang::ElaboratedTypeLoc clang::TypeLoc::getAs<clang::ElaboratedTypeLoc>() const
Line
Count
Source
88
32.1M
  T getAs() const {
89
32.1M
    if (!T::isKind(*this))
90
32.1M
      return {};
91
795
    T t;
92
795
    TypeLoc& tl = t;
93
795
    tl = *this;
94
795
    return t;
95
32.1M
  }
clang::AdjustedTypeLoc clang::TypeLoc::getAs<clang::AdjustedTypeLoc>() const
Line
Count
Source
88
75.8M
  T getAs() const {
89
75.8M
    if (!T::isKind(*this))
90
75.8M
      return {};
91
0
    T t;
92
0
    TypeLoc& tl = t;
93
0
    tl = *this;
94
0
    return t;
95
75.8M
  }
clang::MacroQualifiedTypeLoc clang::TypeLoc::getAs<clang::MacroQualifiedTypeLoc>() const
Line
Count
Source
88
75.8M
  T getAs() const {
89
75.8M
    if (!T::isKind(*this))
90
75.8M
      return {};
91
80.5k
    T t;
92
80.5k
    TypeLoc& tl = t;
93
80.5k
    tl = *this;
94
80.5k
    return t;
95
75.8M
  }
clang::FunctionProtoTypeLoc clang::TypeLoc::getAs<clang::FunctionProtoTypeLoc>() const
Line
Count
Source
88
3.23M
  T getAs() const {
89
3.23M
    if (!T::isKind(*this))
90
1.38k
      return {};
91
3.23M
    T t;
92
3.23M
    TypeLoc& tl = t;
93
3.23M
    tl = *this;
94
3.23M
    return t;
95
3.23M
  }
clang::AtomicTypeLoc clang::TypeLoc::getAs<clang::AtomicTypeLoc>() const
Line
Count
Source
88
43.9M
  T getAs() const {
89
43.9M
    if (!T::isKind(*this))
90
43.9M
      return {};
91
14
    T t;
92
14
    TypeLoc& tl = t;
93
14
    tl = *this;
94
14
    return t;
95
43.9M
  }
clang::AutoTypeLoc clang::TypeLoc::getAs<clang::AutoTypeLoc>() const
Line
Count
Source
88
240
  T getAs() const {
89
240
    if (!T::isKind(*this))
90
0
      return {};
91
240
    T t;
92
240
    TypeLoc& tl = t;
93
240
    tl = *this;
94
240
    return t;
95
240
  }
clang::ConstantArrayTypeLoc clang::TypeLoc::getAs<clang::ConstantArrayTypeLoc>() const
Line
Count
Source
88
16
  T getAs() const {
89
16
    if (!T::isKind(*this))
90
1
      return {};
91
15
    T t;
92
15
    TypeLoc& tl = t;
93
15
    tl = *this;
94
15
    return t;
95
16
  }
clang::TypedefTypeLoc clang::TypeLoc::getAs<clang::TypedefTypeLoc>() const
Line
Count
Source
88
1.26k
  T getAs() const {
89
1.26k
    if (!T::isKind(*this))
90
1.23k
      return {};
91
31
    T t;
92
31
    TypeLoc& tl = t;
93
31
    tl = *this;
94
31
    return t;
95
1.26k
  }
clang::VariableArrayTypeLoc clang::TypeLoc::getAs<clang::VariableArrayTypeLoc>() const
Line
Count
Source
88
276
  T getAs() const {
89
276
    if (!T::isKind(*this))
90
273
      return {};
91
3
    T t;
92
3
    TypeLoc& tl = t;
93
3
    tl = *this;
94
3
    return t;
95
276
  }
clang::FunctionNoProtoTypeLoc clang::TypeLoc::getAs<clang::FunctionNoProtoTypeLoc>() const
Line
Count
Source
88
214
  T getAs() const {
89
214
    if (!T::isKind(*this))
90
5
      return {};
91
209
    T t;
92
209
    TypeLoc& tl = t;
93
209
    tl = *this;
94
209
    return t;
95
214
  }
clang::DecayedTypeLoc clang::TypeLoc::getAs<clang::DecayedTypeLoc>() const
Line
Count
Source
88
6
  T getAs() const {
89
6
    if (!T::isKind(*this))
90
6
      return {};
91
0
    T t;
92
0
    TypeLoc& tl = t;
93
0
    tl = *this;
94
0
    return t;
95
6
  }
clang::ArrayTypeLoc clang::TypeLoc::getAs<clang::ArrayTypeLoc>() const
Line
Count
Source
88
517
  T getAs() const {
89
517
    if (!T::isKind(*this))
90
507
      return {};
91
10
    T t;
92
10
    TypeLoc& tl = t;
93
10
    tl = *this;
94
10
    return t;
95
517
  }
clang::PackExpansionTypeLoc clang::TypeLoc::getAs<clang::PackExpansionTypeLoc>() const
Line
Count
Source
88
2.03M
  T getAs() const {
89
2.03M
    if (!T::isKind(*this))
90
1.99M
      return {};
91
43.9k
    T t;
92
43.9k
    TypeLoc& tl = t;
93
43.9k
    tl = *this;
94
43.9k
    return t;
95
2.03M
  }
clang::IncompleteArrayTypeLoc clang::TypeLoc::getAs<clang::IncompleteArrayTypeLoc>() const
Line
Count
Source
88
44
  T getAs() const {
89
44
    if (!T::isKind(*this))
90
14
      return {};
91
30
    T t;
92
30
    TypeLoc& tl = t;
93
30
    tl = *this;
94
30
    return t;
95
44
  }
clang::InjectedClassNameTypeLoc clang::TypeLoc::getAs<clang::InjectedClassNameTypeLoc>() const
Line
Count
Source
88
29
  T getAs() const {
89
29
    if (!T::isKind(*this))
90
28
      return {};
91
1
    T t;
92
1
    TypeLoc& tl = t;
93
1
    tl = *this;
94
1
    return t;
95
29
  }
clang::RecordTypeLoc clang::TypeLoc::getAs<clang::RecordTypeLoc>() const
Line
Count
Source
88
28
  T getAs() const {
89
28
    if (!T::isKind(*this))
90
4
      return {};
91
24
    T t;
92
24
    TypeLoc& tl = t;
93
24
    tl = *this;
94
24
    return t;
95
28
  }
clang::DeducedTemplateSpecializationTypeLoc clang::TypeLoc::getAs<clang::DeducedTemplateSpecializationTypeLoc>() const
Line
Count
Source
88
104k
  T getAs() const {
89
104k
    if (!T::isKind(*this))
90
103k
      return {};
91
414
    T t;
92
414
    TypeLoc& tl = t;
93
414
    tl = *this;
94
414
    return t;
95
104k
  }
clang::DependentAddressSpaceTypeLoc clang::TypeLoc::getAs<clang::DependentAddressSpaceTypeLoc>() const
Line
Count
Source
88
43.8M
  T getAs() const {
89
43.8M
    if (!T::isKind(*this))
90
43.8M
      return {};
91
1
    T t;
92
1
    TypeLoc& tl = t;
93
1
    tl = *this;
94
1
    return t;
95
43.8M
  }
clang::MatrixTypeLoc clang::TypeLoc::getAs<clang::MatrixTypeLoc>() const
Line
Count
Source
88
43.8M
  T getAs() const {
89
43.8M
    if (!T::isKind(*this))
90
43.8M
      return {};
91
0
    T t;
92
0
    TypeLoc& tl = t;
93
0
    tl = *this;
94
0
    return t;
95
43.8M
  }
clang::ObjCObjectPointerTypeLoc clang::TypeLoc::getAs<clang::ObjCObjectPointerTypeLoc>() const
Line
Count
Source
88
150k
  T getAs() const {
89
150k
    if (!T::isKind(*this))
90
134k
      return {};
91
15.5k
    T t;
92
15.5k
    TypeLoc& tl = t;
93
15.5k
    tl = *this;
94
15.5k
    return t;
95
150k
  }
clang::ObjCTypeParamTypeLoc clang::TypeLoc::getAs<clang::ObjCTypeParamTypeLoc>() const
Line
Count
Source
88
150k
  T getAs() const {
89
150k
    if (!T::isKind(*this))
90
148k
      return {};
91
1.74k
    T t;
92
1.74k
    TypeLoc& tl = t;
93
1.74k
    tl = *this;
94
1.74k
    return t;
95
150k
  }
clang::DependentTemplateSpecializationTypeLoc clang::TypeLoc::getAs<clang::DependentTemplateSpecializationTypeLoc>() const
Line
Count
Source
88
169
  T getAs() const {
89
169
    if (!T::isKind(*this))
90
164
      return {};
91
5
    T t;
92
5
    TypeLoc& tl = t;
93
5
    tl = *this;
94
5
    return t;
95
169
  }
clang::DependentNameTypeLoc clang::TypeLoc::getAs<clang::DependentNameTypeLoc>() const
Line
Count
Source
88
3
  T getAs() const {
89
3
    if (!T::isKind(*this))
90
3
      return {};
91
0
    T t;
92
0
    TypeLoc& tl = t;
93
0
    tl = *this;
94
0
    return t;
95
3
  }
96
97
  /// Convert to the specified TypeLoc type, returning a null TypeLoc if
98
  /// this TypeLoc is not of the desired type. It will consider type
99
  /// adjustments from a type that was written as a T to another type that is
100
  /// still canonically a T (ignores parens, attributes, elaborated types, etc).
101
  template <typename T>
102
  T getAsAdjusted() const;
103
104
  /// The kinds of TypeLocs.  Equivalent to the Type::TypeClass enum,
105
  /// except it also defines a Qualified enum that corresponds to the
106
  /// QualifiedLoc class.
107
  enum TypeLocClass {
108
#define ABSTRACT_TYPE(Class, Base)
109
#define TYPE(Class, Base) \
110
    Class = Type::Class,
111
#include "clang/AST/TypeNodes.inc"
112
    Qualified
113
  };
114
115
1.58G
  TypeLocClass getTypeLocClass() const {
116
1.58G
    if (getType().hasLocalQualifiers()) 
return Qualified45.8M
;
117
1.53G
    return (TypeLocClass) getType()->getTypeClass();
118
1.58G
  }
119
120
837M
  bool isNull() const { return !Ty; }
121
691M
  explicit operator bool() const { return Ty; }
122
123
  /// Returns the size of type source info data block for the given type.
124
  static unsigned getFullDataSizeForType(QualType Ty);
125
126
  /// Returns the alignment of type source info data block for
127
  /// the given type.
128
  static unsigned getLocalAlignmentForType(QualType Ty);
129
130
  /// Get the type for which this source info wrapper provides
131
  /// information.
132
6.07G
  QualType getType() const {
133
6.07G
    return QualType::getFromOpaquePtr(Ty);
134
6.07G
  }
135
136
2.22G
  const Type *getTypePtr() const {
137
2.22G
    return QualType::getFromOpaquePtr(Ty).getTypePtr();
138
2.22G
  }
139
140
  /// Get the pointer where source information is stored.
141
22.3M
  void *getOpaqueData() const {
142
22.3M
    return Data;
143
22.3M
  }
144
145
  /// Get the begin source location.
146
  SourceLocation getBeginLoc() const;
147
148
  /// Get the end source location.
149
  SourceLocation getEndLoc() const;
150
151
  /// Get the full source range.
152
15.6M
  SourceRange getSourceRange() const LLVM_READONLY {
153
15.6M
    return SourceRange(getBeginLoc(), getEndLoc());
154
15.6M
  }
155
156
157
  /// Get the local source range.
158
216M
  SourceRange getLocalSourceRange() const {
159
216M
    return getLocalSourceRangeImpl(*this);
160
216M
  }
161
162
  /// Returns the size of the type source info data block.
163
15.2M
  unsigned getFullDataSize() const {
164
15.2M
    return getFullDataSizeForType(getType());
165
15.2M
  }
166
167
  /// Get the next TypeLoc pointed by this TypeLoc, e.g for "int*" the
168
  /// TypeLoc is a PointerLoc and next TypeLoc is for "int".
169
469M
  TypeLoc getNextTypeLoc() const {
170
469M
    return getNextTypeLocImpl(*this);
171
469M
  }
172
173
  /// Skips past any qualifiers, if this is qualified.
174
  UnqualTypeLoc getUnqualifiedLoc() const; // implemented in this header
175
176
  TypeLoc IgnoreParens() const;
177
178
  /// Find a type with the location of an explicit type qualifier.
179
  ///
180
  /// The result, if non-null, will be one of:
181
  ///   QualifiedTypeLoc
182
  ///   AtomicTypeLoc
183
  ///   AttributedTypeLoc, for those type attributes that behave as qualifiers
184
  TypeLoc findExplicitQualifierLoc() const;
185
186
  /// Get the typeloc of an AutoType whose type will be deduced for a variable
187
  /// with an initializer of this type. This looks through declarators like
188
  /// pointer types, but not through decltype or typedefs.
189
  AutoTypeLoc getContainedAutoTypeLoc() const;
190
191
  /// Initializes this to state that every location in this
192
  /// type is the given location.
193
  ///
194
  /// This method exists to provide a simple transition for code that
195
  /// relies on location-less types.
196
14.1M
  void initialize(ASTContext &Context, SourceLocation Loc) const {
197
14.1M
    initializeImpl(Context, *this, Loc);
198
14.1M
  }
199
200
  /// Initializes this by copying its information from another
201
  /// TypeLoc of the same type.
202
34.8k
  void initializeFullCopy(TypeLoc Other) {
203
34.8k
    assert(getType() == Other.getType());
204
0
    copy(Other);
205
34.8k
  }
206
207
  /// Initializes this by copying its information from another
208
  /// TypeLoc of the same type.  The given size must be the full data
209
  /// size.
210
713
  void initializeFullCopy(TypeLoc Other, unsigned Size) {
211
713
    assert(getType() == Other.getType());
212
0
    assert(getFullDataSize() == Size);
213
0
    copy(Other);
214
713
  }
215
216
  /// Copies the other type loc into this one.
217
  void copy(TypeLoc other);
218
219
22.4k
  friend bool operator==(const TypeLoc &LHS, const TypeLoc &RHS) {
220
22.4k
    return LHS.Ty == RHS.Ty && 
LHS.Data == RHS.Data7.55k
;
221
22.4k
  }
222
223
1.17k
  friend bool operator!=(const TypeLoc &LHS, const TypeLoc &RHS) {
224
1.17k
    return !(LHS == RHS);
225
1.17k
  }
226
227
  /// Find the location of the nullability specifier (__nonnull,
228
  /// __nullable, or __null_unspecifier), if there is one.
229
  SourceLocation findNullabilityLoc() const;
230
231
private:
232
5.44M
  static bool isKind(const TypeLoc&) {
233
5.44M
    return true;
234
5.44M
  }
235
236
  static void initializeImpl(ASTContext &Context, TypeLoc TL,
237
                             SourceLocation Loc);
238
  static TypeLoc getNextTypeLocImpl(TypeLoc TL);
239
  static TypeLoc IgnoreParensImpl(TypeLoc TL);
240
  static SourceRange getLocalSourceRangeImpl(TypeLoc TL);
241
};
242
243
/// Return the TypeLoc for a type source info.
244
271M
inline TypeLoc TypeSourceInfo::getTypeLoc() const {
245
  // TODO: is this alignment already sufficient?
246
271M
  return TypeLoc(Ty, const_cast<void*>(static_cast<const void*>(this + 1)));
247
271M
}
248
249
/// Wrapper of type source information for a type with
250
/// no direct qualifiers.
251
class UnqualTypeLoc : public TypeLoc {
252
public:
253
2.36G
  UnqualTypeLoc() = default;
254
17.5M
  UnqualTypeLoc(const Type *Ty, void *Data) : TypeLoc(Ty, Data) {}
255
256
1.12G
  const Type *getTypePtr() const {
257
1.12G
    return reinterpret_cast<const Type*>(Ty);
258
1.12G
  }
259
260
188M
  TypeLocClass getTypeLocClass() const {
261
188M
    return (TypeLocClass) getTypePtr()->getTypeClass();
262
188M
  }
263
264
private:
265
  friend class TypeLoc;
266
267
184M
  static bool isKind(const TypeLoc &TL) {
268
184M
    return !TL.getType().hasLocalQualifiers();
269
184M
  }
270
};
271
272
/// Wrapper of type source information for a type with
273
/// non-trivial direct qualifiers.
274
///
275
/// Currently, we intentionally do not provide source location for
276
/// type qualifiers.
277
class QualifiedTypeLoc : public TypeLoc {
278
public:
279
9.31k
  SourceRange getLocalSourceRange() const { return {}; }
280
281
17.5M
  UnqualTypeLoc getUnqualifiedLoc() const {
282
17.5M
    unsigned align =
283
17.5M
        TypeLoc::getLocalAlignmentForType(QualType(getTypePtr(), 0));
284
17.5M
    auto dataInt = reinterpret_cast<uintptr_t>(Data);
285
17.5M
    dataInt = llvm::alignTo(dataInt, align);
286
17.5M
    return UnqualTypeLoc(getTypePtr(), reinterpret_cast<void*>(dataInt));
287
17.5M
  }
288
289
  /// Initializes the local data of this type source info block to
290
  /// provide no information.
291
269k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
292
    // do nothing
293
269k
  }
294
295
4
  void copyLocal(TypeLoc other) {
296
    // do nothing
297
4
  }
298
299
11.0M
  TypeLoc getNextTypeLoc() const {
300
11.0M
    return getUnqualifiedLoc();
301
11.0M
  }
302
303
  /// Returns the size of the type source info data block that is
304
  /// specific to this type.
305
7.95M
  unsigned getLocalDataSize() const {
306
    // In fact, we don't currently preserve any location information
307
    // for qualifiers.
308
7.95M
    return 0;
309
7.95M
  }
310
311
  /// Returns the alignment of the type source info data block that is
312
  /// specific to this type.
313
22.7M
  unsigned getLocalDataAlignment() const {
314
    // We don't preserve any location information.
315
22.7M
    return 1;
316
22.7M
  }
317
318
private:
319
  friend class TypeLoc;
320
321
233M
  static bool isKind(const TypeLoc &TL) {
322
233M
    return TL.getType().hasLocalQualifiers();
323
233M
  }
324
};
325
326
189M
inline UnqualTypeLoc TypeLoc::getUnqualifiedLoc() const {
327
189M
  if (QualifiedTypeLoc Loc = getAs<QualifiedTypeLoc>())
328
5.29M
    return Loc.getUnqualifiedLoc();
329
184M
  return castAs<UnqualTypeLoc>();
330
189M
}
331
332
/// A metaprogramming base class for TypeLoc classes which correspond
333
/// to a particular Type subclass.  It is accepted for a single
334
/// TypeLoc class to correspond to multiple Type classes.
335
///
336
/// \tparam Base a class from which to derive
337
/// \tparam Derived the class deriving from this one
338
/// \tparam TypeClass the concrete Type subclass associated with this
339
///   location type
340
/// \tparam LocalData the structure type of local location data for
341
///   this type
342
///
343
/// TypeLocs with non-constant amounts of local data should override
344
/// getExtraLocalDataSize(); getExtraLocalData() will then point to
345
/// this extra memory.
346
///
347
/// TypeLocs with an inner type should define
348
///   QualType getInnerType() const
349
/// and getInnerTypeLoc() will then point to this inner type's
350
/// location data.
351
///
352
/// A word about hierarchies: this template is not designed to be
353
/// derived from multiple times in a hierarchy.  It is also not
354
/// designed to be used for classes where subtypes might provide
355
/// different amounts of source information.  It should be subclassed
356
/// only at the deepest portion of the hierarchy where all children
357
/// have identical source information; if that's an abstract type,
358
/// then further descendents should inherit from
359
/// InheritingConcreteTypeLoc instead.
360
template <class Base, class Derived, class TypeClass, class LocalData>
361
class ConcreteTypeLoc : public Base {
362
  friend class TypeLoc;
363
364
2.20G
  const Derived *asDerived() const {
365
2.20G
    return static_cast<const Derived*>(this);
366
2.20G
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::asDerived() const
Line
Count
Source
364
113M
  const Derived *asDerived() const {
365
113M
    return static_cast<const Derived*>(this);
366
113M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::asDerived() const
Line
Count
Source
364
783k
  const Derived *asDerived() const {
365
783k
    return static_cast<const Derived*>(this);
366
783k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::asDerived() const
Line
Count
Source
364
48.0M
  const Derived *asDerived() const {
365
48.0M
    return static_cast<const Derived*>(this);
366
48.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::asDerived() const
Line
Count
Source
364
8.80M
  const Derived *asDerived() const {
365
8.80M
    return static_cast<const Derived*>(this);
366
8.80M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::asDerived() const
Line
Count
Source
364
2.88M
  const Derived *asDerived() const {
365
2.88M
    return static_cast<const Derived*>(this);
366
2.88M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::asDerived() const
Line
Count
Source
364
6.29M
  const Derived *asDerived() const {
365
6.29M
    return static_cast<const Derived*>(this);
366
6.29M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::asDerived() const
Line
Count
Source
364
44.9k
  const Derived *asDerived() const {
365
44.9k
    return static_cast<const Derived*>(this);
366
44.9k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::asDerived() const
Line
Count
Source
364
601M
  const Derived *asDerived() const {
365
601M
    return static_cast<const Derived*>(this);
366
601M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::asDerived() const
Line
Count
Source
364
7.71M
  const Derived *asDerived() const {
365
7.71M
    return static_cast<const Derived*>(this);
366
7.71M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::asDerived() const
Line
Count
Source
364
180M
  const Derived *asDerived() const {
365
180M
    return static_cast<const Derived*>(this);
366
180M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::asDerived() const
Line
Count
Source
364
1.38k
  const Derived *asDerived() const {
365
1.38k
    return static_cast<const Derived*>(this);
366
1.38k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::asDerived() const
Line
Count
Source
364
11.9M
  const Derived *asDerived() const {
365
11.9M
    return static_cast<const Derived*>(this);
366
11.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::asDerived() const
Line
Count
Source
364
2.11k
  const Derived *asDerived() const {
365
2.11k
    return static_cast<const Derived*>(this);
366
2.11k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::asDerived() const
Line
Count
Source
364
933
  const Derived *asDerived() const {
365
933
    return static_cast<const Derived*>(this);
366
933
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::asDerived() const
Line
Count
Source
364
1.38M
  const Derived *asDerived() const {
365
1.38M
    return static_cast<const Derived*>(this);
366
1.38M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::asDerived() const
Line
Count
Source
364
52.1M
  const Derived *asDerived() const {
365
52.1M
    return static_cast<const Derived*>(this);
366
52.1M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::asDerived() const
Line
Count
Source
364
5.05M
  const Derived *asDerived() const {
365
5.05M
    return static_cast<const Derived*>(this);
366
5.05M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::asDerived() const
Line
Count
Source
364
15.5M
  const Derived *asDerived() const {
365
15.5M
    return static_cast<const Derived*>(this);
366
15.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::asDerived() const
Line
Count
Source
364
123k
  const Derived *asDerived() const {
365
123k
    return static_cast<const Derived*>(this);
366
123k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::asDerived() const
Line
Count
Source
364
2.68k
  const Derived *asDerived() const {
365
2.68k
    return static_cast<const Derived*>(this);
366
2.68k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::asDerived() const
Line
Count
Source
364
1.12M
  const Derived *asDerived() const {
365
1.12M
    return static_cast<const Derived*>(this);
366
1.12M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::asDerived() const
Line
Count
Source
364
1.17M
  const Derived *asDerived() const {
365
1.17M
    return static_cast<const Derived*>(this);
366
1.17M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::asDerived() const
Line
Count
Source
364
22.5M
  const Derived *asDerived() const {
365
22.5M
    return static_cast<const Derived*>(this);
366
22.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::asDerived() const
Line
Count
Source
364
150M
  const Derived *asDerived() const {
365
150M
    return static_cast<const Derived*>(this);
366
150M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::asDerived() const
Line
Count
Source
364
82.4M
  const Derived *asDerived() const {
365
82.4M
    return static_cast<const Derived*>(this);
366
82.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::asDerived() const
Line
Count
Source
364
851M
  const Derived *asDerived() const {
365
851M
    return static_cast<const Derived*>(this);
366
851M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::asDerived() const
Line
Count
Source
364
23.0M
  const Derived *asDerived() const {
365
23.0M
    return static_cast<const Derived*>(this);
366
23.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::asDerived() const
Line
Count
Source
364
8.15k
  const Derived *asDerived() const {
365
8.15k
    return static_cast<const Derived*>(this);
366
8.15k
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::asDerived() const
Line
Count
Source
364
12.1M
  const Derived *asDerived() const {
365
12.1M
    return static_cast<const Derived*>(this);
366
12.1M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::asDerived() const
Line
Count
Source
364
30.3k
  const Derived *asDerived() const {
365
30.3k
    return static_cast<const Derived*>(this);
366
30.3k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::asDerived() const
Line
Count
Source
364
554
  const Derived *asDerived() const {
365
554
    return static_cast<const Derived*>(this);
366
554
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::asDerived() const
Line
Count
Source
364
20.0k
  const Derived *asDerived() const {
365
20.0k
    return static_cast<const Derived*>(this);
366
20.0k
  }
367
368
1.03G
  static bool isKind(const TypeLoc &TL) {
369
1.03G
    return !TL.getType().hasLocalQualifiers() &&
370
1.03G
           
Derived::classofType(TL.getTypePtr())1.03G
;
371
1.03G
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
38.5M
  static bool isKind(const TypeLoc &TL) {
369
38.5M
    return !TL.getType().hasLocalQualifiers() &&
370
38.5M
           Derived::classofType(TL.getTypePtr());
371
38.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
240M
  static bool isKind(const TypeLoc &TL) {
369
240M
    return !TL.getType().hasLocalQualifiers() &&
370
240M
           
Derived::classofType(TL.getTypePtr())240M
;
371
240M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
32.3M
  static bool isKind(const TypeLoc &TL) {
369
32.3M
    return !TL.getType().hasLocalQualifiers() &&
370
32.3M
           Derived::classofType(TL.getTypePtr());
371
32.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
75.8M
  static bool isKind(const TypeLoc &TL) {
369
75.8M
    return !TL.getType().hasLocalQualifiers() &&
370
75.8M
           Derived::classofType(TL.getTypePtr());
371
75.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
44.0M
  static bool isKind(const TypeLoc &TL) {
369
44.0M
    return !TL.getType().hasLocalQualifiers() &&
370
44.0M
           Derived::classofType(TL.getTypePtr());
371
44.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
155M
  static bool isKind(const TypeLoc &TL) {
369
155M
    return !TL.getType().hasLocalQualifiers() &&
370
155M
           
Derived::classofType(TL.getTypePtr())155M
;
371
155M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
507k
  static bool isKind(const TypeLoc &TL) {
369
507k
    return !TL.getType().hasLocalQualifiers() &&
370
507k
           Derived::classofType(TL.getTypePtr());
371
507k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
103M
  static bool isKind(const TypeLoc &TL) {
369
103M
    return !TL.getType().hasLocalQualifiers() &&
370
103M
           Derived::classofType(TL.getTypePtr());
371
103M
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
1.23M
  static bool isKind(const TypeLoc &TL) {
369
1.23M
    return !TL.getType().hasLocalQualifiers() &&
370
1.23M
           Derived::classofType(TL.getTypePtr());
371
1.23M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
43.8M
  static bool isKind(const TypeLoc &TL) {
369
43.8M
    return !TL.getType().hasLocalQualifiers() &&
370
43.8M
           Derived::classofType(TL.getTypePtr());
371
43.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
25.1M
  static bool isKind(const TypeLoc &TL) {
369
25.1M
    return !TL.getType().hasLocalQualifiers() &&
370
25.1M
           Derived::classofType(TL.getTypePtr());
371
25.1M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
344
  static bool isKind(const TypeLoc &TL) {
369
344
    return !TL.getType().hasLocalQualifiers() &&
370
344
           Derived::classofType(TL.getTypePtr());
371
344
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
4.16M
  static bool isKind(const TypeLoc &TL) {
369
4.16M
    return !TL.getType().hasLocalQualifiers() &&
370
4.16M
           Derived::classofType(TL.getTypePtr());
371
4.16M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
735
  static bool isKind(const TypeLoc &TL) {
369
735
    return !TL.getType().hasLocalQualifiers() &&
370
735
           Derived::classofType(TL.getTypePtr());
371
735
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
51.7M
  static bool isKind(const TypeLoc &TL) {
369
51.7M
    return !TL.getType().hasLocalQualifiers() &&
370
51.7M
           
Derived::classofType(TL.getTypePtr())51.7M
;
371
51.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
76.7M
  static bool isKind(const TypeLoc &TL) {
369
76.7M
    return !TL.getType().hasLocalQualifiers() &&
370
76.7M
           Derived::classofType(TL.getTypePtr());
371
76.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
408k
  static bool isKind(const TypeLoc &TL) {
369
408k
    return !TL.getType().hasLocalQualifiers() &&
370
408k
           Derived::classofType(TL.getTypePtr());
371
408k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
10.3M
  static bool isKind(const TypeLoc &TL) {
369
10.3M
    return !TL.getType().hasLocalQualifiers() &&
370
10.3M
           Derived::classofType(TL.getTypePtr());
371
10.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
3.53M
  static bool isKind(const TypeLoc &TL) {
369
3.53M
    return !TL.getType().hasLocalQualifiers() &&
370
3.53M
           Derived::classofType(TL.getTypePtr());
371
3.53M
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
12.9M
  static bool isKind(const TypeLoc &TL) {
369
12.9M
    return !TL.getType().hasLocalQualifiers() &&
370
12.9M
           Derived::classofType(TL.getTypePtr());
371
12.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
920k
  static bool isKind(const TypeLoc &TL) {
369
920k
    return !TL.getType().hasLocalQualifiers() &&
370
920k
           Derived::classofType(TL.getTypePtr());
371
920k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
7.47M
  static bool isKind(const TypeLoc &TL) {
369
7.47M
    return !TL.getType().hasLocalQualifiers() &&
370
7.47M
           
Derived::classofType(TL.getTypePtr())7.46M
;
371
7.47M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
1.03k
  static bool isKind(const TypeLoc &TL) {
369
1.03k
    return !TL.getType().hasLocalQualifiers() &&
370
1.03k
           Derived::classofType(TL.getTypePtr());
371
1.03k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
57.4M
  static bool isKind(const TypeLoc &TL) {
369
57.4M
    return !TL.getType().hasLocalQualifiers() &&
370
57.4M
           Derived::classofType(TL.getTypePtr());
371
57.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
39.3k
  static bool isKind(const TypeLoc &TL) {
369
39.3k
    return !TL.getType().hasLocalQualifiers() &&
370
39.3k
           Derived::classofType(TL.getTypePtr());
371
39.3k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
633
  static bool isKind(const TypeLoc &TL) {
369
633
    return !TL.getType().hasLocalQualifiers() &&
370
633
           Derived::classofType(TL.getTypePtr());
371
633
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
19.3k
  static bool isKind(const TypeLoc &TL) {
369
19.3k
    return !TL.getType().hasLocalQualifiers() &&
370
19.3k
           Derived::classofType(TL.getTypePtr());
371
19.3k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
5.06M
  static bool isKind(const TypeLoc &TL) {
369
5.06M
    return !TL.getType().hasLocalQualifiers() &&
370
5.06M
           Derived::classofType(TL.getTypePtr());
371
5.06M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
331k
  static bool isKind(const TypeLoc &TL) {
369
331k
    return !TL.getType().hasLocalQualifiers() &&
370
331k
           Derived::classofType(TL.getTypePtr());
371
331k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
43.8M
  static bool isKind(const TypeLoc &TL) {
369
43.8M
    return !TL.getType().hasLocalQualifiers() &&
370
43.8M
           Derived::classofType(TL.getTypePtr());
371
43.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
3.68k
  static bool isKind(const TypeLoc &TL) {
369
3.68k
    return !TL.getType().hasLocalQualifiers() &&
370
3.68k
           Derived::classofType(TL.getTypePtr());
371
3.68k
  }
372
373
1.03G
  static bool classofType(const Type *Ty) {
374
1.03G
    return TypeClass::classof(Ty);
375
1.03G
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
38.5M
  static bool classofType(const Type *Ty) {
374
38.5M
    return TypeClass::classof(Ty);
375
38.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
240M
  static bool classofType(const Type *Ty) {
374
240M
    return TypeClass::classof(Ty);
375
240M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
32.3M
  static bool classofType(const Type *Ty) {
374
32.3M
    return TypeClass::classof(Ty);
375
32.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
75.8M
  static bool classofType(const Type *Ty) {
374
75.8M
    return TypeClass::classof(Ty);
375
75.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
44.0M
  static bool classofType(const Type *Ty) {
374
44.0M
    return TypeClass::classof(Ty);
375
44.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
155M
  static bool classofType(const Type *Ty) {
374
155M
    return TypeClass::classof(Ty);
375
155M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
507k
  static bool classofType(const Type *Ty) {
374
507k
    return TypeClass::classof(Ty);
375
507k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
103M
  static bool classofType(const Type *Ty) {
374
103M
    return TypeClass::classof(Ty);
375
103M
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
1.23M
  static bool classofType(const Type *Ty) {
374
1.23M
    return TypeClass::classof(Ty);
375
1.23M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
43.8M
  static bool classofType(const Type *Ty) {
374
43.8M
    return TypeClass::classof(Ty);
375
43.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
25.1M
  static bool classofType(const Type *Ty) {
374
25.1M
    return TypeClass::classof(Ty);
375
25.1M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
344
  static bool classofType(const Type *Ty) {
374
344
    return TypeClass::classof(Ty);
375
344
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
4.16M
  static bool classofType(const Type *Ty) {
374
4.16M
    return TypeClass::classof(Ty);
375
4.16M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
735
  static bool classofType(const Type *Ty) {
374
735
    return TypeClass::classof(Ty);
375
735
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
51.7M
  static bool classofType(const Type *Ty) {
374
51.7M
    return TypeClass::classof(Ty);
375
51.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
76.7M
  static bool classofType(const Type *Ty) {
374
76.7M
    return TypeClass::classof(Ty);
375
76.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
408k
  static bool classofType(const Type *Ty) {
374
408k
    return TypeClass::classof(Ty);
375
408k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
10.3M
  static bool classofType(const Type *Ty) {
374
10.3M
    return TypeClass::classof(Ty);
375
10.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
3.53M
  static bool classofType(const Type *Ty) {
374
3.53M
    return TypeClass::classof(Ty);
375
3.53M
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
12.9M
  static bool classofType(const Type *Ty) {
374
12.9M
    return TypeClass::classof(Ty);
375
12.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
920k
  static bool classofType(const Type *Ty) {
374
920k
    return TypeClass::classof(Ty);
375
920k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
7.46M
  static bool classofType(const Type *Ty) {
374
7.46M
    return TypeClass::classof(Ty);
375
7.46M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
1.03k
  static bool classofType(const Type *Ty) {
374
1.03k
    return TypeClass::classof(Ty);
375
1.03k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
57.4M
  static bool classofType(const Type *Ty) {
374
57.4M
    return TypeClass::classof(Ty);
375
57.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
39.3k
  static bool classofType(const Type *Ty) {
374
39.3k
    return TypeClass::classof(Ty);
375
39.3k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
633
  static bool classofType(const Type *Ty) {
374
633
    return TypeClass::classof(Ty);
375
633
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
19.3k
  static bool classofType(const Type *Ty) {
374
19.3k
    return TypeClass::classof(Ty);
375
19.3k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
5.06M
  static bool classofType(const Type *Ty) {
374
5.06M
    return TypeClass::classof(Ty);
375
5.06M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
331k
  static bool classofType(const Type *Ty) {
374
331k
    return TypeClass::classof(Ty);
375
331k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
43.8M
  static bool classofType(const Type *Ty) {
374
43.8M
    return TypeClass::classof(Ty);
375
43.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
3.68k
  static bool classofType(const Type *Ty) {
374
3.68k
    return TypeClass::classof(Ty);
375
3.68k
  }
376
377
public:
378
433M
  unsigned getLocalDataAlignment() const {
379
433M
    return std::max(unsigned(alignof(LocalData)),
380
433M
                    asDerived()->getExtraLocalDataAlignment());
381
433M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
7.20k
  unsigned getLocalDataAlignment() const {
379
7.20k
    return std::max(unsigned(alignof(LocalData)),
380
7.20k
                    asDerived()->getExtraLocalDataAlignment());
381
7.20k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
769k
  unsigned getLocalDataAlignment() const {
379
769k
    return std::max(unsigned(alignof(LocalData)),
380
769k
                    asDerived()->getExtraLocalDataAlignment());
381
769k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
9.79k
  unsigned getLocalDataAlignment() const {
379
9.79k
    return std::max(unsigned(alignof(LocalData)),
380
9.79k
                    asDerived()->getExtraLocalDataAlignment());
381
9.79k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
4.35M
  unsigned getLocalDataAlignment() const {
379
4.35M
    return std::max(unsigned(alignof(LocalData)),
380
4.35M
                    asDerived()->getExtraLocalDataAlignment());
381
4.35M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
187k
  unsigned getLocalDataAlignment() const {
379
187k
    return std::max(unsigned(alignof(LocalData)),
380
187k
                    asDerived()->getExtraLocalDataAlignment());
381
187k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
38.1M
  unsigned getLocalDataAlignment() const {
379
38.1M
    return std::max(unsigned(alignof(LocalData)),
380
38.1M
                    asDerived()->getExtraLocalDataAlignment());
381
38.1M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
271M
  unsigned getLocalDataAlignment() const {
379
271M
    return std::max(unsigned(alignof(LocalData)),
380
271M
                    asDerived()->getExtraLocalDataAlignment());
381
271M
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
437k
  unsigned getLocalDataAlignment() const {
379
437k
    return std::max(unsigned(alignof(LocalData)),
380
437k
                    asDerived()->getExtraLocalDataAlignment());
381
437k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
250
  unsigned getLocalDataAlignment() const {
379
250
    return std::max(unsigned(alignof(LocalData)),
380
250
                    asDerived()->getExtraLocalDataAlignment());
381
250
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
6.14M
  unsigned getLocalDataAlignment() const {
379
6.14M
    return std::max(unsigned(alignof(LocalData)),
380
6.14M
                    asDerived()->getExtraLocalDataAlignment());
381
6.14M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
61
  unsigned getLocalDataAlignment() const {
379
61
    return std::max(unsigned(alignof(LocalData)),
380
61
                    asDerived()->getExtraLocalDataAlignment());
381
61
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
989k
  unsigned getLocalDataAlignment() const {
379
989k
    return std::max(unsigned(alignof(LocalData)),
380
989k
                    asDerived()->getExtraLocalDataAlignment());
381
989k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
130
  unsigned getLocalDataAlignment() const {
379
130
    return std::max(unsigned(alignof(LocalData)),
380
130
                    asDerived()->getExtraLocalDataAlignment());
381
130
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
6.32M
  unsigned getLocalDataAlignment() const {
379
6.32M
    return std::max(unsigned(alignof(LocalData)),
380
6.32M
                    asDerived()->getExtraLocalDataAlignment());
381
6.32M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
38.6M
  unsigned getLocalDataAlignment() const {
379
38.6M
    return std::max(unsigned(alignof(LocalData)),
380
38.6M
                    asDerived()->getExtraLocalDataAlignment());
381
38.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
212k
  unsigned getLocalDataAlignment() const {
379
212k
    return std::max(unsigned(alignof(LocalData)),
380
212k
                    asDerived()->getExtraLocalDataAlignment());
381
212k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
1.83k
  unsigned getLocalDataAlignment() const {
379
1.83k
    return std::max(unsigned(alignof(LocalData)),
380
1.83k
                    asDerived()->getExtraLocalDataAlignment());
381
1.83k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
57.6k
  unsigned getLocalDataAlignment() const {
379
57.6k
    return std::max(unsigned(alignof(LocalData)),
380
57.6k
                    asDerived()->getExtraLocalDataAlignment());
381
57.6k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
3.94M
  unsigned getLocalDataAlignment() const {
379
3.94M
    return std::max(unsigned(alignof(LocalData)),
380
3.94M
                    asDerived()->getExtraLocalDataAlignment());
381
3.94M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
1.39M
  unsigned getLocalDataAlignment() const {
379
1.39M
    return std::max(unsigned(alignof(LocalData)),
380
1.39M
                    asDerived()->getExtraLocalDataAlignment());
381
1.39M
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
5.36M
  unsigned getLocalDataAlignment() const {
379
5.36M
    return std::max(unsigned(alignof(LocalData)),
380
5.36M
                    asDerived()->getExtraLocalDataAlignment());
381
5.36M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
220k
  unsigned getLocalDataAlignment() const {
379
220k
    return std::max(unsigned(alignof(LocalData)),
380
220k
                    asDerived()->getExtraLocalDataAlignment());
381
220k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
1.22M
  unsigned getLocalDataAlignment() const {
379
1.22M
    return std::max(unsigned(alignof(LocalData)),
380
1.22M
                    asDerived()->getExtraLocalDataAlignment());
381
1.22M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
1.19M
  unsigned getLocalDataAlignment() const {
379
1.19M
    return std::max(unsigned(alignof(LocalData)),
380
1.19M
                    asDerived()->getExtraLocalDataAlignment());
381
1.19M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
206
  unsigned getLocalDataAlignment() const {
379
206
    return std::max(unsigned(alignof(LocalData)),
380
206
                    asDerived()->getExtraLocalDataAlignment());
381
206
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
13.3M
  unsigned getLocalDataAlignment() const {
379
13.3M
    return std::max(unsigned(alignof(LocalData)),
380
13.3M
                    asDerived()->getExtraLocalDataAlignment());
381
13.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
8.59M
  unsigned getLocalDataAlignment() const {
379
8.59M
    return std::max(unsigned(alignof(LocalData)),
380
8.59M
                    asDerived()->getExtraLocalDataAlignment());
381
8.59M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
29.6M
  unsigned getLocalDataAlignment() const {
379
29.6M
    return std::max(unsigned(alignof(LocalData)),
380
29.6M
                    asDerived()->getExtraLocalDataAlignment());
381
29.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
13.2k
  unsigned getLocalDataAlignment() const {
379
13.2k
    return std::max(unsigned(alignof(LocalData)),
380
13.2k
                    asDerived()->getExtraLocalDataAlignment());
381
13.2k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
128
  unsigned getLocalDataAlignment() const {
379
128
    return std::max(unsigned(alignof(LocalData)),
380
128
                    asDerived()->getExtraLocalDataAlignment());
381
128
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
4.65k
  unsigned getLocalDataAlignment() const {
379
4.65k
    return std::max(unsigned(alignof(LocalData)),
380
4.65k
                    asDerived()->getExtraLocalDataAlignment());
381
4.65k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
1.16M
  unsigned getLocalDataAlignment() const {
379
1.16M
    return std::max(unsigned(alignof(LocalData)),
380
1.16M
                    asDerived()->getExtraLocalDataAlignment());
381
1.16M
  }
382
383
431M
  unsigned getLocalDataSize() const {
384
431M
    unsigned size = sizeof(LocalData);
385
431M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
431M
    size = llvm::alignTo(size, extraAlign);
387
431M
    size += asDerived()->getExtraLocalDataSize();
388
431M
    return size;
389
431M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getLocalDataSize() const
Line
Count
Source
383
10.6M
  unsigned getLocalDataSize() const {
384
10.6M
    unsigned size = sizeof(LocalData);
385
10.6M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
10.6M
    size = llvm::alignTo(size, extraAlign);
387
10.6M
    size += asDerived()->getExtraLocalDataSize();
388
10.6M
    return size;
389
10.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
1.93M
  unsigned getLocalDataSize() const {
384
1.93M
    unsigned size = sizeof(LocalData);
385
1.93M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
1.93M
    size = llvm::alignTo(size, extraAlign);
387
1.93M
    size += asDerived()->getExtraLocalDataSize();
388
1.93M
    return size;
389
1.93M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getLocalDataSize() const
Line
Count
Source
383
662k
  unsigned getLocalDataSize() const {
384
662k
    unsigned size = sizeof(LocalData);
385
662k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
662k
    size = llvm::alignTo(size, extraAlign);
387
662k
    size += asDerived()->getExtraLocalDataSize();
388
662k
    return size;
389
662k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getLocalDataSize() const
Line
Count
Source
383
1.23M
  unsigned getLocalDataSize() const {
384
1.23M
    unsigned size = sizeof(LocalData);
385
1.23M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
1.23M
    size = llvm::alignTo(size, extraAlign);
387
1.23M
    size += asDerived()->getExtraLocalDataSize();
388
1.23M
    return size;
389
1.23M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getLocalDataSize() const
Line
Count
Source
383
114M
  unsigned getLocalDataSize() const {
384
114M
    unsigned size = sizeof(LocalData);
385
114M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
114M
    size = llvm::alignTo(size, extraAlign);
387
114M
    size += asDerived()->getExtraLocalDataSize();
388
114M
    return size;
389
114M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getLocalDataSize() const
Line
Count
Source
383
1.70M
  unsigned getLocalDataSize() const {
384
1.70M
    unsigned size = sizeof(LocalData);
385
1.70M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
1.70M
    size = llvm::alignTo(size, extraAlign);
387
1.70M
    size += asDerived()->getExtraLocalDataSize();
388
1.70M
    return size;
389
1.70M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getLocalDataSize() const
Line
Count
Source
383
277
  unsigned getLocalDataSize() const {
384
277
    unsigned size = sizeof(LocalData);
385
277
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
277
    size = llvm::alignTo(size, extraAlign);
387
277
    size += asDerived()->getExtraLocalDataSize();
388
277
    return size;
389
277
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
2.64M
  unsigned getLocalDataSize() const {
384
2.64M
    unsigned size = sizeof(LocalData);
385
2.64M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
2.64M
    size = llvm::alignTo(size, extraAlign);
387
2.64M
    size += asDerived()->getExtraLocalDataSize();
388
2.64M
    return size;
389
2.64M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
475
  unsigned getLocalDataSize() const {
384
475
    unsigned size = sizeof(LocalData);
385
475
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
475
    size = llvm::alignTo(size, extraAlign);
387
475
    size += asDerived()->getExtraLocalDataSize();
388
475
    return size;
389
475
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
211
  unsigned getLocalDataSize() const {
384
211
    unsigned size = sizeof(LocalData);
385
211
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
211
    size = llvm::alignTo(size, extraAlign);
387
211
    size += asDerived()->getExtraLocalDataSize();
388
211
    return size;
389
211
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getLocalDataSize() const
Line
Count
Source
383
12.1M
  unsigned getLocalDataSize() const {
384
12.1M
    unsigned size = sizeof(LocalData);
385
12.1M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
12.1M
    size = llvm::alignTo(size, extraAlign);
387
12.1M
    size += asDerived()->getExtraLocalDataSize();
388
12.1M
    return size;
389
12.1M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
3.60M
  unsigned getLocalDataSize() const {
384
3.60M
    unsigned size = sizeof(LocalData);
385
3.60M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
3.60M
    size = llvm::alignTo(size, extraAlign);
387
3.60M
    size += asDerived()->getExtraLocalDataSize();
388
3.60M
    return size;
389
3.60M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
27.9k
  unsigned getLocalDataSize() const {
384
27.9k
    unsigned size = sizeof(LocalData);
385
27.9k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
27.9k
    size = llvm::alignTo(size, extraAlign);
387
27.9k
    size += asDerived()->getExtraLocalDataSize();
388
27.9k
    return size;
389
27.9k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
615
  unsigned getLocalDataSize() const {
384
615
    unsigned size = sizeof(LocalData);
385
615
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
615
    size = llvm::alignTo(size, extraAlign);
387
615
    size += asDerived()->getExtraLocalDataSize();
388
615
    return size;
389
615
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
223k
  unsigned getLocalDataSize() const {
384
223k
    unsigned size = sizeof(LocalData);
385
223k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
223k
    size = llvm::alignTo(size, extraAlign);
387
223k
    size += asDerived()->getExtraLocalDataSize();
388
223k
    return size;
389
223k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getLocalDataSize() const
Line
Count
Source
383
255k
  unsigned getLocalDataSize() const {
384
255k
    unsigned size = sizeof(LocalData);
385
255k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
255k
    size = llvm::alignTo(size, extraAlign);
387
255k
    size += asDerived()->getExtraLocalDataSize();
388
255k
    return size;
389
255k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
4.50M
  unsigned getLocalDataSize() const {
384
4.50M
    unsigned size = sizeof(LocalData);
385
4.50M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
4.50M
    size = llvm::alignTo(size, extraAlign);
387
4.50M
    size += asDerived()->getExtraLocalDataSize();
388
4.50M
    return size;
389
4.50M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
33.8M
  unsigned getLocalDataSize() const {
384
33.8M
    unsigned size = sizeof(LocalData);
385
33.8M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
33.8M
    size = llvm::alignTo(size, extraAlign);
387
33.8M
    size += asDerived()->getExtraLocalDataSize();
388
33.8M
    return size;
389
33.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
18.5M
  unsigned getLocalDataSize() const {
384
18.5M
    unsigned size = sizeof(LocalData);
385
18.5M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
18.5M
    size = llvm::alignTo(size, extraAlign);
387
18.5M
    size += asDerived()->getExtraLocalDataSize();
388
18.5M
    return size;
389
18.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getLocalDataSize() const
Line
Count
Source
383
16.4M
  unsigned getLocalDataSize() const {
384
16.4M
    unsigned size = sizeof(LocalData);
385
16.4M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
16.4M
    size = llvm::alignTo(size, extraAlign);
387
16.4M
    size += asDerived()->getExtraLocalDataSize();
388
16.4M
    return size;
389
16.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getLocalDataSize() const
Line
Count
Source
383
174M
  unsigned getLocalDataSize() const {
384
174M
    unsigned size = sizeof(LocalData);
385
174M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
174M
    size = llvm::alignTo(size, extraAlign);
387
174M
    size += asDerived()->getExtraLocalDataSize();
388
174M
    return size;
389
174M
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
284k
  unsigned getLocalDataSize() const {
384
284k
    unsigned size = sizeof(LocalData);
385
284k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
284k
    size = llvm::alignTo(size, extraAlign);
387
284k
    size += asDerived()->getExtraLocalDataSize();
388
284k
    return size;
389
284k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getLocalDataSize() const
Line
Count
Source
383
4.83M
  unsigned getLocalDataSize() const {
384
4.83M
    unsigned size = sizeof(LocalData);
385
4.83M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
4.83M
    size = llvm::alignTo(size, extraAlign);
387
4.83M
    size += asDerived()->getExtraLocalDataSize();
388
4.83M
    return size;
389
4.83M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getLocalDataSize() const
Line
Count
Source
383
985k
  unsigned getLocalDataSize() const {
384
985k
    unsigned size = sizeof(LocalData);
385
985k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
985k
    size = llvm::alignTo(size, extraAlign);
387
985k
    size += asDerived()->getExtraLocalDataSize();
388
985k
    return size;
389
985k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
1.83k
  unsigned getLocalDataSize() const {
384
1.83k
    unsigned size = sizeof(LocalData);
385
1.83k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
1.83k
    size = llvm::alignTo(size, extraAlign);
387
1.83k
    size += asDerived()->getExtraLocalDataSize();
388
1.83k
    return size;
389
1.83k
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getLocalDataSize() const
Line
Count
Source
383
1.90M
  unsigned getLocalDataSize() const {
384
1.90M
    unsigned size = sizeof(LocalData);
385
1.90M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
1.90M
    size = llvm::alignTo(size, extraAlign);
387
1.90M
    size += asDerived()->getExtraLocalDataSize();
388
1.90M
    return size;
389
1.90M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
131k
  unsigned getLocalDataSize() const {
384
131k
    unsigned size = sizeof(LocalData);
385
131k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
131k
    size = llvm::alignTo(size, extraAlign);
387
131k
    size += asDerived()->getExtraLocalDataSize();
388
131k
    return size;
389
131k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getLocalDataSize() const
Line
Count
Source
383
25.9M
  unsigned getLocalDataSize() const {
384
25.9M
    unsigned size = sizeof(LocalData);
385
25.9M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
25.9M
    size = llvm::alignTo(size, extraAlign);
387
25.9M
    size += asDerived()->getExtraLocalDataSize();
388
25.9M
    return size;
389
25.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
4.55k
  unsigned getLocalDataSize() const {
384
4.55k
    unsigned size = sizeof(LocalData);
385
4.55k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
4.55k
    size = llvm::alignTo(size, extraAlign);
387
4.55k
    size += asDerived()->getExtraLocalDataSize();
388
4.55k
    return size;
389
4.55k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
120
  unsigned getLocalDataSize() const {
384
120
    unsigned size = sizeof(LocalData);
385
120
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
120
    size = llvm::alignTo(size, extraAlign);
387
120
    size += asDerived()->getExtraLocalDataSize();
388
120
    return size;
389
120
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
4.64k
  unsigned getLocalDataSize() const {
384
4.64k
    unsigned size = sizeof(LocalData);
385
4.64k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
4.64k
    size = llvm::alignTo(size, extraAlign);
387
4.64k
    size += asDerived()->getExtraLocalDataSize();
388
4.64k
    return size;
389
4.64k
  }
390
391
2.27k
  void copyLocal(Derived other) {
392
    // Some subclasses have no data to copy.
393
2.27k
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
394
395
    // Copy the fixed-sized local data.
396
2.27k
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
397
398
    // Copy the variable-sized local data. We need to do this
399
    // separately because the padding in the source and the padding in
400
    // the destination might be different.
401
2.27k
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
402
2.27k
           asDerived()->getExtraLocalDataSize());
403
2.27k
  }
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
391
1
  void copyLocal(Derived other) {
392
    // Some subclasses have no data to copy.
393
1
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
394
395
    // Copy the fixed-sized local data.
396
1
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
397
398
    // Copy the variable-sized local data. We need to do this
399
    // separately because the padding in the source and the padding in
400
    // the destination might be different.
401
1
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
402
1
           asDerived()->getExtraLocalDataSize());
403
1
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::copyLocal(clang::AttributedTypeLoc)
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
391
758
  void copyLocal(Derived other) {
392
    // Some subclasses have no data to copy.
393
758
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
394
395
    // Copy the fixed-sized local data.
396
758
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
397
398
    // Copy the variable-sized local data. We need to do this
399
    // separately because the padding in the source and the padding in
400
    // the destination might be different.
401
758
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
402
758
           asDerived()->getExtraLocalDataSize());
403
758
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::copyLocal(clang::TypeSpecTypeLoc)
Line
Count
Source
391
1.44k
  void copyLocal(Derived other) {
392
    // Some subclasses have no data to copy.
393
1.44k
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
394
395
    // Copy the fixed-sized local data.
396
1.44k
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
397
398
    // Copy the variable-sized local data. We need to do this
399
    // separately because the padding in the source and the padding in
400
    // the destination might be different.
401
1.44k
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
402
1.44k
           asDerived()->getExtraLocalDataSize());
403
1.44k
  }
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)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::copyLocal(clang::ElaboratedTypeLoc)
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::copyLocal(clang::FunctionTypeLoc)
Line
Count
Source
391
3
  void copyLocal(Derived other) {
392
    // Some subclasses have no data to copy.
393
3
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
394
395
    // Copy the fixed-sized local data.
396
3
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
397
398
    // Copy the variable-sized local data. We need to do this
399
    // separately because the padding in the source and the padding in
400
    // the destination might be different.
401
3
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
402
3
           asDerived()->getExtraLocalDataSize());
403
3
  }
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
391
18
  void copyLocal(Derived other) {
392
    // Some subclasses have no data to copy.
393
18
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
394
395
    // Copy the fixed-sized local data.
396
18
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
397
398
    // Copy the variable-sized local data. We need to do this
399
    // separately because the padding in the source and the padding in
400
    // the destination might be different.
401
18
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
402
18
           asDerived()->getExtraLocalDataSize());
403
18
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::copyLocal(clang::ObjCObjectTypeLoc)
Line
Count
Source
391
18
  void copyLocal(Derived other) {
392
    // Some subclasses have no data to copy.
393
18
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
394
395
    // Copy the fixed-sized local data.
396
18
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
397
398
    // Copy the variable-sized local data. We need to do this
399
    // separately because the padding in the source and the padding in
400
    // the destination might be different.
401
18
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
402
18
           asDerived()->getExtraLocalDataSize());
403
18
  }
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
391
3
  void copyLocal(Derived other) {
392
    // Some subclasses have no data to copy.
393
3
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
394
395
    // Copy the fixed-sized local data.
396
3
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
397
398
    // Copy the variable-sized local data. We need to do this
399
    // separately because the padding in the source and the padding in
400
    // the destination might be different.
401
3
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
402
3
           asDerived()->getExtraLocalDataSize());
403
3
  }
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
391
32
  void copyLocal(Derived other) {
392
    // Some subclasses have no data to copy.
393
32
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
394
395
    // Copy the fixed-sized local data.
396
32
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
397
398
    // Copy the variable-sized local data. We need to do this
399
    // separately because the padding in the source and the padding in
400
    // the destination might be different.
401
32
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
402
32
           asDerived()->getExtraLocalDataSize());
403
32
  }
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
391
1
  void copyLocal(Derived other) {
392
    // Some subclasses have no data to copy.
393
1
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
394
395
    // Copy the fixed-sized local data.
396
1
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
397
398
    // Copy the variable-sized local data. We need to do this
399
    // separately because the padding in the source and the padding in
400
    // the destination might be different.
401
1
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
402
1
           asDerived()->getExtraLocalDataSize());
403
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
391
2
  void copyLocal(Derived other) {
392
    // Some subclasses have no data to copy.
393
2
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
394
395
    // Copy the fixed-sized local data.
396
2
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
397
398
    // Copy the variable-sized local data. We need to do this
399
    // separately because the padding in the source and the padding in
400
    // the destination might be different.
401
2
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
402
2
           asDerived()->getExtraLocalDataSize());
403
2
  }
404
405
478M
  TypeLoc getNextTypeLoc() const {
406
478M
    return getNextTypeLoc(asDerived()->getInnerType());
407
478M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
10.4k
  TypeLoc getNextTypeLoc() const {
406
10.4k
    return getNextTypeLoc(asDerived()->getInnerType());
407
10.4k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
1.12M
  TypeLoc getNextTypeLoc() const {
406
1.12M
    return getNextTypeLoc(asDerived()->getInnerType());
407
1.12M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
14.6k
  TypeLoc getNextTypeLoc() const {
406
14.6k
    return getNextTypeLoc(asDerived()->getInnerType());
407
14.6k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
5.67M
  TypeLoc getNextTypeLoc() const {
406
5.67M
    return getNextTypeLoc(asDerived()->getInnerType());
407
5.67M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
159k
  TypeLoc getNextTypeLoc() const {
406
159k
    return getNextTypeLoc(asDerived()->getInnerType());
407
159k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
25.9M
  TypeLoc getNextTypeLoc() const {
406
25.9M
    return getNextTypeLoc(asDerived()->getInnerType());
407
25.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
231M
  TypeLoc getNextTypeLoc() const {
406
231M
    return getNextTypeLoc(asDerived()->getInnerType());
407
231M
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
351k
  TypeLoc getNextTypeLoc() const {
406
351k
    return getNextTypeLoc(asDerived()->getInnerType());
407
351k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
194
  TypeLoc getNextTypeLoc() const {
406
194
    return getNextTypeLoc(asDerived()->getInnerType());
407
194
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
7.22M
  TypeLoc getNextTypeLoc() const {
406
7.22M
    return getNextTypeLoc(asDerived()->getInnerType());
407
7.22M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
132
  TypeLoc getNextTypeLoc() const {
406
132
    return getNextTypeLoc(asDerived()->getInnerType());
407
132
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
1.45M
  TypeLoc getNextTypeLoc() const {
406
1.45M
    return getNextTypeLoc(asDerived()->getInnerType());
407
1.45M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
260
  TypeLoc getNextTypeLoc() const {
406
260
    return getNextTypeLoc(asDerived()->getInnerType());
407
260
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
7.02M
  TypeLoc getNextTypeLoc() const {
406
7.02M
    return getNextTypeLoc(asDerived()->getInnerType());
407
7.02M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
75.5M
  TypeLoc getNextTypeLoc() const {
406
75.5M
    return getNextTypeLoc(asDerived()->getInnerType());
407
75.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
288k
  TypeLoc getNextTypeLoc() const {
406
288k
    return getNextTypeLoc(asDerived()->getInnerType());
407
288k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
2.66k
  TypeLoc getNextTypeLoc() const {
406
2.66k
    return getNextTypeLoc(asDerived()->getInnerType());
407
2.66k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
200k
  TypeLoc getNextTypeLoc() const {
406
200k
    return getNextTypeLoc(asDerived()->getInnerType());
407
200k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
3.13M
  TypeLoc getNextTypeLoc() const {
406
3.13M
    return getNextTypeLoc(asDerived()->getInnerType());
407
3.13M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
960k
  TypeLoc getNextTypeLoc() const {
406
960k
    return getNextTypeLoc(asDerived()->getInnerType());
407
960k
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
2.97M
  TypeLoc getNextTypeLoc() const {
406
2.97M
    return getNextTypeLoc(asDerived()->getInnerType());
407
2.97M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
285k
  TypeLoc getNextTypeLoc() const {
406
285k
    return getNextTypeLoc(asDerived()->getInnerType());
407
285k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
1.98M
  TypeLoc getNextTypeLoc() const {
406
1.98M
    return getNextTypeLoc(asDerived()->getInnerType());
407
1.98M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
827k
  TypeLoc getNextTypeLoc() const {
406
827k
    return getNextTypeLoc(asDerived()->getInnerType());
407
827k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
415
  TypeLoc getNextTypeLoc() const {
406
415
    return getNextTypeLoc(asDerived()->getInnerType());
407
415
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
21.9M
  TypeLoc getNextTypeLoc() const {
406
21.9M
    return getNextTypeLoc(asDerived()->getInnerType());
407
21.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
11.0M
  TypeLoc getNextTypeLoc() const {
406
11.0M
    return getNextTypeLoc(asDerived()->getInnerType());
407
11.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
77.6M
  TypeLoc getNextTypeLoc() const {
406
77.6M
    return getNextTypeLoc(asDerived()->getInnerType());
407
77.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
7.95k
  TypeLoc getNextTypeLoc() const {
406
7.95k
    return getNextTypeLoc(asDerived()->getInnerType());
407
7.95k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
186
  TypeLoc getNextTypeLoc() const {
406
186
    return getNextTypeLoc(asDerived()->getInnerType());
407
186
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
6.10k
  TypeLoc getNextTypeLoc() const {
406
6.10k
    return getNextTypeLoc(asDerived()->getInnerType());
407
6.10k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
1.82M
  TypeLoc getNextTypeLoc() const {
406
1.82M
    return getNextTypeLoc(asDerived()->getInnerType());
407
1.82M
  }
408
409
941M
  const TypeClass *getTypePtr() const {
410
941M
    return cast<TypeClass>(Base::getTypePtr());
411
941M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getTypePtr() const
Line
Count
Source
409
113M
  const TypeClass *getTypePtr() const {
410
113M
    return cast<TypeClass>(Base::getTypePtr());
411
113M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getTypePtr() const
Line
Count
Source
409
9.61M
  const TypeClass *getTypePtr() const {
410
9.61M
    return cast<TypeClass>(Base::getTypePtr());
411
9.61M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getTypePtr() const
Line
Count
Source
409
325k
  const TypeClass *getTypePtr() const {
410
325k
    return cast<TypeClass>(Base::getTypePtr());
411
325k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getTypePtr() const
Line
Count
Source
409
18.1M
  const TypeClass *getTypePtr() const {
410
18.1M
    return cast<TypeClass>(Base::getTypePtr());
411
18.1M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getTypePtr() const
Line
Count
Source
409
6.98M
  const TypeClass *getTypePtr() const {
410
6.98M
    return cast<TypeClass>(Base::getTypePtr());
411
6.98M
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getTypePtr() const
Line
Count
Source
409
34.1k
  const TypeClass *getTypePtr() const {
410
34.1k
    return cast<TypeClass>(Base::getTypePtr());
411
34.1k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getTypePtr() const
Line
Count
Source
409
1.11M
  const TypeClass *getTypePtr() const {
410
1.11M
    return cast<TypeClass>(Base::getTypePtr());
411
1.11M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getTypePtr() const
Line
Count
Source
409
1.79M
  const TypeClass *getTypePtr() const {
410
1.79M
    return cast<TypeClass>(Base::getTypePtr());
411
1.79M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getTypePtr() const
Line
Count
Source
409
25.1k
  const TypeClass *getTypePtr() const {
410
25.1k
    return cast<TypeClass>(Base::getTypePtr());
411
25.1k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getTypePtr() const
Line
Count
Source
409
438k
  const TypeClass *getTypePtr() const {
410
438k
    return cast<TypeClass>(Base::getTypePtr());
411
438k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getTypePtr() const
Line
Count
Source
409
25.4M
  const TypeClass *getTypePtr() const {
410
25.4M
    return cast<TypeClass>(Base::getTypePtr());
411
25.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getTypePtr() const
Line
Count
Source
409
622M
  const TypeClass *getTypePtr() const {
410
622M
    return cast<TypeClass>(Base::getTypePtr());
411
622M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getTypePtr() const
Line
Count
Source
409
2.40M
  const TypeClass *getTypePtr() const {
410
2.40M
    return cast<TypeClass>(Base::getTypePtr());
411
2.40M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getTypePtr() const
Line
Count
Source
409
50.2M
  const TypeClass *getTypePtr() const {
410
50.2M
    return cast<TypeClass>(Base::getTypePtr());
411
50.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getTypePtr() const
Line
Count
Source
409
466
  const TypeClass *getTypePtr() const {
410
466
    return cast<TypeClass>(Base::getTypePtr());
411
466
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getTypePtr() const
Line
Count
Source
409
3.66M
  const TypeClass *getTypePtr() const {
410
3.66M
    return cast<TypeClass>(Base::getTypePtr());
411
3.66M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getTypePtr() const
Line
Count
Source
409
775
  const TypeClass *getTypePtr() const {
410
775
    return cast<TypeClass>(Base::getTypePtr());
411
775
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getTypePtr() const
Line
Count
Source
409
321
  const TypeClass *getTypePtr() const {
410
321
    return cast<TypeClass>(Base::getTypePtr());
411
321
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getTypePtr() const
Line
Count
Source
409
4.05k
  const TypeClass *getTypePtr() const {
410
4.05k
    return cast<TypeClass>(Base::getTypePtr());
411
4.05k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getTypePtr() const
Line
Count
Source
409
3
  const TypeClass *getTypePtr() const {
410
3
    return cast<TypeClass>(Base::getTypePtr());
411
3
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getTypePtr() const
Line
Count
Source
409
543k
  const TypeClass *getTypePtr() const {
410
543k
    return cast<TypeClass>(Base::getTypePtr());
411
543k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getTypePtr() const
Line
Count
Source
409
18.2M
  const TypeClass *getTypePtr() const {
410
18.2M
    return cast<TypeClass>(Base::getTypePtr());
411
18.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getTypePtr() const
Line
Count
Source
409
4.12M
  const TypeClass *getTypePtr() const {
410
4.12M
    return cast<TypeClass>(Base::getTypePtr());
411
4.12M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getTypePtr() const
Line
Count
Source
409
3.46M
  const TypeClass *getTypePtr() const {
410
3.46M
    return cast<TypeClass>(Base::getTypePtr());
411
3.46M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getTypePtr() const
Line
Count
Source
409
5.09M
  const TypeClass *getTypePtr() const {
410
5.09M
    return cast<TypeClass>(Base::getTypePtr());
411
5.09M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getTypePtr() const
Line
Count
Source
409
39.1k
  const TypeClass *getTypePtr() const {
410
39.1k
    return cast<TypeClass>(Base::getTypePtr());
411
39.1k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getTypePtr() const
Line
Count
Source
409
834
  const TypeClass *getTypePtr() const {
410
834
    return cast<TypeClass>(Base::getTypePtr());
411
834
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getTypePtr() const
Line
Count
Source
409
325k
  const TypeClass *getTypePtr() const {
410
325k
    return cast<TypeClass>(Base::getTypePtr());
411
325k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getTypePtr() const
Line
Count
Source
409
354
  const TypeClass *getTypePtr() const {
410
354
    return cast<TypeClass>(Base::getTypePtr());
411
354
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getTypePtr() const
Line
Count
Source
409
6.40M
  const TypeClass *getTypePtr() const {
410
6.40M
    return cast<TypeClass>(Base::getTypePtr());
411
6.40M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getTypePtr() const
Line
Count
Source
409
46.4M
  const TypeClass *getTypePtr() const {
410
46.4M
    return cast<TypeClass>(Base::getTypePtr());
411
46.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getTypePtr() const
Line
Count
Source
409
1.11k
  const TypeClass *getTypePtr() const {
410
1.11k
    return cast<TypeClass>(Base::getTypePtr());
411
1.11k
  }
412
413
protected:
414
271M
  unsigned getExtraLocalDataSize() const {
415
271M
    return 0;
416
271M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
10.6M
  unsigned getExtraLocalDataSize() const {
415
10.6M
    return 0;
416
10.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
662k
  unsigned getExtraLocalDataSize() const {
415
662k
    return 0;
416
662k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
1.23M
  unsigned getExtraLocalDataSize() const {
415
1.23M
    return 0;
416
1.23M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
1.70M
  unsigned getExtraLocalDataSize() const {
415
1.70M
    return 0;
416
1.70M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
277
  unsigned getExtraLocalDataSize() const {
415
277
    return 0;
416
277
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
2.64M
  unsigned getExtraLocalDataSize() const {
415
2.64M
    return 0;
416
2.64M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
475
  unsigned getExtraLocalDataSize() const {
415
475
    return 0;
416
475
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
211
  unsigned getExtraLocalDataSize() const {
415
211
    return 0;
416
211
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
12.1M
  unsigned getExtraLocalDataSize() const {
415
12.1M
    return 0;
416
12.1M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
3.60M
  unsigned getExtraLocalDataSize() const {
415
3.60M
    return 0;
416
3.60M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
27.9k
  unsigned getExtraLocalDataSize() const {
415
27.9k
    return 0;
416
27.9k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
615
  unsigned getExtraLocalDataSize() const {
415
615
    return 0;
416
615
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
223k
  unsigned getExtraLocalDataSize() const {
415
223k
    return 0;
416
223k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
255k
  unsigned getExtraLocalDataSize() const {
415
255k
    return 0;
416
255k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
4.50M
  unsigned getExtraLocalDataSize() const {
415
4.50M
    return 0;
416
4.50M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
33.8M
  unsigned getExtraLocalDataSize() const {
415
33.8M
    return 0;
416
33.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
18.5M
  unsigned getExtraLocalDataSize() const {
415
18.5M
    return 0;
416
18.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
174M
  unsigned getExtraLocalDataSize() const {
415
174M
    return 0;
416
174M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
4.83M
  unsigned getExtraLocalDataSize() const {
415
4.83M
    return 0;
416
4.83M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
1.83k
  unsigned getExtraLocalDataSize() const {
415
1.83k
    return 0;
416
1.83k
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
1.90M
  unsigned getExtraLocalDataSize() const {
415
1.90M
    return 0;
416
1.90M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
4.55k
  unsigned getExtraLocalDataSize() const {
415
4.55k
    return 0;
416
4.55k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
120
  unsigned getExtraLocalDataSize() const {
415
120
    return 0;
416
120
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
4.64k
  unsigned getExtraLocalDataSize() const {
415
4.64k
    return 0;
416
4.64k
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getExtraLocalDataSize() const
417
418
595M
  unsigned getExtraLocalDataAlignment() const {
419
595M
    return 1;
420
595M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
15.0M
  unsigned getExtraLocalDataAlignment() const {
419
15.0M
    return 1;
420
15.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
874k
  unsigned getExtraLocalDataAlignment() const {
419
874k
    return 1;
420
874k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
2.42M
  unsigned getExtraLocalDataAlignment() const {
419
2.42M
    return 1;
420
2.42M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
2.47M
  unsigned getExtraLocalDataAlignment() const {
419
2.47M
    return 1;
420
2.47M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
527
  unsigned getExtraLocalDataAlignment() const {
419
527
    return 1;
420
527
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
3.80M
  unsigned getExtraLocalDataAlignment() const {
419
3.80M
    return 1;
420
3.80M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
605
  unsigned getExtraLocalDataAlignment() const {
419
605
    return 1;
420
605
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
272
  unsigned getExtraLocalDataAlignment() const {
419
272
    return 1;
420
272
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
18.4M
  unsigned getExtraLocalDataAlignment() const {
419
18.4M
    return 1;
420
18.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
4.82M
  unsigned getExtraLocalDataAlignment() const {
419
4.82M
    return 1;
420
4.82M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
37.7k
  unsigned getExtraLocalDataAlignment() const {
419
37.7k
    return 1;
420
37.7k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
821
  unsigned getExtraLocalDataAlignment() const {
419
821
    return 1;
420
821
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
411k
  unsigned getExtraLocalDataAlignment() const {
419
411k
    return 1;
420
411k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
312k
  unsigned getExtraLocalDataAlignment() const {
419
312k
    return 1;
420
312k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
8.45M
  unsigned getExtraLocalDataAlignment() const {
419
8.45M
    return 1;
420
8.45M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
47.1M
  unsigned getExtraLocalDataAlignment() const {
419
47.1M
    return 1;
420
47.1M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
27.1M
  unsigned getExtraLocalDataAlignment() const {
419
27.1M
    return 1;
420
27.1M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
7.20k
  unsigned getExtraLocalDataAlignment() const {
419
7.20k
    return 1;
420
7.20k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
446M
  unsigned getExtraLocalDataAlignment() const {
419
446M
    return 1;
420
446M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
10.9M
  unsigned getExtraLocalDataAlignment() const {
419
10.9M
    return 1;
420
10.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
3.66k
  unsigned getExtraLocalDataAlignment() const {
419
3.66k
    return 1;
420
3.66k
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
7.26M
  unsigned getExtraLocalDataAlignment() const {
419
7.26M
    return 1;
420
7.26M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
17.8k
  unsigned getExtraLocalDataAlignment() const {
419
17.8k
    return 1;
420
17.8k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
248
  unsigned getExtraLocalDataAlignment() const {
419
248
    return 1;
420
248
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
9.29k
  unsigned getExtraLocalDataAlignment() const {
419
9.29k
    return 1;
420
9.29k
  }
421
422
966M
  LocalData *getLocalData() const {
423
966M
    return static_cast<LocalData*>(Base::Data);
424
966M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getLocalData() const
Line
Count
Source
422
345M
  LocalData *getLocalData() const {
423
345M
    return static_cast<LocalData*>(Base::Data);
424
345M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getLocalData() const
Line
Count
Source
422
27.9M
  LocalData *getLocalData() const {
423
27.9M
    return static_cast<LocalData*>(Base::Data);
424
27.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getLocalData() const
Line
Count
Source
422
175k
  LocalData *getLocalData() const {
423
175k
    return static_cast<LocalData*>(Base::Data);
424
175k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getLocalData() const
Line
Count
Source
422
4.89M
  LocalData *getLocalData() const {
423
4.89M
    return static_cast<LocalData*>(Base::Data);
424
4.89M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getLocalData() const
Line
Count
Source
422
1.34M
  LocalData *getLocalData() const {
423
1.34M
    return static_cast<LocalData*>(Base::Data);
424
1.34M
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getLocalData() const
Line
Count
Source
422
5.88M
  LocalData *getLocalData() const {
423
5.88M
    return static_cast<LocalData*>(Base::Data);
424
5.88M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getLocalData() const
Line
Count
Source
422
219k
  LocalData *getLocalData() const {
423
219k
    return static_cast<LocalData*>(Base::Data);
424
219k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getLocalData() const
Line
Count
Source
422
915k
  LocalData *getLocalData() const {
423
915k
    return static_cast<LocalData*>(Base::Data);
424
915k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getLocalData() const
Line
Count
Source
422
14.0M
  LocalData *getLocalData() const {
423
14.0M
    return static_cast<LocalData*>(Base::Data);
424
14.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getLocalData() const
Line
Count
Source
422
129k
  LocalData *getLocalData() const {
423
129k
    return static_cast<LocalData*>(Base::Data);
424
129k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getLocalData() const
Line
Count
Source
422
231k
  LocalData *getLocalData() const {
423
231k
    return static_cast<LocalData*>(Base::Data);
424
231k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getLocalData() const
Line
Count
Source
422
2.36M
  LocalData *getLocalData() const {
423
2.36M
    return static_cast<LocalData*>(Base::Data);
424
2.36M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getLocalData() const
Line
Count
Source
422
9.34M
  LocalData *getLocalData() const {
423
9.34M
    return static_cast<LocalData*>(Base::Data);
424
9.34M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getLocalData() const
Line
Count
Source
422
145M
  LocalData *getLocalData() const {
423
145M
    return static_cast<LocalData*>(Base::Data);
424
145M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getLocalData() const
Line
Count
Source
422
1.75M
  LocalData *getLocalData() const {
423
1.75M
    return static_cast<LocalData*>(Base::Data);
424
1.75M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getLocalData() const
Line
Count
Source
422
365M
  LocalData *getLocalData() const {
423
365M
    return static_cast<LocalData*>(Base::Data);
424
365M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getLocalData() const
Line
Count
Source
422
343
  LocalData *getLocalData() const {
423
343
    return static_cast<LocalData*>(Base::Data);
424
343
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getLocalData() const
Line
Count
Source
422
1.73M
  LocalData *getLocalData() const {
423
1.73M
    return static_cast<LocalData*>(Base::Data);
424
1.73M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getLocalData() const
Line
Count
Source
422
260
  LocalData *getLocalData() const {
423
260
    return static_cast<LocalData*>(Base::Data);
424
260
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getLocalData() const
Line
Count
Source
422
125
  LocalData *getLocalData() const {
423
125
    return static_cast<LocalData*>(Base::Data);
424
125
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getLocalData() const
Line
Count
Source
422
6.10k
  LocalData *getLocalData() const {
423
6.10k
    return static_cast<LocalData*>(Base::Data);
424
6.10k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getLocalData() const
Line
Count
Source
422
672
  LocalData *getLocalData() const {
423
672
    return static_cast<LocalData*>(Base::Data);
424
672
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getLocalData() const
Line
Count
Source
422
17.4k
  LocalData *getLocalData() const {
423
17.4k
    return static_cast<LocalData*>(Base::Data);
424
17.4k
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getLocalData() const
Line
Count
Source
422
247k
  LocalData *getLocalData() const {
423
247k
    return static_cast<LocalData*>(Base::Data);
424
247k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getLocalData() const
Line
Count
Source
422
7.51M
  LocalData *getLocalData() const {
423
7.51M
    return static_cast<LocalData*>(Base::Data);
424
7.51M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getLocalData() const
Line
Count
Source
422
21.7M
  LocalData *getLocalData() const {
423
21.7M
    return static_cast<LocalData*>(Base::Data);
424
21.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getLocalData() const
Line
Count
Source
422
6.71M
  LocalData *getLocalData() const {
423
6.71M
    return static_cast<LocalData*>(Base::Data);
424
6.71M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getLocalData() const
Line
Count
Source
422
1.87M
  LocalData *getLocalData() const {
423
1.87M
    return static_cast<LocalData*>(Base::Data);
424
1.87M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getLocalData() const
Line
Count
Source
422
28.4k
  LocalData *getLocalData() const {
423
28.4k
    return static_cast<LocalData*>(Base::Data);
424
28.4k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getLocalData() const
Line
Count
Source
422
217
  LocalData *getLocalData() const {
423
217
    return static_cast<LocalData*>(Base::Data);
424
217
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getLocalData() const
Line
Count
Source
422
32.1k
  LocalData *getLocalData() const {
423
32.1k
    return static_cast<LocalData*>(Base::Data);
424
32.1k
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getLocalData() const
425
426
  /// Gets a pointer past the Info structure; useful for classes with
427
  /// local data that can't be captured in the Info (e.g. because it's
428
  /// of variable size).
429
141M
  void *getExtraLocalData() const {
430
141M
    unsigned size = sizeof(LocalData);
431
141M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
141M
    size = llvm::alignTo(size, extraAlign);
433
141M
    return reinterpret_cast<char*>(Base::Data) + size;
434
141M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getExtraLocalData() const
Line
Count
Source
429
16.7M
  void *getExtraLocalData() const {
430
16.7M
    unsigned size = sizeof(LocalData);
431
16.7M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
16.7M
    size = llvm::alignTo(size, extraAlign);
433
16.7M
    return reinterpret_cast<char*>(Base::Data) + size;
434
16.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getExtraLocalData() const
Line
Count
Source
429
12.9k
  void *getExtraLocalData() const {
430
12.9k
    unsigned size = sizeof(LocalData);
431
12.9k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
12.9k
    size = llvm::alignTo(size, extraAlign);
433
12.9k
    return reinterpret_cast<char*>(Base::Data) + size;
434
12.9k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getExtraLocalData() const
Line
Count
Source
429
194k
  void *getExtraLocalData() const {
430
194k
    unsigned size = sizeof(LocalData);
431
194k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
194k
    size = llvm::alignTo(size, extraAlign);
433
194k
    return reinterpret_cast<char*>(Base::Data) + size;
434
194k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getExtraLocalData() const
Line
Count
Source
429
102M
  void *getExtraLocalData() const {
430
102M
    unsigned size = sizeof(LocalData);
431
102M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
102M
    size = llvm::alignTo(size, extraAlign);
433
102M
    return reinterpret_cast<char*>(Base::Data) + size;
434
102M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getExtraLocalData() const
Line
Count
Source
429
21.2M
  void *getExtraLocalData() const {
430
21.2M
    unsigned size = sizeof(LocalData);
431
21.2M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
21.2M
    size = llvm::alignTo(size, extraAlign);
433
21.2M
    return reinterpret_cast<char*>(Base::Data) + size;
434
21.2M
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getExtraLocalData() const
Line
Count
Source
429
28.2k
  void *getExtraLocalData() const {
430
28.2k
    unsigned size = sizeof(LocalData);
431
28.2k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
28.2k
    size = llvm::alignTo(size, extraAlign);
433
28.2k
    return reinterpret_cast<char*>(Base::Data) + size;
434
28.2k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getExtraLocalData() const
Line
Count
Source
429
639k
  void *getExtraLocalData() const {
430
639k
    unsigned size = sizeof(LocalData);
431
639k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
639k
    size = llvm::alignTo(size, extraAlign);
433
639k
    return reinterpret_cast<char*>(Base::Data) + size;
434
639k
  }
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
429
2
  void *getExtraLocalData() const {
430
2
    unsigned size = sizeof(LocalData);
431
2
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
2
    size = llvm::alignTo(size, extraAlign);
433
2
    return reinterpret_cast<char*>(Base::Data) + size;
434
2
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getExtraLocalData() const
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getExtraLocalData() const
Line
Count
Source
429
2.88k
  void *getExtraLocalData() const {
430
2.88k
    unsigned size = sizeof(LocalData);
431
2.88k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
2.88k
    size = llvm::alignTo(size, extraAlign);
433
2.88k
    return reinterpret_cast<char*>(Base::Data) + size;
434
2.88k
  }
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
429
36
  void *getExtraLocalData() const {
430
36
    unsigned size = sizeof(LocalData);
431
36
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
36
    size = llvm::alignTo(size, extraAlign);
433
36
    return reinterpret_cast<char*>(Base::Data) + size;
434
36
  }
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
429
6
  void *getExtraLocalData() const {
430
6
    unsigned size = sizeof(LocalData);
431
6
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
6
    size = llvm::alignTo(size, extraAlign);
433
6
    return reinterpret_cast<char*>(Base::Data) + size;
434
6
  }
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
429
64
  void *getExtraLocalData() const {
430
64
    unsigned size = sizeof(LocalData);
431
64
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
64
    size = llvm::alignTo(size, extraAlign);
433
64
    return reinterpret_cast<char*>(Base::Data) + size;
434
64
  }
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
429
2
  void *getExtraLocalData() const {
430
2
    unsigned size = sizeof(LocalData);
431
2
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
2
    size = llvm::alignTo(size, extraAlign);
433
2
    return reinterpret_cast<char*>(Base::Data) + size;
434
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
429
4
  void *getExtraLocalData() const {
430
4
    unsigned size = sizeof(LocalData);
431
4
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
4
    size = llvm::alignTo(size, extraAlign);
433
4
    return reinterpret_cast<char*>(Base::Data) + size;
434
4
  }
435
436
138M
  void *getNonLocalData() const {
437
138M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
138M
    data += asDerived()->getLocalDataSize();
439
138M
    data = llvm::alignTo(data, getNextTypeAlign());
440
138M
    return reinterpret_cast<void*>(data);
441
138M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNonLocalData() const
Line
Count
Source
436
7.44M
  void *getNonLocalData() const {
437
7.44M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
7.44M
    data += asDerived()->getLocalDataSize();
439
7.44M
    data = llvm::alignTo(data, getNextTypeAlign());
440
7.44M
    return reinterpret_cast<void*>(data);
441
7.44M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNonLocalData() const
Line
Count
Source
436
1.11M
  void *getNonLocalData() const {
437
1.11M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
1.11M
    data += asDerived()->getLocalDataSize();
439
1.11M
    data = llvm::alignTo(data, getNextTypeAlign());
440
1.11M
    return reinterpret_cast<void*>(data);
441
1.11M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getNonLocalData() const
Line
Count
Source
436
449k
  void *getNonLocalData() const {
437
449k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
449k
    data += asDerived()->getLocalDataSize();
439
449k
    data = llvm::alignTo(data, getNextTypeAlign());
440
449k
    return reinterpret_cast<void*>(data);
441
449k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNonLocalData() const
Line
Count
Source
436
877k
  void *getNonLocalData() const {
437
877k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
877k
    data += asDerived()->getLocalDataSize();
439
877k
    data = llvm::alignTo(data, getNextTypeAlign());
440
877k
    return reinterpret_cast<void*>(data);
441
877k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNonLocalData() const
Line
Count
Source
436
12.5k
  void *getNonLocalData() const {
437
12.5k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
12.5k
    data += asDerived()->getLocalDataSize();
439
12.5k
    data = llvm::alignTo(data, getNextTypeAlign());
440
12.5k
    return reinterpret_cast<void*>(data);
441
12.5k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNonLocalData() const
Line
Count
Source
436
77.0M
  void *getNonLocalData() const {
437
77.0M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
77.0M
    data += asDerived()->getLocalDataSize();
439
77.0M
    data = llvm::alignTo(data, getNextTypeAlign());
440
77.0M
    return reinterpret_cast<void*>(data);
441
77.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNonLocalData() const
Line
Count
Source
436
1.17M
  void *getNonLocalData() const {
437
1.17M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
1.17M
    data += asDerived()->getLocalDataSize();
439
1.17M
    data = llvm::alignTo(data, getNextTypeAlign());
440
1.17M
    return reinterpret_cast<void*>(data);
441
1.17M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNonLocalData() const
Line
Count
Source
436
195
  void *getNonLocalData() const {
437
195
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
195
    data += asDerived()->getLocalDataSize();
439
195
    data = llvm::alignTo(data, getNextTypeAlign());
440
195
    return reinterpret_cast<void*>(data);
441
195
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getNonLocalData() const
Line
Count
Source
436
1.82M
  void *getNonLocalData() const {
437
1.82M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
1.82M
    data += asDerived()->getLocalDataSize();
439
1.82M
    data = llvm::alignTo(data, getNextTypeAlign());
440
1.82M
    return reinterpret_cast<void*>(data);
441
1.82M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getNonLocalData() const
Line
Count
Source
436
345
  void *getNonLocalData() const {
437
345
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
345
    data += asDerived()->getLocalDataSize();
439
345
    data = llvm::alignTo(data, getNextTypeAlign());
440
345
    return reinterpret_cast<void*>(data);
441
345
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getNonLocalData() const
Line
Count
Source
436
150
  void *getNonLocalData() const {
437
150
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
150
    data += asDerived()->getLocalDataSize();
439
150
    data = llvm::alignTo(data, getNextTypeAlign());
440
150
    return reinterpret_cast<void*>(data);
441
150
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNonLocalData() const
Line
Count
Source
436
7.16M
  void *getNonLocalData() const {
437
7.16M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
7.16M
    data += asDerived()->getLocalDataSize();
439
7.16M
    data = llvm::alignTo(data, getNextTypeAlign());
440
7.16M
    return reinterpret_cast<void*>(data);
441
7.16M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNonLocalData() const
Line
Count
Source
436
2.38M
  void *getNonLocalData() const {
437
2.38M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
2.38M
    data += asDerived()->getLocalDataSize();
439
2.38M
    data = llvm::alignTo(data, getNextTypeAlign());
440
2.38M
    return reinterpret_cast<void*>(data);
441
2.38M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNonLocalData() const
Line
Count
Source
436
19.1k
  void *getNonLocalData() const {
437
19.1k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
19.1k
    data += asDerived()->getLocalDataSize();
439
19.1k
    data = llvm::alignTo(data, getNextTypeAlign());
440
19.1k
    return reinterpret_cast<void*>(data);
441
19.1k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNonLocalData() const
Line
Count
Source
436
417
  void *getNonLocalData() const {
437
417
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
417
    data += asDerived()->getLocalDataSize();
439
417
    data = llvm::alignTo(data, getNextTypeAlign());
440
417
    return reinterpret_cast<void*>(data);
441
417
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNonLocalData() const
Line
Count
Source
436
161k
  void *getNonLocalData() const {
437
161k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
161k
    data += asDerived()->getLocalDataSize();
439
161k
    data = llvm::alignTo(data, getNextTypeAlign());
440
161k
    return reinterpret_cast<void*>(data);
441
161k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNonLocalData() const
Line
Count
Source
436
202k
  void *getNonLocalData() const {
437
202k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
202k
    data += asDerived()->getLocalDataSize();
439
202k
    data = llvm::alignTo(data, getNextTypeAlign());
440
202k
    return reinterpret_cast<void*>(data);
441
202k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNonLocalData() const
Line
Count
Source
436
3.18M
  void *getNonLocalData() const {
437
3.18M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
3.18M
    data += asDerived()->getLocalDataSize();
439
3.18M
    data = llvm::alignTo(data, getNextTypeAlign());
440
3.18M
    return reinterpret_cast<void*>(data);
441
3.18M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNonLocalData() const
Line
Count
Source
436
23.0M
  void *getNonLocalData() const {
437
23.0M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
23.0M
    data += asDerived()->getLocalDataSize();
439
23.0M
    data = llvm::alignTo(data, getNextTypeAlign());
440
23.0M
    return reinterpret_cast<void*>(data);
441
23.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNonLocalData() const
Line
Count
Source
436
12.2M
  void *getNonLocalData() const {
437
12.2M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
12.2M
    data += asDerived()->getLocalDataSize();
439
12.2M
    data = llvm::alignTo(data, getNextTypeAlign());
440
12.2M
    return reinterpret_cast<void*>(data);
441
12.2M
  }
442
443
  struct HasNoInnerType {};
444
347M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getInnerType() const
Line
Count
Source
444
25.9M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getInnerType() const
Line
Count
Source
444
231M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getInnerType() const
Line
Count
Source
444
351k
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getInnerType() const
Line
Count
Source
444
7.22M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getInnerType() const
Line
Count
Source
444
1.45M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getInnerType() const
Line
Count
Source
444
2.66k
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getInnerType() const
Line
Count
Source
444
2.97M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getInnerType() const
Line
Count
Source
444
285k
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getInnerType() const
Line
Count
Source
444
77.6M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getInnerType() const
Line
Count
Source
444
7.95k
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getInnerType() const
Line
Count
Source
444
186
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getInnerType() const
Line
Count
Source
444
6.10k
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
445
446
6.64M
  TypeLoc getInnerTypeLoc() const {
447
6.64M
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
6.64M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
1.76M
  TypeLoc getInnerTypeLoc() const {
447
1.76M
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
1.76M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
154k
  TypeLoc getInnerTypeLoc() const {
447
154k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
154k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
160k
  TypeLoc getInnerTypeLoc() const {
447
160k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
160k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
49.8k
  TypeLoc getInnerTypeLoc() const {
447
49.8k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
49.8k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
2.13k
  TypeLoc getInnerTypeLoc() const {
447
2.13k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
2.13k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
1.57M
  TypeLoc getInnerTypeLoc() const {
447
1.57M
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
1.57M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
51.2k
  TypeLoc getInnerTypeLoc() const {
447
51.2k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
51.2k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
1
  TypeLoc getInnerTypeLoc() const {
447
1
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
1
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
4
  TypeLoc getInnerTypeLoc() const {
447
4
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
4
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
85
  TypeLoc getInnerTypeLoc() const {
447
85
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
85
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
18
  TypeLoc getInnerTypeLoc() const {
447
18
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
18
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
133k
  TypeLoc getInnerTypeLoc() const {
447
133k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
133k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
393k
  TypeLoc getInnerTypeLoc() const {
447
393k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
393k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
4.54k
  TypeLoc getInnerTypeLoc() const {
447
4.54k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
4.54k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
2
  TypeLoc getInnerTypeLoc() const {
447
2
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
2
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
2.04k
  TypeLoc getInnerTypeLoc() const {
447
2.04k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
2.04k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
2.09k
  TypeLoc getInnerTypeLoc() const {
447
2.09k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
2.09k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
53.1k
  TypeLoc getInnerTypeLoc() const {
447
53.1k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
53.1k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
1.14M
  TypeLoc getInnerTypeLoc() const {
447
1.14M
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
1.14M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
1.15M
  TypeLoc getInnerTypeLoc() const {
447
1.15M
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
1.15M
  }
449
450
private:
451
  unsigned getInnerTypeSize() const {
452
    return getInnerTypeSize(asDerived()->getInnerType());
453
  }
454
455
  unsigned getInnerTypeSize(HasNoInnerType _) const {
456
    return 0;
457
  }
458
459
  unsigned getInnerTypeSize(QualType _) const {
460
    return getInnerTypeLoc().getFullDataSize();
461
  }
462
463
138M
  unsigned getNextTypeAlign() const {
464
138M
    return getNextTypeAlign(asDerived()->getInnerType());
465
138M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
7.44M
  unsigned getNextTypeAlign() const {
464
7.44M
    return getNextTypeAlign(asDerived()->getInnerType());
465
7.44M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
1.11M
  unsigned getNextTypeAlign() const {
464
1.11M
    return getNextTypeAlign(asDerived()->getInnerType());
465
1.11M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
449k
  unsigned getNextTypeAlign() const {
464
449k
    return getNextTypeAlign(asDerived()->getInnerType());
465
449k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
877k
  unsigned getNextTypeAlign() const {
464
877k
    return getNextTypeAlign(asDerived()->getInnerType());
465
877k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
12.5k
  unsigned getNextTypeAlign() const {
464
12.5k
    return getNextTypeAlign(asDerived()->getInnerType());
465
12.5k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
77.0M
  unsigned getNextTypeAlign() const {
464
77.0M
    return getNextTypeAlign(asDerived()->getInnerType());
465
77.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
1.17M
  unsigned getNextTypeAlign() const {
464
1.17M
    return getNextTypeAlign(asDerived()->getInnerType());
465
1.17M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
195
  unsigned getNextTypeAlign() const {
464
195
    return getNextTypeAlign(asDerived()->getInnerType());
465
195
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
1.82M
  unsigned getNextTypeAlign() const {
464
1.82M
    return getNextTypeAlign(asDerived()->getInnerType());
465
1.82M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
345
  unsigned getNextTypeAlign() const {
464
345
    return getNextTypeAlign(asDerived()->getInnerType());
465
345
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
150
  unsigned getNextTypeAlign() const {
464
150
    return getNextTypeAlign(asDerived()->getInnerType());
465
150
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
7.16M
  unsigned getNextTypeAlign() const {
464
7.16M
    return getNextTypeAlign(asDerived()->getInnerType());
465
7.16M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
2.38M
  unsigned getNextTypeAlign() const {
464
2.38M
    return getNextTypeAlign(asDerived()->getInnerType());
465
2.38M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
19.1k
  unsigned getNextTypeAlign() const {
464
19.1k
    return getNextTypeAlign(asDerived()->getInnerType());
465
19.1k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
417
  unsigned getNextTypeAlign() const {
464
417
    return getNextTypeAlign(asDerived()->getInnerType());
465
417
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
161k
  unsigned getNextTypeAlign() const {
464
161k
    return getNextTypeAlign(asDerived()->getInnerType());
465
161k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
202k
  unsigned getNextTypeAlign() const {
464
202k
    return getNextTypeAlign(asDerived()->getInnerType());
465
202k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
3.18M
  unsigned getNextTypeAlign() const {
464
3.18M
    return getNextTypeAlign(asDerived()->getInnerType());
465
3.18M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
23.0M
  unsigned getNextTypeAlign() const {
464
23.0M
    return getNextTypeAlign(asDerived()->getInnerType());
465
23.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
12.2M
  unsigned getNextTypeAlign() const {
464
12.2M
    return getNextTypeAlign(asDerived()->getInnerType());
465
12.2M
  }
466
467
  unsigned getNextTypeAlign(HasNoInnerType _) const {
468
    return 1;
469
  }
470
471
138M
  unsigned getNextTypeAlign(QualType T) const {
472
138M
    return TypeLoc::getLocalAlignmentForType(T);
473
138M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
7.44M
  unsigned getNextTypeAlign(QualType T) const {
472
7.44M
    return TypeLoc::getLocalAlignmentForType(T);
473
7.44M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
1.11M
  unsigned getNextTypeAlign(QualType T) const {
472
1.11M
    return TypeLoc::getLocalAlignmentForType(T);
473
1.11M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
449k
  unsigned getNextTypeAlign(QualType T) const {
472
449k
    return TypeLoc::getLocalAlignmentForType(T);
473
449k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
877k
  unsigned getNextTypeAlign(QualType T) const {
472
877k
    return TypeLoc::getLocalAlignmentForType(T);
473
877k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
12.5k
  unsigned getNextTypeAlign(QualType T) const {
472
12.5k
    return TypeLoc::getLocalAlignmentForType(T);
473
12.5k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
77.0M
  unsigned getNextTypeAlign(QualType T) const {
472
77.0M
    return TypeLoc::getLocalAlignmentForType(T);
473
77.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
1.17M
  unsigned getNextTypeAlign(QualType T) const {
472
1.17M
    return TypeLoc::getLocalAlignmentForType(T);
473
1.17M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
195
  unsigned getNextTypeAlign(QualType T) const {
472
195
    return TypeLoc::getLocalAlignmentForType(T);
473
195
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
1.82M
  unsigned getNextTypeAlign(QualType T) const {
472
1.82M
    return TypeLoc::getLocalAlignmentForType(T);
473
1.82M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
345
  unsigned getNextTypeAlign(QualType T) const {
472
345
    return TypeLoc::getLocalAlignmentForType(T);
473
345
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
150
  unsigned getNextTypeAlign(QualType T) const {
472
150
    return TypeLoc::getLocalAlignmentForType(T);
473
150
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
7.16M
  unsigned getNextTypeAlign(QualType T) const {
472
7.16M
    return TypeLoc::getLocalAlignmentForType(T);
473
7.16M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
2.38M
  unsigned getNextTypeAlign(QualType T) const {
472
2.38M
    return TypeLoc::getLocalAlignmentForType(T);
473
2.38M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
19.1k
  unsigned getNextTypeAlign(QualType T) const {
472
19.1k
    return TypeLoc::getLocalAlignmentForType(T);
473
19.1k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
417
  unsigned getNextTypeAlign(QualType T) const {
472
417
    return TypeLoc::getLocalAlignmentForType(T);
473
417
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
161k
  unsigned getNextTypeAlign(QualType T) const {
472
161k
    return TypeLoc::getLocalAlignmentForType(T);
473
161k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
202k
  unsigned getNextTypeAlign(QualType T) const {
472
202k
    return TypeLoc::getLocalAlignmentForType(T);
473
202k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
3.18M
  unsigned getNextTypeAlign(QualType T) const {
472
3.18M
    return TypeLoc::getLocalAlignmentForType(T);
473
3.18M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
23.0M
  unsigned getNextTypeAlign(QualType T) const {
472
23.0M
    return TypeLoc::getLocalAlignmentForType(T);
473
23.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
12.2M
  unsigned getNextTypeAlign(QualType T) const {
472
12.2M
    return TypeLoc::getLocalAlignmentForType(T);
473
12.2M
  }
474
475
347M
  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
475
25.9M
  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
475
231M
  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
475
351k
  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
475
7.22M
  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
475
1.45M
  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
475
2.66k
  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
475
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
475
285k
  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
475
77.6M
  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
475
7.95k
  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
475
186
  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
475
6.10k
  TypeLoc getNextTypeLoc(HasNoInnerType _) const { return {}; }
476
477
131M
  TypeLoc getNextTypeLoc(QualType T) const {
478
131M
    return TypeLoc(T, getNonLocalData());
479
131M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
10.4k
  TypeLoc getNextTypeLoc(QualType T) const {
478
10.4k
    return TypeLoc(T, getNonLocalData());
479
10.4k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
1.12M
  TypeLoc getNextTypeLoc(QualType T) const {
478
1.12M
    return TypeLoc(T, getNonLocalData());
479
1.12M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
14.6k
  TypeLoc getNextTypeLoc(QualType T) const {
478
14.6k
    return TypeLoc(T, getNonLocalData());
479
14.6k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
5.67M
  TypeLoc getNextTypeLoc(QualType T) const {
478
5.67M
    return TypeLoc(T, getNonLocalData());
479
5.67M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
159k
  TypeLoc getNextTypeLoc(QualType T) const {
478
159k
    return TypeLoc(T, getNonLocalData());
479
159k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
194
  TypeLoc getNextTypeLoc(QualType T) const {
478
194
    return TypeLoc(T, getNonLocalData());
479
194
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
132
  TypeLoc getNextTypeLoc(QualType T) const {
478
132
    return TypeLoc(T, getNonLocalData());
479
132
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
260
  TypeLoc getNextTypeLoc(QualType T) const {
478
260
    return TypeLoc(T, getNonLocalData());
479
260
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
7.02M
  TypeLoc getNextTypeLoc(QualType T) const {
478
7.02M
    return TypeLoc(T, getNonLocalData());
479
7.02M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
75.5M
  TypeLoc getNextTypeLoc(QualType T) const {
478
75.5M
    return TypeLoc(T, getNonLocalData());
479
75.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
288k
  TypeLoc getNextTypeLoc(QualType T) const {
478
288k
    return TypeLoc(T, getNonLocalData());
479
288k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
200k
  TypeLoc getNextTypeLoc(QualType T) const {
478
200k
    return TypeLoc(T, getNonLocalData());
479
200k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
3.13M
  TypeLoc getNextTypeLoc(QualType T) const {
478
3.13M
    return TypeLoc(T, getNonLocalData());
479
3.13M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
960k
  TypeLoc getNextTypeLoc(QualType T) const {
478
960k
    return TypeLoc(T, getNonLocalData());
479
960k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
1.98M
  TypeLoc getNextTypeLoc(QualType T) const {
478
1.98M
    return TypeLoc(T, getNonLocalData());
479
1.98M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
827k
  TypeLoc getNextTypeLoc(QualType T) const {
478
827k
    return TypeLoc(T, getNonLocalData());
479
827k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
415
  TypeLoc getNextTypeLoc(QualType T) const {
478
415
    return TypeLoc(T, getNonLocalData());
479
415
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
21.9M
  TypeLoc getNextTypeLoc(QualType T) const {
478
21.9M
    return TypeLoc(T, getNonLocalData());
479
21.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
11.0M
  TypeLoc getNextTypeLoc(QualType T) const {
478
11.0M
    return TypeLoc(T, getNonLocalData());
479
11.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
1.82M
  TypeLoc getNextTypeLoc(QualType T) const {
478
1.82M
    return TypeLoc(T, getNonLocalData());
479
1.82M
  }
480
};
481
482
/// A metaprogramming class designed for concrete subtypes of abstract
483
/// types where all subtypes share equivalently-structured source
484
/// information.  See the note on ConcreteTypeLoc.
485
template <class Base, class Derived, class TypeClass>
486
class InheritingConcreteTypeLoc : public Base {
487
  friend class TypeLoc;
488
489
1.14G
  static bool classofType(const Type *Ty) {
490
1.14G
    return TypeClass::classof(Ty);
491
1.14G
  }
clang::InheritingConcreteTypeLoc<clang::AdjustedTypeLoc, clang::DecayedTypeLoc, clang::DecayedType>::classofType(clang::Type const*)
Line
Count
Source
489
26.7k
  static bool classofType(const Type *Ty) {
490
26.7k
    return TypeClass::classof(Ty);
491
26.7k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::ConstantArrayTypeLoc, clang::ConstantArrayType>::classofType(clang::Type const*)
Line
Count
Source
489
2.06M
  static bool classofType(const Type *Ty) {
490
2.06M
    return TypeClass::classof(Ty);
491
2.06M
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::DependentSizedArrayTypeLoc, clang::DependentSizedArrayType>::classofType(clang::Type const*)
Line
Count
Source
489
192k
  static bool classofType(const Type *Ty) {
490
192k
    return TypeClass::classof(Ty);
491
192k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::IncompleteArrayTypeLoc, clang::IncompleteArrayType>::classofType(clang::Type const*)
Line
Count
Source
489
471k
  static bool classofType(const Type *Ty) {
490
471k
    return TypeClass::classof(Ty);
491
471k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::VariableArrayTypeLoc, clang::VariableArrayType>::classofType(clang::Type const*)
Line
Count
Source
489
118k
  static bool classofType(const Type *Ty) {
490
118k
    return TypeClass::classof(Ty);
491
118k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::ComplexTypeLoc, clang::ComplexType>::classofType(clang::Type const*)
Line
Count
Source
489
90.6k
  static bool classofType(const Type *Ty) {
490
90.6k
    return TypeClass::classof(Ty);
491
90.6k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType>::classofType(clang::Type const*)
Line
Count
Source
489
3.42M
  static bool classofType(const Type *Ty) {
490
3.42M
    return TypeClass::classof(Ty);
491
3.42M
  }
clang::InheritingConcreteTypeLoc<clang::DeducedTypeLoc, clang::DeducedTemplateSpecializationTypeLoc, clang::DeducedTemplateSpecializationType>::classofType(clang::Type const*)
Line
Count
Source
489
131k
  static bool classofType(const Type *Ty) {
490
131k
    return TypeClass::classof(Ty);
491
131k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DependentExtIntTypeLoc, clang::DependentExtIntType>::classofType(clang::Type const*)
Line
Count
Source
489
79
  static bool classofType(const Type *Ty) {
490
79
    return TypeClass::classof(Ty);
491
79
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::ExtIntTypeLoc, clang::ExtIntType>::classofType(clang::Type const*)
Line
Count
Source
489
6.47k
  static bool classofType(const Type *Ty) {
490
6.47k
    return TypeClass::classof(Ty);
491
6.47k
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionNoProtoTypeLoc, clang::FunctionNoProtoType>::classofType(clang::Type const*)
Line
Count
Source
489
613k
  static bool classofType(const Type *Ty) {
490
613k
    return TypeClass::classof(Ty);
491
613k
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionProtoTypeLoc, clang::FunctionProtoType>::classofType(clang::Type const*)
Line
Count
Source
489
194M
  static bool classofType(const Type *Ty) {
490
194M
    return TypeClass::classof(Ty);
491
194M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::InjectedClassNameTypeLoc, clang::InjectedClassNameType>::classofType(clang::Type const*)
Line
Count
Source
489
10.1M
  static bool classofType(const Type *Ty) {
490
10.1M
    return TypeClass::classof(Ty);
491
10.1M
  }
clang::InheritingConcreteTypeLoc<clang::MatrixTypeLoc, clang::ConstantMatrixTypeLoc, clang::ConstantMatrixType>::classofType(clang::Type const*)
Line
Count
Source
489
4.45k
  static bool classofType(const Type *Ty) {
490
4.45k
    return TypeClass::classof(Ty);
491
4.45k
  }
clang::InheritingConcreteTypeLoc<clang::MatrixTypeLoc, clang::DependentSizedMatrixTypeLoc, clang::DependentSizedMatrixType>::classofType(clang::Type const*)
Line
Count
Source
489
2.70k
  static bool classofType(const Type *Ty) {
490
2.70k
    return TypeClass::classof(Ty);
491
2.70k
  }
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::LValueReferenceTypeLoc, clang::LValueReferenceType>::classofType(clang::Type const*)
Line
Count
Source
489
24.5M
  static bool classofType(const Type *Ty) {
490
24.5M
    return TypeClass::classof(Ty);
491
24.5M
  }
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::RValueReferenceTypeLoc, clang::RValueReferenceType>::classofType(clang::Type const*)
Line
Count
Source
489
6.69M
  static bool classofType(const Type *Ty) {
490
6.69M
    return TypeClass::classof(Ty);
491
6.69M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmPackTypeLoc, clang::SubstTemplateTypeParmPackType>::classofType(clang::Type const*)
Line
Count
Source
489
437k
  static bool classofType(const Type *Ty) {
490
437k
    return TypeClass::classof(Ty);
491
437k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmTypeLoc, clang::SubstTemplateTypeParmType>::classofType(clang::Type const*)
Line
Count
Source
489
71.3M
  static bool classofType(const Type *Ty) {
490
71.3M
    return TypeClass::classof(Ty);
491
71.3M
  }
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::EnumTypeLoc, clang::EnumType>::classofType(clang::Type const*)
Line
Count
Source
489
4.02M
  static bool classofType(const Type *Ty) {
490
4.02M
    return TypeClass::classof(Ty);
491
4.02M
  }
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::RecordTypeLoc, clang::RecordType>::classofType(clang::Type const*)
Line
Count
Source
489
39.2M
  static bool classofType(const Type *Ty) {
490
39.2M
    return TypeClass::classof(Ty);
491
39.2M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TemplateTypeParmTypeLoc, clang::TemplateTypeParmType>::classofType(clang::Type const*)
Line
Count
Source
489
132M
  static bool classofType(const Type *Ty) {
490
132M
    return TypeClass::classof(Ty);
491
132M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TypedefTypeLoc, clang::TypedefType>::classofType(clang::Type const*)
Line
Count
Source
489
654M
  static bool classofType(const Type *Ty) {
490
654M
    return TypeClass::classof(Ty);
491
654M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::UnresolvedUsingTypeLoc, clang::UnresolvedUsingType>::classofType(clang::Type const*)
Line
Count
Source
489
16.1k
  static bool classofType(const Type *Ty) {
490
16.1k
    return TypeClass::classof(Ty);
491
16.1k
  }
clang::InheritingConcreteTypeLoc<clang::VectorTypeLoc, clang::ExtVectorTypeLoc, clang::ExtVectorType>::classofType(clang::Type const*)
Line
Count
Source
489
24.4k
  static bool classofType(const Type *Ty) {
490
24.4k
    return TypeClass::classof(Ty);
491
24.4k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DeducedTypeLoc, clang::DeducedType>::classofType(clang::Type const*)
Line
Count
Source
489
814
  static bool classofType(const Type *Ty) {
490
814
    return TypeClass::classof(Ty);
491
814
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TagTypeLoc, clang::TagType>::classofType(clang::Type const*)
Line
Count
Source
489
1.89M
  static bool classofType(const Type *Ty) {
490
1.89M
    return TypeClass::classof(Ty);
491
1.89M
  }
492
493
1.14G
  static bool isKind(const TypeLoc &TL) {
494
1.14G
    return !TL.getType().hasLocalQualifiers() &&
495
1.14G
           
Derived::classofType(TL.getTypePtr())1.14G
;
496
1.14G
  }
clang::InheritingConcreteTypeLoc<clang::AdjustedTypeLoc, clang::DecayedTypeLoc, clang::DecayedType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
26.7k
  static bool isKind(const TypeLoc &TL) {
494
26.7k
    return !TL.getType().hasLocalQualifiers() &&
495
26.7k
           Derived::classofType(TL.getTypePtr());
496
26.7k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::ConstantArrayTypeLoc, clang::ConstantArrayType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
2.06M
  static bool isKind(const TypeLoc &TL) {
494
2.06M
    return !TL.getType().hasLocalQualifiers() &&
495
2.06M
           Derived::classofType(TL.getTypePtr());
496
2.06M
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::DependentSizedArrayTypeLoc, clang::DependentSizedArrayType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
192k
  static bool isKind(const TypeLoc &TL) {
494
192k
    return !TL.getType().hasLocalQualifiers() &&
495
192k
           Derived::classofType(TL.getTypePtr());
496
192k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::IncompleteArrayTypeLoc, clang::IncompleteArrayType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
471k
  static bool isKind(const TypeLoc &TL) {
494
471k
    return !TL.getType().hasLocalQualifiers() &&
495
471k
           
Derived::classofType(TL.getTypePtr())471k
;
496
471k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::VariableArrayTypeLoc, clang::VariableArrayType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
118k
  static bool isKind(const TypeLoc &TL) {
494
118k
    return !TL.getType().hasLocalQualifiers() &&
495
118k
           
Derived::classofType(TL.getTypePtr())118k
;
496
118k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::ComplexTypeLoc, clang::ComplexType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
90.6k
  static bool isKind(const TypeLoc &TL) {
494
90.6k
    return !TL.getType().hasLocalQualifiers() &&
495
90.6k
           Derived::classofType(TL.getTypePtr());
496
90.6k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
3.42M
  static bool isKind(const TypeLoc &TL) {
494
3.42M
    return !TL.getType().hasLocalQualifiers() &&
495
3.42M
           Derived::classofType(TL.getTypePtr());
496
3.42M
  }
clang::InheritingConcreteTypeLoc<clang::DeducedTypeLoc, clang::DeducedTemplateSpecializationTypeLoc, clang::DeducedTemplateSpecializationType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
132k
  static bool isKind(const TypeLoc &TL) {
494
132k
    return !TL.getType().hasLocalQualifiers() &&
495
132k
           
Derived::classofType(TL.getTypePtr())131k
;
496
132k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DependentExtIntTypeLoc, clang::DependentExtIntType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
79
  static bool isKind(const TypeLoc &TL) {
494
79
    return !TL.getType().hasLocalQualifiers() &&
495
79
           Derived::classofType(TL.getTypePtr());
496
79
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::ExtIntTypeLoc, clang::ExtIntType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
6.47k
  static bool isKind(const TypeLoc &TL) {
494
6.47k
    return !TL.getType().hasLocalQualifiers() &&
495
6.47k
           Derived::classofType(TL.getTypePtr());
496
6.47k
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionNoProtoTypeLoc, clang::FunctionNoProtoType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
613k
  static bool isKind(const TypeLoc &TL) {
494
613k
    return !TL.getType().hasLocalQualifiers() &&
495
613k
           Derived::classofType(TL.getTypePtr());
496
613k
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionProtoTypeLoc, clang::FunctionProtoType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
194M
  static bool isKind(const TypeLoc &TL) {
494
194M
    return !TL.getType().hasLocalQualifiers() &&
495
194M
           Derived::classofType(TL.getTypePtr());
496
194M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::InjectedClassNameTypeLoc, clang::InjectedClassNameType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
10.1M
  static bool isKind(const TypeLoc &TL) {
494
10.1M
    return !TL.getType().hasLocalQualifiers() &&
495
10.1M
           Derived::classofType(TL.getTypePtr());
496
10.1M
  }
clang::InheritingConcreteTypeLoc<clang::MatrixTypeLoc, clang::ConstantMatrixTypeLoc, clang::ConstantMatrixType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
4.45k
  static bool isKind(const TypeLoc &TL) {
494
4.45k
    return !TL.getType().hasLocalQualifiers() &&
495
4.45k
           Derived::classofType(TL.getTypePtr());
496
4.45k
  }
clang::InheritingConcreteTypeLoc<clang::MatrixTypeLoc, clang::DependentSizedMatrixTypeLoc, clang::DependentSizedMatrixType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
2.70k
  static bool isKind(const TypeLoc &TL) {
494
2.70k
    return !TL.getType().hasLocalQualifiers() &&
495
2.70k
           Derived::classofType(TL.getTypePtr());
496
2.70k
  }
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::LValueReferenceTypeLoc, clang::LValueReferenceType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
24.5M
  static bool isKind(const TypeLoc &TL) {
494
24.5M
    return !TL.getType().hasLocalQualifiers() &&
495
24.5M
           Derived::classofType(TL.getTypePtr());
496
24.5M
  }
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::RValueReferenceTypeLoc, clang::RValueReferenceType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
6.69M
  static bool isKind(const TypeLoc &TL) {
494
6.69M
    return !TL.getType().hasLocalQualifiers() &&
495
6.69M
           Derived::classofType(TL.getTypePtr());
496
6.69M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmPackTypeLoc, clang::SubstTemplateTypeParmPackType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
437k
  static bool isKind(const TypeLoc &TL) {
494
437k
    return !TL.getType().hasLocalQualifiers() &&
495
437k
           Derived::classofType(TL.getTypePtr());
496
437k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmTypeLoc, clang::SubstTemplateTypeParmType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
71.3M
  static bool isKind(const TypeLoc &TL) {
494
71.3M
    return !TL.getType().hasLocalQualifiers() &&
495
71.3M
           Derived::classofType(TL.getTypePtr());
496
71.3M
  }
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::EnumTypeLoc, clang::EnumType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
4.02M
  static bool isKind(const TypeLoc &TL) {
494
4.02M
    return !TL.getType().hasLocalQualifiers() &&
495
4.02M
           Derived::classofType(TL.getTypePtr());
496
4.02M
  }
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::RecordTypeLoc, clang::RecordType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
39.2M
  static bool isKind(const TypeLoc &TL) {
494
39.2M
    return !TL.getType().hasLocalQualifiers() &&
495
39.2M
           Derived::classofType(TL.getTypePtr());
496
39.2M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TemplateTypeParmTypeLoc, clang::TemplateTypeParmType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
132M
  static bool isKind(const TypeLoc &TL) {
494
132M
    return !TL.getType().hasLocalQualifiers() &&
495
132M
           Derived::classofType(TL.getTypePtr());
496
132M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TypedefTypeLoc, clang::TypedefType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
654M
  static bool isKind(const TypeLoc &TL) {
494
654M
    return !TL.getType().hasLocalQualifiers() &&
495
654M
           Derived::classofType(TL.getTypePtr());
496
654M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::UnresolvedUsingTypeLoc, clang::UnresolvedUsingType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
16.1k
  static bool isKind(const TypeLoc &TL) {
494
16.1k
    return !TL.getType().hasLocalQualifiers() &&
495
16.1k
           Derived::classofType(TL.getTypePtr());
496
16.1k
  }
clang::InheritingConcreteTypeLoc<clang::VectorTypeLoc, clang::ExtVectorTypeLoc, clang::ExtVectorType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
24.4k
  static bool isKind(const TypeLoc &TL) {
494
24.4k
    return !TL.getType().hasLocalQualifiers() &&
495
24.4k
           Derived::classofType(TL.getTypePtr());
496
24.4k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DeducedTypeLoc, clang::DeducedType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
814
  static bool isKind(const TypeLoc &TL) {
494
814
    return !TL.getType().hasLocalQualifiers() &&
495
814
           Derived::classofType(TL.getTypePtr());
496
814
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TagTypeLoc, clang::TagType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
1.89M
  static bool isKind(const TypeLoc &TL) {
494
1.89M
    return !TL.getType().hasLocalQualifiers() &&
495
1.89M
           Derived::classofType(TL.getTypePtr());
496
1.89M
  }
497
  static bool isKind(const UnqualTypeLoc &TL) {
498
    return Derived::classofType(TL.getTypePtr());
499
  }
500
501
public:
502
17.5M
  const TypeClass *getTypePtr() const {
503
17.5M
    return cast<TypeClass>(Base::getTypePtr());
504
17.5M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TypedefTypeLoc, clang::TypedefType>::getTypePtr() const
Line
Count
Source
502
2.01M
  const TypeClass *getTypePtr() const {
503
2.01M
    return cast<TypeClass>(Base::getTypePtr());
504
2.01M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::InjectedClassNameTypeLoc, clang::InjectedClassNameType>::getTypePtr() const
Line
Count
Source
502
573k
  const TypeClass *getTypePtr() const {
503
573k
    return cast<TypeClass>(Base::getTypePtr());
504
573k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::UnresolvedUsingTypeLoc, clang::UnresolvedUsingType>::getTypePtr() const
Line
Count
Source
502
425
  const TypeClass *getTypePtr() const {
503
425
    return cast<TypeClass>(Base::getTypePtr());
504
425
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TagTypeLoc, clang::TagType>::getTypePtr() const
Line
Count
Source
502
233k
  const TypeClass *getTypePtr() const {
503
233k
    return cast<TypeClass>(Base::getTypePtr());
504
233k
  }
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::RecordTypeLoc, clang::RecordType>::getTypePtr() const
Line
Count
Source
502
218k
  const TypeClass *getTypePtr() const {
503
218k
    return cast<TypeClass>(Base::getTypePtr());
504
218k
  }
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::EnumTypeLoc, clang::EnumType>::getTypePtr() const
Line
Count
Source
502
12.6k
  const TypeClass *getTypePtr() const {
503
12.6k
    return cast<TypeClass>(Base::getTypePtr());
504
12.6k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TemplateTypeParmTypeLoc, clang::TemplateTypeParmType>::getTypePtr() const
Line
Count
Source
502
6.04M
  const TypeClass *getTypePtr() const {
503
6.04M
    return cast<TypeClass>(Base::getTypePtr());
504
6.04M
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::DependentSizedArrayTypeLoc, clang::DependentSizedArrayType>::getTypePtr() const
Line
Count
Source
502
10.7k
  const TypeClass *getTypePtr() const {
503
10.7k
    return cast<TypeClass>(Base::getTypePtr());
504
10.7k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType>::getTypePtr() const
Line
Count
Source
502
137k
  const TypeClass *getTypePtr() const {
503
137k
    return cast<TypeClass>(Base::getTypePtr());
504
137k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DeducedTypeLoc, clang::DeducedType>::getTypePtr() const
Line
Count
Source
502
544k
  const TypeClass *getTypePtr() const {
503
544k
    return cast<TypeClass>(Base::getTypePtr());
504
544k
  }
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
502
33.1k
  const TypeClass *getTypePtr() const {
503
33.1k
    return cast<TypeClass>(Base::getTypePtr());
504
33.1k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::IncompleteArrayTypeLoc, clang::IncompleteArrayType>::getTypePtr() const
Line
Count
Source
502
7.16k
  const TypeClass *getTypePtr() const {
503
7.16k
    return cast<TypeClass>(Base::getTypePtr());
504
7.16k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::VariableArrayTypeLoc, clang::VariableArrayType>::getTypePtr() const
Line
Count
Source
502
151
  const TypeClass *getTypePtr() const {
503
151
    return cast<TypeClass>(Base::getTypePtr());
504
151
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::ComplexTypeLoc, clang::ComplexType>::getTypePtr() const
Line
Count
Source
502
7.77k
  const TypeClass *getTypePtr() const {
503
7.77k
    return cast<TypeClass>(Base::getTypePtr());
504
7.77k
  }
clang::InheritingConcreteTypeLoc<clang::DeducedTypeLoc, clang::DeducedTemplateSpecializationTypeLoc, clang::DeducedTemplateSpecializationType>::getTypePtr() const
Line
Count
Source
502
1.10k
  const TypeClass *getTypePtr() const {
503
1.10k
    return cast<TypeClass>(Base::getTypePtr());
504
1.10k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DependentExtIntTypeLoc, clang::DependentExtIntType>::getTypePtr() const
Line
Count
Source
502
9
  const TypeClass *getTypePtr() const {
503
9
    return cast<TypeClass>(Base::getTypePtr());
504
9
  }
Unexecuted instantiation: clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::ExtIntTypeLoc, clang::ExtIntType>::getTypePtr() const
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionNoProtoTypeLoc, clang::FunctionNoProtoType>::getTypePtr() const
Line
Count
Source
502
2.57k
  const TypeClass *getTypePtr() const {
503
2.57k
    return cast<TypeClass>(Base::getTypePtr());
504
2.57k
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionProtoTypeLoc, clang::FunctionProtoType>::getTypePtr() const
Line
Count
Source
502
7.46M
  const TypeClass *getTypePtr() const {
503
7.46M
    return cast<TypeClass>(Base::getTypePtr());
504
7.46M
  }
clang::InheritingConcreteTypeLoc<clang::MatrixTypeLoc, clang::ConstantMatrixTypeLoc, clang::ConstantMatrixType>::getTypePtr() const
Line
Count
Source
502
138
  const TypeClass *getTypePtr() const {
503
138
    return cast<TypeClass>(Base::getTypePtr());
504
138
  }
clang::InheritingConcreteTypeLoc<clang::MatrixTypeLoc, clang::DependentSizedMatrixTypeLoc, clang::DependentSizedMatrixType>::getTypePtr() const
Line
Count
Source
502
216
  const TypeClass *getTypePtr() const {
503
216
    return cast<TypeClass>(Base::getTypePtr());
504
216
  }
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::LValueReferenceTypeLoc, clang::LValueReferenceType>::getTypePtr() const
Line
Count
Source
502
123k
  const TypeClass *getTypePtr() const {
503
123k
    return cast<TypeClass>(Base::getTypePtr());
504
123k
  }
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::RValueReferenceTypeLoc, clang::RValueReferenceType>::getTypePtr() const
Line
Count
Source
502
19.4k
  const TypeClass *getTypePtr() const {
503
19.4k
    return cast<TypeClass>(Base::getTypePtr());
504
19.4k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmPackTypeLoc, clang::SubstTemplateTypeParmPackType>::getTypePtr() const
Line
Count
Source
502
11.5k
  const TypeClass *getTypePtr() const {
503
11.5k
    return cast<TypeClass>(Base::getTypePtr());
504
11.5k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmTypeLoc, clang::SubstTemplateTypeParmType>::getTypePtr() const
Line
Count
Source
502
45.3k
  const TypeClass *getTypePtr() const {
503
45.3k
    return cast<TypeClass>(Base::getTypePtr());
504
45.3k
  }
clang::InheritingConcreteTypeLoc<clang::VectorTypeLoc, clang::ExtVectorTypeLoc, clang::ExtVectorType>::getTypePtr() const
Line
Count
Source
502
43
  const TypeClass *getTypePtr() const {
503
43
    return cast<TypeClass>(Base::getTypePtr());
504
43
  }
505
};
506
507
struct TypeSpecLocInfo {
508
  SourceLocation NameLoc;
509
};
510
511
/// A reasonable base class for TypeLocs that correspond to
512
/// types that are written as a type-specifier.
513
class TypeSpecTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
514
                                               TypeSpecTypeLoc,
515
                                               Type,
516
                                               TypeSpecLocInfo> {
517
public:
518
  enum {
519
    LocalDataSize = sizeof(TypeSpecLocInfo),
520
    LocalDataAlignment = alignof(TypeSpecLocInfo)
521
  };
522
523
199M
  SourceLocation getNameLoc() const {
524
199M
    return this->getLocalData()->NameLoc;
525
199M
  }
526
527
145M
  void setNameLoc(SourceLocation Loc) {
528
145M
    this->getLocalData()->NameLoc = Loc;
529
145M
  }
530
531
93.7M
  SourceRange getLocalSourceRange() const {
532
93.7M
    return SourceRange(getNameLoc(), getNameLoc());
533
93.7M
  }
534
535
8.47M
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
536
8.47M
    setNameLoc(Loc);
537
8.47M
  }
538
539
private:
540
  friend class TypeLoc;
541
542
  static bool isKind(const TypeLoc &TL);
543
};
544
545
struct BuiltinLocInfo {
546
  SourceRange BuiltinRange;
547
};
548
549
/// Wrapper for source info for builtin types.
550
class BuiltinTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
551
                                              BuiltinTypeLoc,
552
                                              BuiltinType,
553
                                              BuiltinLocInfo> {
554
public:
555
982k
  SourceLocation getBuiltinLoc() const {
556
982k
    return getLocalData()->BuiltinRange.getBegin();
557
982k
  }
558
559
14.6M
  void setBuiltinLoc(SourceLocation Loc) {
560
14.6M
    getLocalData()->BuiltinRange = Loc;
561
14.6M
  }
562
563
1.75M
  void expandBuiltinRange(SourceRange Range) {
564
1.75M
    SourceRange &BuiltinRange = getLocalData()->BuiltinRange;
565
1.75M
    if (!BuiltinRange.getBegin().isValid()) {
566
713k
      BuiltinRange = Range;
567
1.04M
    } else {
568
1.04M
      BuiltinRange.setBegin(std::min(Range.getBegin(), BuiltinRange.getBegin()));
569
1.04M
      BuiltinRange.setEnd(std::max(Range.getEnd(), BuiltinRange.getEnd()));
570
1.04M
    }
571
1.75M
  }
572
573
0
  SourceLocation getNameLoc() const { return getBuiltinLoc(); }
574
575
7.49M
  WrittenBuiltinSpecs& getWrittenBuiltinSpecs() {
576
7.49M
    return *(static_cast<WrittenBuiltinSpecs*>(getExtraLocalData()));
577
7.49M
  }
578
9.21M
  const WrittenBuiltinSpecs& getWrittenBuiltinSpecs() const {
579
9.21M
    return *(static_cast<WrittenBuiltinSpecs*>(getExtraLocalData()));
580
9.21M
  }
581
582
113M
  bool needsExtraLocalData() const {
583
113M
    BuiltinType::Kind bk = getTypePtr()->getKind();
584
113M
    return (bk >= BuiltinType::UShort && 
bk <= BuiltinType::UInt12865.4M
)
585
113M
      || 
(103M
bk >= BuiltinType::Short103M
&&
bk <= BuiltinType::Float12847.5M
)
586
113M
      || 
bk == BuiltinType::UChar56.9M
587
113M
      || 
bk == BuiltinType::SChar54.4M
;
588
113M
  }
589
590
16.4M
  unsigned getExtraLocalDataSize() const {
591
16.4M
    return needsExtraLocalData() ? 
sizeof(WrittenBuiltinSpecs)6.76M
:
09.65M
;
592
16.4M
  }
593
594
71.2M
  unsigned getExtraLocalDataAlignment() const {
595
71.2M
    return needsExtraLocalData() ? 
alignof(WrittenBuiltinSpecs)35.8M
:
135.4M
;
596
71.2M
  }
597
598
10.4M
  SourceRange getLocalSourceRange() const {
599
10.4M
    return getLocalData()->BuiltinRange;
600
10.4M
  }
601
602
4.29M
  TypeSpecifierSign getWrittenSignSpec() const {
603
4.29M
    if (needsExtraLocalData())
604
4.29M
      return static_cast<TypeSpecifierSign>(getWrittenBuiltinSpecs().Sign);
605
0
    else
606
0
      return TypeSpecifierSign::Unspecified;
607
4.29M
  }
608
609
0
  bool hasWrittenSignSpec() const {
610
0
    return getWrittenSignSpec() != TypeSpecifierSign::Unspecified;
611
0
  }
612
613
269k
  void setWrittenSignSpec(TypeSpecifierSign written) {
614
269k
    if (needsExtraLocalData())
615
269k
      getWrittenBuiltinSpecs().Sign = static_cast<unsigned>(written);
616
269k
  }
617
618
4.29M
  TypeSpecifierWidth getWrittenWidthSpec() const {
619
4.29M
    if (needsExtraLocalData())
620
4.29M
      return static_cast<TypeSpecifierWidth>(getWrittenBuiltinSpecs().Width);
621
0
    else
622
0
      return TypeSpecifierWidth::Unspecified;
623
4.29M
  }
624
625
0
  bool hasWrittenWidthSpec() const {
626
0
    return getWrittenWidthSpec() != TypeSpecifierWidth::Unspecified;
627
0
  }
628
629
269k
  void setWrittenWidthSpec(TypeSpecifierWidth written) {
630
269k
    if (needsExtraLocalData())
631
269k
      getWrittenBuiltinSpecs().Width = static_cast<unsigned>(written);
632
269k
  }
633
634
  TypeSpecifierType getWrittenTypeSpec() const;
635
636
0
  bool hasWrittenTypeSpec() const {
637
0
    return getWrittenTypeSpec() != TST_unspecified;
638
0
  }
639
640
269k
  void setWrittenTypeSpec(TypeSpecifierType written) {
641
269k
    if (needsExtraLocalData())
642
269k
      getWrittenBuiltinSpecs().Type = written;
643
269k
  }
644
645
313k
  bool hasModeAttr() const {
646
313k
    if (needsExtraLocalData())
647
313k
      return getWrittenBuiltinSpecs().ModeAttr;
648
0
    else
649
0
      return false;
650
313k
  }
651
652
269k
  void setModeAttr(bool written) {
653
269k
    if (needsExtraLocalData())
654
269k
      getWrittenBuiltinSpecs().ModeAttr = written;
655
269k
  }
656
657
3.42M
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
658
3.42M
    setBuiltinLoc(Loc);
659
3.42M
    if (needsExtraLocalData()) {
660
2.39M
      WrittenBuiltinSpecs &wbs = getWrittenBuiltinSpecs();
661
2.39M
      wbs.Sign = static_cast<unsigned>(TypeSpecifierSign::Unspecified);
662
2.39M
      wbs.Width = static_cast<unsigned>(TypeSpecifierWidth::Unspecified);
663
2.39M
      wbs.Type = TST_unspecified;
664
2.39M
      wbs.ModeAttr = false;
665
2.39M
    }
666
3.42M
  }
667
};
668
669
/// Wrapper for source info for typedefs.
670
class TypedefTypeLoc : public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
671
                                                        TypedefTypeLoc,
672
                                                        TypedefType> {
673
public:
674
3.24k
  TypedefNameDecl *getTypedefNameDecl() const {
675
3.24k
    return getTypePtr()->getDecl();
676
3.24k
  }
677
};
678
679
/// Wrapper for source info for injected class names of class
680
/// templates.
681
class InjectedClassNameTypeLoc :
682
    public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
683
                                     InjectedClassNameTypeLoc,
684
                                     InjectedClassNameType> {
685
public:
686
10
  CXXRecordDecl *getDecl() const {
687
10
    return getTypePtr()->getDecl();
688
10
  }
689
};
690
691
/// Wrapper for source info for unresolved typename using decls.
692
class UnresolvedUsingTypeLoc :
693
    public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
694
                                     UnresolvedUsingTypeLoc,
695
                                     UnresolvedUsingType> {
696
public:
697
0
  UnresolvedUsingTypenameDecl *getDecl() const {
698
0
    return getTypePtr()->getDecl();
699
0
  }
700
};
701
702
/// Wrapper for source info for tag types.  Note that this only
703
/// records source info for the name itself; a type written 'struct foo'
704
/// should be represented as an ElaboratedTypeLoc.  We currently
705
/// only do that when C++ is enabled because of the expense of
706
/// creating an ElaboratedType node for so many type references in C.
707
class TagTypeLoc : public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
708
                                                    TagTypeLoc,
709
                                                    TagType> {
710
public:
711
1.55k
  TagDecl *getDecl() const { return getTypePtr()->getDecl(); }
712
713
  /// True if the tag was defined in this type specifier.
714
  bool isDefinition() const;
715
};
716
717
/// Wrapper for source info for record types.
718
class RecordTypeLoc : public InheritingConcreteTypeLoc<TagTypeLoc,
719
                                                       RecordTypeLoc,
720
                                                       RecordType> {
721
public:
722
49
  RecordDecl *getDecl() const { return getTypePtr()->getDecl(); }
723
};
724
725
/// Wrapper for source info for enum types.
726
class EnumTypeLoc : public InheritingConcreteTypeLoc<TagTypeLoc,
727
                                                     EnumTypeLoc,
728
                                                     EnumType> {
729
public:
730
0
  EnumDecl *getDecl() const { return getTypePtr()->getDecl(); }
731
};
732
733
/// Wrapper for template type parameters.
734
class TemplateTypeParmTypeLoc :
735
    public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
736
                                     TemplateTypeParmTypeLoc,
737
                                     TemplateTypeParmType> {
738
public:
739
400
  TemplateTypeParmDecl *getDecl() const { return getTypePtr()->getDecl(); }
740
};
741
742
struct ObjCTypeParamTypeLocInfo {
743
  SourceLocation NameLoc;
744
};
745
746
/// ProtocolLAngleLoc, ProtocolRAngleLoc, and the source locations for
747
/// protocol qualifiers are stored after Info.
748
class ObjCTypeParamTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
749
                                     ObjCTypeParamTypeLoc,
750
                                     ObjCTypeParamType,
751
                                     ObjCTypeParamTypeLocInfo> {
752
  // SourceLocations are stored after Info, one for each protocol qualifier.
753
3.59k
  SourceLocation *getProtocolLocArray() const {
754
3.59k
    return (SourceLocation*)this->getExtraLocalData() + 2;
755
3.59k
  }
756
757
public:
758
5
  ObjCTypeParamDecl *getDecl() const { return getTypePtr()->getDecl(); }
759
760
45.8k
  SourceLocation getNameLoc() const {
761
45.8k
    return this->getLocalData()->NameLoc;
762
45.8k
  }
763
764
129k
  void setNameLoc(SourceLocation Loc) {
765
129k
    this->getLocalData()->NameLoc = Loc;
766
129k
  }
767
768
38
  SourceLocation getProtocolLAngleLoc() const {
769
38
    return getNumProtocols()  ?
770
38
      *((SourceLocation*)this->getExtraLocalData()) :
771
38
      
SourceLocation()0
;
772
38
  }
773
774
3.55k
  void setProtocolLAngleLoc(SourceLocation Loc) {
775
3.55k
    *((SourceLocation*)this->getExtraLocalData()) = Loc;
776
3.55k
  }
777
778
45.8k
  SourceLocation getProtocolRAngleLoc() const {
779
45.8k
    return getNumProtocols()  ?
780
2.20k
      *((SourceLocation*)this->getExtraLocalData() + 1) :
781
45.8k
      
SourceLocation()43.6k
;
782
45.8k
  }
783
784
3.55k
  void setProtocolRAngleLoc(SourceLocation Loc) {
785
3.55k
    *((SourceLocation*)this->getExtraLocalData() + 1) = Loc;
786
3.55k
  }
787
788
324k
  unsigned getNumProtocols() const {
789
324k
    return this->getTypePtr()->getNumProtocols();
790
324k
  }
791
792
39
  SourceLocation getProtocolLoc(unsigned i) const {
793
39
    assert(i < getNumProtocols() && "Index is out of bounds!");
794
0
    return getProtocolLocArray()[i];
795
39
  }
796
797
3.56k
  void setProtocolLoc(unsigned i, SourceLocation Loc) {
798
3.56k
    assert(i < getNumProtocols() && "Index is out of bounds!");
799
0
    getProtocolLocArray()[i] = Loc;
800
3.56k
  }
801
802
0
  ObjCProtocolDecl *getProtocol(unsigned i) const {
803
0
    assert(i < getNumProtocols() && "Index is out of bounds!");
804
0
    return *(this->getTypePtr()->qual_begin() + i);
805
0
  }
806
807
0
  ArrayRef<SourceLocation> getProtocolLocs() const {
808
0
    return llvm::makeArrayRef(getProtocolLocArray(), getNumProtocols());
809
0
  }
810
811
  void initializeLocal(ASTContext &Context, SourceLocation Loc);
812
813
131k
  unsigned getExtraLocalDataSize() const {
814
131k
    if (!this->getNumProtocols()) 
return 0128k
;
815
    // When there are protocol qualifers, we have LAngleLoc and RAngleLoc
816
    // as well.
817
3.55k
    return (this->getNumProtocols() + 2) * sizeof(SourceLocation) ;
818
131k
  }
819
820
365k
  unsigned getExtraLocalDataAlignment() const {
821
365k
    return alignof(SourceLocation);
822
365k
  }
823
824
45.8k
  SourceRange getLocalSourceRange() const {
825
45.8k
    SourceLocation start = getNameLoc();
826
45.8k
    SourceLocation end = getProtocolRAngleLoc();
827
45.8k
    if (end.isInvalid()) 
return SourceRange(start, start)43.6k
;
828
2.16k
    return SourceRange(start, end);
829
45.8k
  }
830
};
831
832
/// Wrapper for substituted template type parameters.
833
class SubstTemplateTypeParmTypeLoc :
834
    public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
835
                                     SubstTemplateTypeParmTypeLoc,
836
                                     SubstTemplateTypeParmType> {
837
};
838
839
  /// Wrapper for substituted template type parameters.
840
class SubstTemplateTypeParmPackTypeLoc :
841
    public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
842
                                     SubstTemplateTypeParmPackTypeLoc,
843
                                     SubstTemplateTypeParmPackType> {
844
};
845
846
struct AttributedLocInfo {
847
  const Attr *TypeAttr;
848
};
849
850
/// Type source information for an attributed type.
851
class AttributedTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
852
                                                 AttributedTypeLoc,
853
                                                 AttributedType,
854
                                                 AttributedLocInfo> {
855
public:
856
338
  attr::Kind getAttrKind() const {
857
338
    return getTypePtr()->getAttrKind();
858
338
  }
859
860
23
  bool isQualifier() const {
861
23
    return getTypePtr()->isQualifier();
862
23
  }
863
864
  /// The modified type, which is generally canonically different from
865
  /// the attribute type.
866
  ///    int main(int, char**) __attribute__((noreturn))
867
  ///    ~~~     ~~~~~~~~~~~~~
868
1.76M
  TypeLoc getModifiedLoc() const {
869
1.76M
    return getInnerTypeLoc();
870
1.76M
  }
871
872
  /// The type attribute.
873
1.65M
  const Attr *getAttr() const {
874
1.65M
    return getLocalData()->TypeAttr;
875
1.65M
  }
876
3.24M
  void setAttr(const Attr *A) {
877
3.24M
    getLocalData()->TypeAttr = A;
878
3.24M
  }
879
880
14.6k
  template<typename T> const T *getAttrAs() {
881
14.6k
    return dyn_cast_or_null<T>(getAttr());
882
14.6k
  }
clang::LifetimeBoundAttr const* clang::AttributedTypeLoc::getAttrAs<clang::LifetimeBoundAttr>()
Line
Count
Source
880
14.2k
  template<typename T> const T *getAttrAs() {
881
14.2k
    return dyn_cast_or_null<T>(getAttr());
882
14.2k
  }
clang::ObjCOwnershipAttr const* clang::AttributedTypeLoc::getAttrAs<clang::ObjCOwnershipAttr>()
Line
Count
Source
880
340
  template<typename T> const T *getAttrAs() {
881
340
    return dyn_cast_or_null<T>(getAttr());
882
340
  }
883
884
  SourceRange getLocalSourceRange() const;
885
886
3.77k
  void initializeLocal(ASTContext &Context, SourceLocation loc) {
887
3.77k
    setAttr(nullptr);
888
3.77k
  }
889
890
14.8M
  QualType getInnerType() const {
891
14.8M
    return getTypePtr()->getModifiedType();
892
14.8M
  }
893
};
894
895
struct ObjCObjectTypeLocInfo {
896
  SourceLocation TypeArgsLAngleLoc;
897
  SourceLocation TypeArgsRAngleLoc;
898
  SourceLocation ProtocolLAngleLoc;
899
  SourceLocation ProtocolRAngleLoc;
900
  bool HasBaseTypeAsWritten;
901
};
902
903
// A helper class for defining ObjC TypeLocs that can qualified with
904
// protocols.
905
//
906
// TypeClass basically has to be either ObjCInterfaceType or
907
// ObjCObjectPointerType.
908
class ObjCObjectTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
909
                                                 ObjCObjectTypeLoc,
910
                                                 ObjCObjectType,
911
                                                 ObjCObjectTypeLocInfo> {
912
  // TypeSourceInfo*'s are stored after Info, one for each type argument.
913
194k
  TypeSourceInfo **getTypeArgLocArray() const {
914
194k
    return (TypeSourceInfo**)this->getExtraLocalData();
915
194k
  }
916
917
  // SourceLocations are stored after the type argument information, one for
918
  // each Protocol.
919
23.4k
  SourceLocation *getProtocolLocArray() const {
920
23.4k
    return (SourceLocation*)(getTypeArgLocArray() + getNumTypeArgs());
921
23.4k
  }
922
923
public:
924
67.6k
  SourceLocation getTypeArgsLAngleLoc() const {
925
67.6k
    return this->getLocalData()->TypeArgsLAngleLoc;
926
67.6k
  }
927
928
226k
  void setTypeArgsLAngleLoc(SourceLocation Loc) {
929
226k
    this->getLocalData()->TypeArgsLAngleLoc = Loc;
930
226k
  }
931
932
59.2k
  SourceLocation getTypeArgsRAngleLoc() const {
933
59.2k
    return this->getLocalData()->TypeArgsRAngleLoc;
934
59.2k
  }
935
936
226k
  void setTypeArgsRAngleLoc(SourceLocation Loc) {
937
226k
    this->getLocalData()->TypeArgsRAngleLoc = Loc;
938
226k
  }
939
940
2.49M
  unsigned getNumTypeArgs() const {
941
2.49M
    return this->getTypePtr()->getTypeArgsAsWritten().size();
942
2.49M
  }
943
944
9.06k
  TypeSourceInfo *getTypeArgTInfo(unsigned i) const {
945
9.06k
    assert(i < getNumTypeArgs() && "Index is out of bounds!");
946
0
    return getTypeArgLocArray()[i];
947
9.06k
  }
948
949
161k
  void setTypeArgTInfo(unsigned i, TypeSourceInfo *TInfo) {
950
161k
    assert(i < getNumTypeArgs() && "Index is out of bounds!");
951
0
    getTypeArgLocArray()[i] = TInfo;
952
161k
  }
953
954
14.3k
  SourceLocation getProtocolLAngleLoc() const {
955
14.3k
    return this->getLocalData()->ProtocolLAngleLoc;
956
14.3k
  }
957
958
226k
  void setProtocolLAngleLoc(SourceLocation Loc) {
959
226k
    this->getLocalData()->ProtocolLAngleLoc = Loc;
960
226k
  }
961
962
67.6k
  SourceLocation getProtocolRAngleLoc() const {
963
67.6k
    return this->getLocalData()->ProtocolRAngleLoc;
964
67.6k
  }
965
966
226k
  void setProtocolRAngleLoc(SourceLocation Loc) {
967
226k
    this->getLocalData()->ProtocolRAngleLoc = Loc;
968
226k
  }
969
970
2.20M
  unsigned getNumProtocols() const {
971
2.20M
    return this->getTypePtr()->getNumProtocols();
972
2.20M
  }
973
974
1.70k
  SourceLocation getProtocolLoc(unsigned i) const {
975
1.70k
    assert(i < getNumProtocols() && "Index is out of bounds!");
976
0
    return getProtocolLocArray()[i];
977
1.70k
  }
978
979
21.7k
  void setProtocolLoc(unsigned i, SourceLocation Loc) {
980
21.7k
    assert(i < getNumProtocols() && "Index is out of bounds!");
981
0
    getProtocolLocArray()[i] = Loc;
982
21.7k
  }
983
984
68
  ObjCProtocolDecl *getProtocol(unsigned i) const {
985
68
    assert(i < getNumProtocols() && "Index is out of bounds!");
986
0
    return *(this->getTypePtr()->qual_begin() + i);
987
68
  }
988
989
990
17
  ArrayRef<SourceLocation> getProtocolLocs() const {
991
17
    return llvm::makeArrayRef(getProtocolLocArray(), getNumProtocols());
992
17
  }
993
994
5.88k
  bool hasBaseTypeAsWritten() const {
995
5.88k
    return getLocalData()->HasBaseTypeAsWritten;
996
5.88k
  }
997
998
226k
  void setHasBaseTypeAsWritten(bool HasBaseType) {
999
226k
    getLocalData()->HasBaseTypeAsWritten = HasBaseType;
1000
226k
  }
1001
1002
154k
  TypeLoc getBaseLoc() const {
1003
154k
    return getInnerTypeLoc();
1004
154k
  }
1005
1006
61.7k
  SourceRange getLocalSourceRange() const {
1007
61.7k
    SourceLocation start = getTypeArgsLAngleLoc();
1008
61.7k
    if (start.isInvalid())
1009
8.53k
      start = getProtocolLAngleLoc();
1010
61.7k
    SourceLocation end = getProtocolRAngleLoc();
1011
61.7k
    if (end.isInvalid())
1012
53.4k
      end = getTypeArgsRAngleLoc();
1013
61.7k
    return SourceRange(start, end);
1014
61.7k
  }
1015
1016
  void initializeLocal(ASTContext &Context, SourceLocation Loc);
1017
1018
1.93M
  unsigned getExtraLocalDataSize() const {
1019
1.93M
    return this->getNumTypeArgs() * sizeof(TypeSourceInfo *)
1020
1.93M
         + this->getNumProtocols() * sizeof(SourceLocation);
1021
1.93M
  }
1022
1023
3.52M
  unsigned getExtraLocalDataAlignment() const {
1024
3.52M
    static_assert(alignof(ObjCObjectTypeLoc) >= alignof(TypeSourceInfo *),
1025
3.52M
                  "not enough alignment for tail-allocated data");
1026
3.52M
    return alignof(TypeSourceInfo *);
1027
3.52M
  }
1028
1029
2.23M
  QualType getInnerType() const {
1030
2.23M
    return getTypePtr()->getBaseType();
1031
2.23M
  }
1032
};
1033
1034
struct ObjCInterfaceLocInfo {
1035
  SourceLocation NameLoc;
1036
  SourceLocation NameEndLoc;
1037
};
1038
1039
/// Wrapper for source info for ObjC interfaces.
1040
class ObjCInterfaceTypeLoc : public ConcreteTypeLoc<ObjCObjectTypeLoc,
1041
                                                    ObjCInterfaceTypeLoc,
1042
                                                    ObjCInterfaceType,
1043
                                                    ObjCInterfaceLocInfo> {
1044
public:
1045
393
  ObjCInterfaceDecl *getIFaceDecl() const {
1046
393
    return getTypePtr()->getDecl();
1047
393
  }
1048
1049
1.59M
  SourceLocation getNameLoc() const {
1050
1.59M
    return getLocalData()->NameLoc;
1051
1.59M
  }
1052
1053
1.37M
  void setNameLoc(SourceLocation Loc) {
1054
1.37M
    getLocalData()->NameLoc = Loc;
1055
1.37M
  }
1056
1057
1.55M
  SourceRange getLocalSourceRange() const {
1058
1.55M
    return SourceRange(getNameLoc(), getNameEndLoc());
1059
1.55M
  }
1060
1061
1.55M
  SourceLocation getNameEndLoc() const {
1062
1.55M
    return getLocalData()->NameEndLoc;
1063
1.55M
  }
1064
1065
1.35M
  void setNameEndLoc(SourceLocation Loc) {
1066
1.35M
    getLocalData()->NameEndLoc = Loc;
1067
1.35M
  }
1068
1069
338k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1070
338k
    setNameLoc(Loc);
1071
338k
    setNameEndLoc(Loc);
1072
338k
  }
1073
};
1074
1075
struct MacroQualifiedLocInfo {
1076
  SourceLocation ExpansionLoc;
1077
};
1078
1079
class MacroQualifiedTypeLoc
1080
    : public ConcreteTypeLoc<UnqualTypeLoc, MacroQualifiedTypeLoc,
1081
                             MacroQualifiedType, MacroQualifiedLocInfo> {
1082
public:
1083
0
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1084
0
    setExpansionLoc(Loc);
1085
0
  }
1086
1087
160k
  TypeLoc getInnerLoc() const { return getInnerTypeLoc(); }
1088
1089
23
  const IdentifierInfo *getMacroIdentifier() const {
1090
23
    return getTypePtr()->getMacroIdentifier();
1091
23
  }
1092
1093
7.18k
  SourceLocation getExpansionLoc() const {
1094
7.18k
    return this->getLocalData()->ExpansionLoc;
1095
7.18k
  }
1096
1097
212k
  void setExpansionLoc(SourceLocation Loc) {
1098
212k
    this->getLocalData()->ExpansionLoc = Loc;
1099
212k
  }
1100
1101
899k
  QualType getInnerType() const { return getTypePtr()->getUnderlyingType(); }
1102
1103
370
  SourceRange getLocalSourceRange() const {
1104
370
    return getInnerLoc().getLocalSourceRange();
1105
370
  }
1106
};
1107
1108
struct ParenLocInfo {
1109
  SourceLocation LParenLoc;
1110
  SourceLocation RParenLoc;
1111
};
1112
1113
class ParenTypeLoc
1114
  : public ConcreteTypeLoc<UnqualTypeLoc, ParenTypeLoc, ParenType,
1115
                           ParenLocInfo> {
1116
public:
1117
130k
  SourceLocation getLParenLoc() const {
1118
130k
    return this->getLocalData()->LParenLoc;
1119
130k
  }
1120
1121
130k
  SourceLocation getRParenLoc() const {
1122
130k
    return this->getLocalData()->RParenLoc;
1123
130k
  }
1124
1125
327k
  void setLParenLoc(SourceLocation Loc) {
1126
327k
    this->getLocalData()->LParenLoc = Loc;
1127
327k
  }
1128
1129
327k
  void setRParenLoc(SourceLocation Loc) {
1130
327k
    this->getLocalData()->RParenLoc = Loc;
1131
327k
  }
1132
1133
95.8k
  SourceRange getLocalSourceRange() const {
1134
95.8k
    return SourceRange(getLParenLoc(), getRParenLoc());
1135
95.8k
  }
1136
1137
3.43k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1138
3.43k
    setLParenLoc(Loc);
1139
3.43k
    setRParenLoc(Loc);
1140
3.43k
  }
1141
1142
49.8k
  TypeLoc getInnerLoc() const {
1143
49.8k
    return getInnerTypeLoc();
1144
49.8k
  }
1145
1146
1.75M
  QualType getInnerType() const {
1147
1.75M
    return this->getTypePtr()->getInnerType();
1148
1.75M
  }
1149
};
1150
1151
3.70M
inline TypeLoc TypeLoc::IgnoreParens() const {
1152
3.70M
  if (ParenTypeLoc::isKind(*this))
1153
162
    return IgnoreParensImpl(*this);
1154
3.70M
  return *this;
1155
3.70M
}
1156
1157
struct AdjustedLocInfo {}; // Nothing.
1158
1159
class AdjustedTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, AdjustedTypeLoc,
1160
                                               AdjustedType, AdjustedLocInfo> {
1161
public:
1162
2.13k
  TypeLoc getOriginalLoc() const {
1163
2.13k
    return getInnerTypeLoc();
1164
2.13k
  }
1165
1166
2.35k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1167
    // do nothing
1168
2.35k
  }
1169
1170
25.1k
  QualType getInnerType() const {
1171
    // The inner type is the undecayed type, since that's what we have source
1172
    // location information for.
1173
25.1k
    return getTypePtr()->getOriginalType();
1174
25.1k
  }
1175
1176
1.07k
  SourceRange getLocalSourceRange() const { return {}; }
1177
1178
19.3k
  unsigned getLocalDataSize() const {
1179
    // sizeof(AdjustedLocInfo) is 1, but we don't need its address to be unique
1180
    // anyway.  TypeLocBuilder can't handle data sizes of 1.
1181
19.3k
    return 0;  // No data.
1182
19.3k
  }
1183
};
1184
1185
/// Wrapper for source info for pointers decayed from arrays and
1186
/// functions.
1187
class DecayedTypeLoc : public InheritingConcreteTypeLoc<
1188
                           AdjustedTypeLoc, DecayedTypeLoc, DecayedType> {
1189
};
1190
1191
struct PointerLikeLocInfo {
1192
  SourceLocation StarLoc;
1193
};
1194
1195
/// A base class for
1196
template <class Derived, class TypeClass, class LocalData = PointerLikeLocInfo>
1197
class PointerLikeTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, Derived,
1198
                                                  TypeClass, LocalData> {
1199
public:
1200
11.7M
  SourceLocation getSigilLoc() const {
1201
11.7M
    return this->getLocalData()->StarLoc;
1202
11.7M
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getSigilLoc() const
Line
Count
Source
1200
4.57M
  SourceLocation getSigilLoc() const {
1201
4.57M
    return this->getLocalData()->StarLoc;
1202
4.57M
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getSigilLoc() const
Line
Count
Source
1200
67.6k
  SourceLocation getSigilLoc() const {
1201
67.6k
    return this->getLocalData()->StarLoc;
1202
67.6k
  }
clang::PointerLikeTypeLoc<clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getSigilLoc() const
Line
Count
Source
1200
63.8k
  SourceLocation getSigilLoc() const {
1201
63.8k
    return this->getLocalData()->StarLoc;
1202
63.8k
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getSigilLoc() const
Line
Count
Source
1200
1.10M
  SourceLocation getSigilLoc() const {
1201
1.10M
    return this->getLocalData()->StarLoc;
1202
1.10M
  }
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getSigilLoc() const
Line
Count
Source
1200
5.97M
  SourceLocation getSigilLoc() const {
1201
5.97M
    return this->getLocalData()->StarLoc;
1202
5.97M
  }
1203
1204
14.2M
  void setSigilLoc(SourceLocation Loc) {
1205
14.2M
    this->getLocalData()->StarLoc = Loc;
1206
14.2M
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::setSigilLoc(clang::SourceLocation)
Line
Count
Source
1204
9.51M
  void setSigilLoc(SourceLocation Loc) {
1205
9.51M
    this->getLocalData()->StarLoc = Loc;
1206
9.51M
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::setSigilLoc(clang::SourceLocation)
Line
Count
Source
1204
61.8k
  void setSigilLoc(SourceLocation Loc) {
1205
61.8k
    this->getLocalData()->StarLoc = Loc;
1206
61.8k
  }
clang::PointerLikeTypeLoc<clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::setSigilLoc(clang::SourceLocation)
Line
Count
Source
1204
51.2k
  void setSigilLoc(SourceLocation Loc) {
1205
51.2k
    this->getLocalData()->StarLoc = Loc;
1206
51.2k
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::setSigilLoc(clang::SourceLocation)
Line
Count
Source
1204
1.25M
  void setSigilLoc(SourceLocation Loc) {
1205
1.25M
    this->getLocalData()->StarLoc = Loc;
1206
1.25M
  }
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::setSigilLoc(clang::SourceLocation)
Line
Count
Source
1204
3.37M
  void setSigilLoc(SourceLocation Loc) {
1205
3.37M
    this->getLocalData()->StarLoc = Loc;
1206
3.37M
  }
1207
1208
2.35M
  TypeLoc getPointeeLoc() const {
1209
2.35M
    return this->getInnerTypeLoc();
1210
2.35M
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getPointeeLoc() const
Line
Count
Source
1208
2.04k
  TypeLoc getPointeeLoc() const {
1209
2.04k
    return this->getInnerTypeLoc();
1210
2.04k
  }
clang::PointerLikeTypeLoc<clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getPointeeLoc() const
Line
Count
Source
1208
2.09k
  TypeLoc getPointeeLoc() const {
1209
2.09k
    return this->getInnerTypeLoc();
1210
2.09k
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getPointeeLoc() const
Line
Count
Source
1208
53.1k
  TypeLoc getPointeeLoc() const {
1209
53.1k
    return this->getInnerTypeLoc();
1210
53.1k
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getPointeeLoc() const
Line
Count
Source
1208
1.14M
  TypeLoc getPointeeLoc() const {
1209
1.14M
    return this->getInnerTypeLoc();
1210
1.14M
  }
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getPointeeLoc() const
Line
Count
Source
1208
1.15M
  TypeLoc getPointeeLoc() const {
1209
1.15M
    return this->getInnerTypeLoc();
1210
1.15M
  }
1211
1212
4.35M
  SourceRange getLocalSourceRange() const {
1213
4.35M
    return SourceRange(getSigilLoc(), getSigilLoc());
1214
4.35M
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getLocalSourceRange() const
Line
Count
Source
1212
32.9k
  SourceRange getLocalSourceRange() const {
1213
32.9k
    return SourceRange(getSigilLoc(), getSigilLoc());
1214
32.9k
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getLocalSourceRange() const
Line
Count
Source
1212
535k
  SourceRange getLocalSourceRange() const {
1213
535k
    return SourceRange(getSigilLoc(), getSigilLoc());
1214
535k
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getLocalSourceRange() const
Line
Count
Source
1212
1.77M
  SourceRange getLocalSourceRange() const {
1213
1.77M
    return SourceRange(getSigilLoc(), getSigilLoc());
1214
1.77M
  }
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getLocalSourceRange() const
Line
Count
Source
1212
2.01M
  SourceRange getLocalSourceRange() const {
1213
2.01M
    return SourceRange(getSigilLoc(), getSigilLoc());
1214
2.01M
  }
1215
1216
1.19M
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1217
1.19M
    setSigilLoc(Loc);
1218
1.19M
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation)
Line
Count
Source
1216
932
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1217
932
    setSigilLoc(Loc);
1218
932
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation)
Line
Count
Source
1216
78.6k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1217
78.6k
    setSigilLoc(Loc);
1218
78.6k
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation)
Line
Count
Source
1216
532k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1217
532k
    setSigilLoc(Loc);
1218
532k
  }
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation)
Line
Count
Source
1216
581k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1217
581k
    setSigilLoc(Loc);
1218
581k
  }
1219
1220
53.2M
  QualType getInnerType() const {
1221
53.2M
    return this->getTypePtr()->getPointeeType();
1222
53.2M
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getInnerType() const
Line
Count
Source
1220
323k
  QualType getInnerType() const {
1221
323k
    return this->getTypePtr()->getPointeeType();
1222
323k
  }
clang::PointerLikeTypeLoc<clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getInnerType() const
Line
Count
Source
1220
404k
  QualType getInnerType() const {
1221
404k
    return this->getTypePtr()->getPointeeType();
1222
404k
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getInnerType() const
Line
Count
Source
1220
6.36M
  QualType getInnerType() const {
1221
6.36M
    return this->getTypePtr()->getPointeeType();
1222
6.36M
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getInnerType() const
Line
Count
Source
1220
46.1M
  QualType getInnerType() const {
1221
46.1M
    return this->getTypePtr()->getPointeeType();
1222
46.1M
  }
1223
};
1224
1225
/// Wrapper for source info for pointers.
1226
class PointerTypeLoc : public PointerLikeTypeLoc<PointerTypeLoc,
1227
                                                 PointerType> {
1228
public:
1229
285k
  SourceLocation getStarLoc() const {
1230
285k
    return getSigilLoc();
1231
285k
  }
1232
1233
8.60M
  void setStarLoc(SourceLocation Loc) {
1234
8.60M
    setSigilLoc(Loc);
1235
8.60M
  }
1236
};
1237
1238
/// Wrapper for source info for block pointers.
1239
class BlockPointerTypeLoc : public PointerLikeTypeLoc<BlockPointerTypeLoc,
1240
                                                      BlockPointerType> {
1241
public:
1242
1.85k
  SourceLocation getCaretLoc() const {
1243
1.85k
    return getSigilLoc();
1244
1.85k
  }
1245
1246
60.9k
  void setCaretLoc(SourceLocation Loc) {
1247
60.9k
    setSigilLoc(Loc);
1248
60.9k
  }
1249
};
1250
1251
struct MemberPointerLocInfo : public PointerLikeLocInfo {
1252
  TypeSourceInfo *ClassTInfo;
1253
};
1254
1255
/// Wrapper for source info for member pointers.
1256
class MemberPointerTypeLoc : public PointerLikeTypeLoc<MemberPointerTypeLoc,
1257
                                                       MemberPointerType,
1258
                                                       MemberPointerLocInfo> {
1259
public:
1260
63.4k
  SourceLocation getStarLoc() const {
1261
63.4k
    return getSigilLoc();
1262
63.4k
  }
1263
1264
32.2k
  void setStarLoc(SourceLocation Loc) {
1265
32.2k
    setSigilLoc(Loc);
1266
32.2k
  }
1267
1268
32.1k
  const Type *getClass() const {
1269
32.1k
    return getTypePtr()->getClass();
1270
32.1k
  }
1271
1272
64.8k
  TypeSourceInfo *getClassTInfo() const {
1273
64.8k
    return getLocalData()->ClassTInfo;
1274
64.8k
  }
1275
1276
51.2k
  void setClassTInfo(TypeSourceInfo* TI) {
1277
51.2k
    getLocalData()->ClassTInfo = TI;
1278
51.2k
  }
1279
1280
18.5k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1281
18.5k
    setSigilLoc(Loc);
1282
18.5k
    setClassTInfo(nullptr);
1283
18.5k
  }
1284
1285
61.7k
  SourceRange getLocalSourceRange() const {
1286
61.7k
    if (TypeSourceInfo *TI = getClassTInfo())
1287
41.8k
      return SourceRange(TI->getTypeLoc().getBeginLoc(), getStarLoc());
1288
19.9k
    else
1289
19.9k
      return SourceRange(getStarLoc());
1290
61.7k
  }
1291
};
1292
1293
/// Wraps an ObjCPointerType with source location information.
1294
class ObjCObjectPointerTypeLoc :
1295
    public PointerLikeTypeLoc<ObjCObjectPointerTypeLoc,
1296
                              ObjCObjectPointerType> {
1297
public:
1298
37.3k
  SourceLocation getStarLoc() const {
1299
37.3k
    return getSigilLoc();
1300
37.3k
  }
1301
1302
1.17M
  void setStarLoc(SourceLocation Loc) {
1303
1.17M
    setSigilLoc(Loc);
1304
1.17M
  }
1305
};
1306
1307
class ReferenceTypeLoc : public PointerLikeTypeLoc<ReferenceTypeLoc,
1308
                                                   ReferenceType> {
1309
public:
1310
24.4M
  QualType getInnerType() const {
1311
24.4M
    return getTypePtr()->getPointeeTypeAsWritten();
1312
24.4M
  }
1313
};
1314
1315
class LValueReferenceTypeLoc :
1316
    public InheritingConcreteTypeLoc<ReferenceTypeLoc,
1317
                                     LValueReferenceTypeLoc,
1318
                                     LValueReferenceType> {
1319
public:
1320
142k
  SourceLocation getAmpLoc() const {
1321
142k
    return getSigilLoc();
1322
142k
  }
1323
1324
1.61M
  void setAmpLoc(SourceLocation Loc) {
1325
1.61M
    setSigilLoc(Loc);
1326
1.61M
  }
1327
};
1328
1329
class RValueReferenceTypeLoc :
1330
    public InheritingConcreteTypeLoc<ReferenceTypeLoc,
1331
                                     RValueReferenceTypeLoc,
1332
                                     RValueReferenceType> {
1333
public:
1334
19.1k
  SourceLocation getAmpAmpLoc() const {
1335
19.1k
    return getSigilLoc();
1336
19.1k
  }
1337
1338
273k
  void setAmpAmpLoc(SourceLocation Loc) {
1339
273k
    setSigilLoc(Loc);
1340
273k
  }
1341
};
1342
1343
struct FunctionLocInfo {
1344
  SourceLocation LocalRangeBegin;
1345
  SourceLocation LParenLoc;
1346
  SourceLocation RParenLoc;
1347
  SourceLocation LocalRangeEnd;
1348
};
1349
1350
/// Wrapper for source info for functions.
1351
class FunctionTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
1352
                                               FunctionTypeLoc,
1353
                                               FunctionType,
1354
                                               FunctionLocInfo> {
1355
152M
  bool hasExceptionSpec() const {
1356
152M
    if (auto *FPT = dyn_cast<FunctionProtoType>(getTypePtr())) {
1357
152M
      return FPT->hasExceptionSpec();
1358
152M
    }
1359
497k
    return false;
1360
152M
  }
1361
1362
1.90M
  SourceRange *getExceptionSpecRangePtr() const {
1363
1.90M
    assert(hasExceptionSpec() && "No exception spec range");
1364
    // After the Info comes the ParmVarDecl array, and after that comes the
1365
    // exception specification information.
1366
0
    return (SourceRange *)(getParmArray() + getNumParams());
1367
1.90M
  }
1368
1369
public:
1370
2.50M
  SourceLocation getLocalRangeBegin() const {
1371
2.50M
    return getLocalData()->LocalRangeBegin;
1372
2.50M
  }
1373
1374
34.5M
  void setLocalRangeBegin(SourceLocation L) {
1375
34.5M
    getLocalData()->LocalRangeBegin = L;
1376
34.5M
  }
1377
1378
2.50M
  SourceLocation getLocalRangeEnd() const {
1379
2.50M
    return getLocalData()->LocalRangeEnd;
1380
2.50M
  }
1381
1382
34.5M
  void setLocalRangeEnd(SourceLocation L) {
1383
34.5M
    getLocalData()->LocalRangeEnd = L;
1384
34.5M
  }
1385
1386
1.45M
  SourceLocation getLParenLoc() const {
1387
1.45M
    return this->getLocalData()->LParenLoc;
1388
1.45M
  }
1389
1390
34.5M
  void setLParenLoc(SourceLocation Loc) {
1391
34.5M
    this->getLocalData()->LParenLoc = Loc;
1392
34.5M
  }
1393
1394
1.43M
  SourceLocation getRParenLoc() const {
1395
1.43M
    return this->getLocalData()->RParenLoc;
1396
1.43M
  }
1397
1398
34.5M
  void setRParenLoc(SourceLocation Loc) {
1399
34.5M
    this->getLocalData()->RParenLoc = Loc;
1400
34.5M
  }
1401
1402
0
  SourceRange getParensRange() const {
1403
0
    return SourceRange(getLParenLoc(), getRParenLoc());
1404
0
  }
1405
1406
1.43M
  SourceRange getExceptionSpecRange() const {
1407
1.43M
    if (hasExceptionSpec())
1408
451k
      return *getExceptionSpecRangePtr();
1409
983k
    return {};
1410
1.43M
  }
1411
1412
34.2M
  void setExceptionSpecRange(SourceRange R) {
1413
34.2M
    if (hasExceptionSpec())
1414
1.45M
      *getExceptionSpecRangePtr() = R;
1415
34.2M
  }
1416
1417
1.19M
  ArrayRef<ParmVarDecl *> getParams() const {
1418
1.19M
    return llvm::makeArrayRef(getParmArray(), getNumParams());
1419
1.19M
  }
1420
1421
  // ParmVarDecls* are stored after Info, one for each parameter.
1422
102M
  ParmVarDecl **getParmArray() const {
1423
102M
    return (ParmVarDecl**) getExtraLocalData();
1424
102M
  }
1425
1426
154M
  unsigned getNumParams() const {
1427
154M
    if (isa<FunctionNoProtoType>(getTypePtr()))
1428
497k
      return 0;
1429
153M
    return cast<FunctionProtoType>(getTypePtr())->getNumParams();
1430
154M
  }
1431
1432
5.00M
  ParmVarDecl *getParam(unsigned i) const { return getParmArray()[i]; }
1433
94.4M
  void setParam(unsigned i, ParmVarDecl *VD) { getParmArray()[i] = VD; }
1434
1435
1.57M
  TypeLoc getReturnLoc() const {
1436
1.57M
    return getInnerTypeLoc();
1437
1.57M
  }
1438
1439
1.06M
  SourceRange getLocalSourceRange() const {
1440
1.06M
    return SourceRange(getLocalRangeBegin(), getLocalRangeEnd());
1441
1.06M
  }
1442
1443
371k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1444
371k
    setLocalRangeBegin(Loc);
1445
371k
    setLParenLoc(Loc);
1446
371k
    setRParenLoc(Loc);
1447
371k
    setLocalRangeEnd(Loc);
1448
830k
    for (unsigned i = 0, e = getNumParams(); i != e; 
++i459k
)
1449
459k
      setParam(i, nullptr);
1450
371k
    if (hasExceptionSpec())
1451
131k
      setExceptionSpecRange(Loc);
1452
371k
  }
1453
1454
  /// Returns the size of the type source info data block that is
1455
  /// specific to this type.
1456
114M
  unsigned getExtraLocalDataSize() const {
1457
114M
    unsigned ExceptSpecSize = hasExceptionSpec() ? 
sizeof(SourceRange)8.46M
:
0106M
;
1458
114M
    return (getNumParams() * sizeof(ParmVarDecl *)) + ExceptSpecSize;
1459
114M
  }
1460
1461
255M
  unsigned getExtraLocalDataAlignment() const { return alignof(ParmVarDecl *); }
1462
1463
154M
  QualType getInnerType() const { return getTypePtr()->getReturnType(); }
1464
};
1465
1466
class FunctionProtoTypeLoc :
1467
    public InheritingConcreteTypeLoc<FunctionTypeLoc,
1468
                                     FunctionProtoTypeLoc,
1469
                                     FunctionProtoType> {
1470
};
1471
1472
class FunctionNoProtoTypeLoc :
1473
    public InheritingConcreteTypeLoc<FunctionTypeLoc,
1474
                                     FunctionNoProtoTypeLoc,
1475
                                     FunctionNoProtoType> {
1476
};
1477
1478
struct ArrayLocInfo {
1479
  SourceLocation LBracketLoc, RBracketLoc;
1480
  Expr *Size;
1481
};
1482
1483
/// Wrapper for source info for arrays.
1484
class ArrayTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
1485
                                            ArrayTypeLoc,
1486
                                            ArrayType,
1487
                                            ArrayLocInfo> {
1488
public:
1489
86.2k
  SourceLocation getLBracketLoc() const {
1490
86.2k
    return getLocalData()->LBracketLoc;
1491
86.2k
  }
1492
1493
483k
  void setLBracketLoc(SourceLocation Loc) {
1494
483k
    getLocalData()->LBracketLoc = Loc;
1495
483k
  }
1496
1497
86.2k
  SourceLocation getRBracketLoc() const {
1498
86.2k
    return getLocalData()->RBracketLoc;
1499
86.2k
  }
1500
1501
483k
  void setRBracketLoc(SourceLocation Loc) {
1502
483k
    getLocalData()->RBracketLoc = Loc;
1503
483k
  }