Coverage Report

Created: 2020-02-25 14:32

/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
1.48G
  TypeLoc() = default;
67
  TypeLoc(QualType ty, void *opaqueData)
68
579M
      : Ty(ty.getAsOpaquePtr()), Data(opaqueData) {}
69
  TypeLoc(const Type *ty, void *opaqueData)
70
71.8M
      : 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.06G
  T castAs() const {
78
1.06G
    assert(T::isKind(*this));
79
1.06G
    T t;
80
1.06G
    TypeLoc& tl = t;
81
1.06G
    tl = *this;
82
1.06G
    return t;
83
1.06G
  }
clang::UnqualTypeLoc clang::TypeLoc::castAs<clang::UnqualTypeLoc>() const
Line
Count
Source
77
55.1M
  T castAs() const {
78
55.1M
    assert(T::isKind(*this));
79
55.1M
    T t;
80
55.1M
    TypeLoc& tl = t;
81
55.1M
    tl = *this;
82
55.1M
    return t;
83
55.1M
  }
clang::TemplateSpecializationTypeLoc clang::TypeLoc::castAs<clang::TemplateSpecializationTypeLoc>() const
Line
Count
Source
77
228M
  T castAs() const {
78
228M
    assert(T::isKind(*this));
79
228M
    T t;
80
228M
    TypeLoc& tl = t;
81
228M
    tl = *this;
82
228M
    return t;
83
228M
  }
clang::QualifiedTypeLoc clang::TypeLoc::castAs<clang::QualifiedTypeLoc>() const
Line
Count
Source
77
28.2M
  T castAs() const {
78
28.2M
    assert(T::isKind(*this));
79
28.2M
    T t;
80
28.2M
    TypeLoc& tl = t;
81
28.2M
    tl = *this;
82
28.2M
    return t;
83
28.2M
  }
clang::AdjustedTypeLoc clang::TypeLoc::castAs<clang::AdjustedTypeLoc>() const
Line
Count
Source
77
69
  T castAs() const {
78
69
    assert(T::isKind(*this));
79
69
    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
27.5k
  T castAs() const {
78
27.5k
    assert(T::isKind(*this));
79
27.5k
    T t;
80
27.5k
    TypeLoc& tl = t;
81
27.5k
    tl = *this;
82
27.5k
    return t;
83
27.5k
  }
clang::ConstantArrayTypeLoc clang::TypeLoc::castAs<clang::ConstantArrayTypeLoc>() const
Line
Count
Source
77
1.87M
  T castAs() const {
78
1.87M
    assert(T::isKind(*this));
79
1.87M
    T t;
80
1.87M
    TypeLoc& tl = t;
81
1.87M
    tl = *this;
82
1.87M
    return t;
83
1.87M
  }
clang::DependentSizedArrayTypeLoc clang::TypeLoc::castAs<clang::DependentSizedArrayTypeLoc>() const
Line
Count
Source
77
184k
  T castAs() const {
78
184k
    assert(T::isKind(*this));
79
184k
    T t;
80
184k
    TypeLoc& tl = t;
81
184k
    tl = *this;
82
184k
    return t;
83
184k
  }
clang::IncompleteArrayTypeLoc clang::TypeLoc::castAs<clang::IncompleteArrayTypeLoc>() const
Line
Count
Source
77
492k
  T castAs() const {
78
492k
    assert(T::isKind(*this));
79
492k
    T t;
80
492k
    TypeLoc& tl = t;
81
492k
    tl = *this;
82
492k
    return t;
83
492k
  }
clang::VariableArrayTypeLoc clang::TypeLoc::castAs<clang::VariableArrayTypeLoc>() const
Line
Count
Source
77
91.4k
  T castAs() const {
78
91.4k
    assert(T::isKind(*this));
79
91.4k
    T t;
80
91.4k
    TypeLoc& tl = t;
81
91.4k
    tl = *this;
82
91.4k
    return t;
83
91.4k
  }
clang::AtomicTypeLoc clang::TypeLoc::castAs<clang::AtomicTypeLoc>() const
Line
Count
Source
77
32.3k
  T castAs() const {
78
32.3k
    assert(T::isKind(*this));
79
32.3k
    T t;
80
32.3k
    TypeLoc& tl = t;
81
32.3k
    tl = *this;
82
32.3k
    return t;
83
32.3k
  }
clang::AttributedTypeLoc clang::TypeLoc::castAs<clang::AttributedTypeLoc>() const
Line
Count
Source
77
18.0M
  T castAs() const {
78
18.0M
    assert(T::isKind(*this));
79
18.0M
    T t;
80
18.0M
    TypeLoc& tl = t;
81
18.0M
    tl = *this;
82
18.0M
    return t;
83
18.0M
  }
clang::BlockPointerTypeLoc clang::TypeLoc::castAs<clang::BlockPointerTypeLoc>() const
Line
Count
Source
77
598k
  T castAs() const {
78
598k
    assert(T::isKind(*this));
79
598k
    T t;
80
598k
    TypeLoc& tl = t;
81
598k
    tl = *this;
82
598k
    return t;
83
598k
  }
clang::BuiltinTypeLoc clang::TypeLoc::castAs<clang::BuiltinTypeLoc>() const
Line
Count
Source
77
75.4M
  T castAs() const {
78
75.4M
    assert(T::isKind(*this));
79
75.4M
    T t;
80
75.4M
    TypeLoc& tl = t;
81
75.4M
    tl = *this;
82
75.4M
    return t;
83
75.4M
  }
clang::ComplexTypeLoc clang::TypeLoc::castAs<clang::ComplexTypeLoc>() const
Line
Count
Source
77
88.7k
  T castAs() const {
78
88.7k
    assert(T::isKind(*this));
79
88.7k
    T t;
80
88.7k
    TypeLoc& tl = t;
81
88.7k
    tl = *this;
82
88.7k
    return t;
83
88.7k
  }
clang::DecltypeTypeLoc clang::TypeLoc::castAs<clang::DecltypeTypeLoc>() const
Line
Count
Source
77
2.75M
  T castAs() const {
78
2.75M
    assert(T::isKind(*this));
79
2.75M
    T t;
80
2.75M
    TypeLoc& tl = t;
81
2.75M
    tl = *this;
82
2.75M
    return t;
83
2.75M
  }
clang::AutoTypeLoc clang::TypeLoc::castAs<clang::AutoTypeLoc>() const
Line
Count
Source
77
769k
  T castAs() const {
78
769k
    assert(T::isKind(*this));
79
769k
    T t;
80
769k
    TypeLoc& tl = t;
81
769k
    tl = *this;
82
769k
    return t;
83
769k
  }
clang::DeducedTemplateSpecializationTypeLoc clang::TypeLoc::castAs<clang::DeducedTemplateSpecializationTypeLoc>() const
Line
Count
Source
77
19.8k
  T castAs() const {
78
19.8k
    assert(T::isKind(*this));
79
19.8k
    T t;
80
19.8k
    TypeLoc& tl = t;
81
19.8k
    tl = *this;
82
19.8k
    return t;
83
19.8k
  }
clang::DependentAddressSpaceTypeLoc clang::TypeLoc::castAs<clang::DependentAddressSpaceTypeLoc>() const
Line
Count
Source
77
629
  T castAs() const {
78
629
    assert(T::isKind(*this));
79
629
    T t;
80
629
    TypeLoc& tl = t;
81
629
    tl = *this;
82
629
    return t;
83
629
  }
clang::DependentNameTypeLoc clang::TypeLoc::castAs<clang::DependentNameTypeLoc>() const
Line
Count
Source
77
25.9M
  T castAs() const {
78
25.9M
    assert(T::isKind(*this));
79
25.9M
    T t;
80
25.9M
    TypeLoc& tl = t;
81
25.9M
    tl = *this;
82
25.9M
    return t;
83
25.9M
  }
clang::DependentSizedExtVectorTypeLoc clang::TypeLoc::castAs<clang::DependentSizedExtVectorTypeLoc>() const
Line
Count
Source
77
336
  T castAs() const {
78
336
    assert(T::isKind(*this));
79
336
    T t;
80
336
    TypeLoc& tl = t;
81
336
    tl = *this;
82
336
    return t;
83
336
  }
clang::DependentTemplateSpecializationTypeLoc clang::TypeLoc::castAs<clang::DependentTemplateSpecializationTypeLoc>() const
Line
Count
Source
77
2.20M
  T castAs() const {
78
2.20M
    assert(T::isKind(*this));
79
2.20M
    T t;
80
2.20M
    TypeLoc& tl = t;
81
2.20M
    tl = *this;
82
2.20M
    return t;
83
2.20M
  }
clang::DependentVectorTypeLoc clang::TypeLoc::castAs<clang::DependentVectorTypeLoc>() const
Line
Count
Source
77
555
  T castAs() const {
78
555
    assert(T::isKind(*this));
79
555
    T t;
80
555
    TypeLoc& tl = t;
81
555
    tl = *this;
82
555
    return t;
83
555
  }
clang::ElaboratedTypeLoc clang::TypeLoc::castAs<clang::ElaboratedTypeLoc>() const
Line
Count
Source
77
18.0M
  T castAs() const {
78
18.0M
    assert(T::isKind(*this));
79
18.0M
    T t;
80
18.0M
    TypeLoc& tl = t;
81
18.0M
    tl = *this;
82
18.0M
    return t;
83
18.0M
  }
clang::FunctionNoProtoTypeLoc clang::TypeLoc::castAs<clang::FunctionNoProtoTypeLoc>() const
Line
Count
Source
77
137k
  T castAs() const {
78
137k
    assert(T::isKind(*this));
79
137k
    T t;
80
137k
    TypeLoc& tl = t;
81
137k
    tl = *this;
82
137k
    return t;
83
137k
  }
clang::FunctionProtoTypeLoc clang::TypeLoc::castAs<clang::FunctionProtoTypeLoc>() const
Line
Count
Source
77
61.0M
  T castAs() const {
78
61.0M
    assert(T::isKind(*this));
79
61.0M
    T t;
80
61.0M
    TypeLoc& tl = t;
81
61.0M
    tl = *this;
82
61.0M
    return t;
83
61.0M
  }
clang::InjectedClassNameTypeLoc clang::TypeLoc::castAs<clang::InjectedClassNameTypeLoc>() const
Line
Count
Source
77
8.42M
  T castAs() const {
78
8.42M
    assert(T::isKind(*this));
79
8.42M
    T t;
80
8.42M
    TypeLoc& tl = t;
81
8.42M
    tl = *this;
82
8.42M
    return t;
83
8.42M
  }
clang::MacroQualifiedTypeLoc clang::TypeLoc::castAs<clang::MacroQualifiedTypeLoc>() const
Line
Count
Source
77
1.34M
  T castAs() const {
78
1.34M
    assert(T::isKind(*this));
79
1.34M
    T t;
80
1.34M
    TypeLoc& tl = t;
81
1.34M
    tl = *this;
82
1.34M
    return t;
83
1.34M
  }
clang::MemberPointerTypeLoc clang::TypeLoc::castAs<clang::MemberPointerTypeLoc>() const
Line
Count
Source
77
446k
  T castAs() const {
78
446k
    assert(T::isKind(*this));
79
446k
    T t;
80
446k
    TypeLoc& tl = t;
81
446k
    tl = *this;
82
446k
    return t;
83
446k
  }
clang::ObjCObjectPointerTypeLoc clang::TypeLoc::castAs<clang::ObjCObjectPointerTypeLoc>() const
Line
Count
Source
77
12.7M
  T castAs() const {
78
12.7M
    assert(T::isKind(*this));
79
12.7M
    T t;
80
12.7M
    TypeLoc& tl = t;
81
12.7M
    tl = *this;
82
12.7M
    return t;
83
12.7M
  }
clang::ObjCObjectTypeLoc clang::TypeLoc::castAs<clang::ObjCObjectTypeLoc>() const
Line
Count
Source
77
4.03M
  T castAs() const {
78
4.03M
    assert(T::isKind(*this));
79
4.03M
    T t;
80
4.03M
    TypeLoc& tl = t;
81
4.03M
    tl = *this;
82
4.03M
    return t;
83
4.03M
  }
clang::ObjCInterfaceTypeLoc clang::TypeLoc::castAs<clang::ObjCInterfaceTypeLoc>() const
Line
Count
Source
77
16.2M
  T castAs() const {
78
16.2M
    assert(T::isKind(*this));
79
16.2M
    T t;
80
16.2M
    TypeLoc& tl = t;
81
16.2M
    tl = *this;
82
16.2M
    return t;
83
16.2M
  }
clang::ObjCTypeParamTypeLoc clang::TypeLoc::castAs<clang::ObjCTypeParamTypeLoc>() const
Line
Count
Source
77
920k
  T castAs() const {
78
920k
    assert(T::isKind(*this));
79
920k
    T t;
80
920k
    TypeLoc& tl = t;
81
920k
    tl = *this;
82
920k
    return t;
83
920k
  }
clang::PackExpansionTypeLoc clang::TypeLoc::castAs<clang::PackExpansionTypeLoc>() const
Line
Count
Source
77
3.34M
  T castAs() const {
78
3.34M
    assert(T::isKind(*this));
79
3.34M
    T t;
80
3.34M
    TypeLoc& tl = t;
81
3.34M
    tl = *this;
82
3.34M
    return t;
83
3.34M
  }
clang::ParenTypeLoc clang::TypeLoc::castAs<clang::ParenTypeLoc>() const
Line
Count
Source
77
3.15M
  T castAs() const {
78
3.15M
    assert(T::isKind(*this));
79
3.15M
    T t;
80
3.15M
    TypeLoc& tl = t;
81
3.15M
    tl = *this;
82
3.15M
    return t;
83
3.15M
  }
clang::PipeTypeLoc clang::TypeLoc::castAs<clang::PipeTypeLoc>() const
Line
Count
Source
77
497
  T castAs() const {
78
497
    assert(T::isKind(*this));
79
497
    T t;
80
497
    TypeLoc& tl = t;
81
497
    tl = *this;
82
497
    return t;
83
497
  }
clang::PointerTypeLoc clang::TypeLoc::castAs<clang::PointerTypeLoc>() const
Line
Count
Source
77
33.3M
  T castAs() const {
78
33.3M
    assert(T::isKind(*this));
79
33.3M
    T t;
80
33.3M
    TypeLoc& tl = t;
81
33.3M
    tl = *this;
82
33.3M
    return t;
83
33.3M
  }
clang::LValueReferenceTypeLoc clang::TypeLoc::castAs<clang::LValueReferenceTypeLoc>() const
Line
Count
Source
77
20.8M
  T castAs() const {
78
20.8M
    assert(T::isKind(*this));
79
20.8M
    T t;
80
20.8M
    TypeLoc& tl = t;
81
20.8M
    tl = *this;
82
20.8M
    return t;
83
20.8M
  }
clang::RValueReferenceTypeLoc clang::TypeLoc::castAs<clang::RValueReferenceTypeLoc>() const
Line
Count
Source
77
6.60M
  T castAs() const {
78
6.60M
    assert(T::isKind(*this));
79
6.60M
    T t;
80
6.60M
    TypeLoc& tl = t;
81
6.60M
    tl = *this;
82
6.60M
    return t;
83
6.60M
  }
clang::SubstTemplateTypeParmPackTypeLoc clang::TypeLoc::castAs<clang::SubstTemplateTypeParmPackTypeLoc>() const
Line
Count
Source
77
545k
  T castAs() const {
78
545k
    assert(T::isKind(*this));
79
545k
    T t;
80
545k
    TypeLoc& tl = t;
81
545k
    tl = *this;
82
545k
    return t;
83
545k
  }
clang::SubstTemplateTypeParmTypeLoc clang::TypeLoc::castAs<clang::SubstTemplateTypeParmTypeLoc>() const
Line
Count
Source
77
63.0M
  T castAs() const {
78
63.0M
    assert(T::isKind(*this));
79
63.0M
    T t;
80
63.0M
    TypeLoc& tl = t;
81
63.0M
    tl = *this;
82
63.0M
    return t;
83
63.0M
  }
clang::EnumTypeLoc clang::TypeLoc::castAs<clang::EnumTypeLoc>() const
Line
Count
Source
77
1.67M
  T castAs() const {
78
1.67M
    assert(T::isKind(*this));
79
1.67M
    T t;
80
1.67M
    TypeLoc& tl = t;
81
1.67M
    tl = *this;
82
1.67M
    return t;
83
1.67M
  }
clang::RecordTypeLoc clang::TypeLoc::castAs<clang::RecordTypeLoc>() const
Line
Count
Source
77
35.3M
  T castAs() const {
78
35.3M
    assert(T::isKind(*this));
79
35.3M
    T t;
80
35.3M
    TypeLoc& tl = t;
81
35.3M
    tl = *this;
82
35.3M
    return t;
83
35.3M
  }
clang::TemplateTypeParmTypeLoc clang::TypeLoc::castAs<clang::TemplateTypeParmTypeLoc>() const
Line
Count
Source
77
117M
  T castAs() const {
78
117M
    assert(T::isKind(*this));
79
117M
    T t;
80
117M
    TypeLoc& tl = t;
81
117M
    tl = *this;
82
117M
    return t;
83
117M
  }
clang::TypeOfExprTypeLoc clang::TypeLoc::castAs<clang::TypeOfExprTypeLoc>() const
Line
Count
Source
77
34.9k
  T castAs() const {
78
34.9k
    assert(T::isKind(*this));
79
34.9k
    T t;
80
34.9k
    TypeLoc& tl = t;
81
34.9k
    tl = *this;
82
34.9k
    return t;
83
34.9k
  }
clang::TypeOfTypeLoc clang::TypeLoc::castAs<clang::TypeOfTypeLoc>() const
Line
Count
Source
77
584
  T castAs() const {
78
584
    assert(T::isKind(*this));
79
584
    T t;
80
584
    TypeLoc& tl = t;
81
584
    tl = *this;
82
584
    return t;
83
584
  }
clang::TypedefTypeLoc clang::TypeLoc::castAs<clang::TypedefTypeLoc>() const
Line
Count
Source
77
193M
  T castAs() const {
78
193M
    assert(T::isKind(*this));
79
193M
    T t;
80
193M
    TypeLoc& tl = t;
81
193M
    tl = *this;
82
193M
    return t;
83
193M
  }
clang::UnaryTransformTypeLoc clang::TypeLoc::castAs<clang::UnaryTransformTypeLoc>() const
Line
Count
Source
77
16.0k
  T castAs() const {
78
16.0k
    assert(T::isKind(*this));
79
16.0k
    T t;
80
16.0k
    TypeLoc& tl = t;
81
16.0k
    tl = *this;
82
16.0k
    return t;
83
16.0k
  }
clang::UnresolvedUsingTypeLoc clang::TypeLoc::castAs<clang::UnresolvedUsingTypeLoc>() const
Line
Count
Source
77
9.52k
  T castAs() const {
78
9.52k
    assert(T::isKind(*this));
79
9.52k
    T t;
80
9.52k
    TypeLoc& tl = t;
81
9.52k
    tl = *this;
82
9.52k
    return t;
83
9.52k
  }
clang::VectorTypeLoc clang::TypeLoc::castAs<clang::VectorTypeLoc>() const
Line
Count
Source
77
3.50M
  T castAs() const {
78
3.50M
    assert(T::isKind(*this));
79
3.50M
    T t;
80
3.50M
    TypeLoc& tl = t;
81
3.50M
    tl = *this;
82
3.50M
    return t;
83
3.50M
  }
clang::ExtVectorTypeLoc clang::TypeLoc::castAs<clang::ExtVectorTypeLoc>() const
Line
Count
Source
77
13.6k
  T castAs() const {
78
13.6k
    assert(T::isKind(*this));
79
13.6k
    T t;
80
13.6k
    TypeLoc& tl = t;
81
13.6k
    tl = *this;
82
13.6k
    return t;
83
13.6k
  }
clang::ArrayTypeLoc clang::TypeLoc::castAs<clang::ArrayTypeLoc>() const
Line
Count
Source
77
327k
  T castAs() const {
78
327k
    assert(T::isKind(*this));
79
327k
    T t;
80
327k
    TypeLoc& tl = t;
81
327k
    tl = *this;
82
327k
    return t;
83
327k
  }
clang::TypeLoc clang::TypeLoc::castAs<clang::TypeLoc>() const
Line
Count
Source
77
5.00M
  T castAs() const {
78
5.00M
    assert(T::isKind(*this));
79
5.00M
    T t;
80
5.00M
    TypeLoc& tl = t;
81
5.00M
    tl = *this;
82
5.00M
    return t;
83
5.00M
  }
clang::DeducedTypeLoc clang::TypeLoc::castAs<clang::DeducedTypeLoc>() const
Line
Count
Source
77
548
  T castAs() const {
78
548
    assert(T::isKind(*this));
79
548
    T t;
80
548
    TypeLoc& tl = t;
81
548
    tl = *this;
82
548
    return t;
83
548
  }
clang::FunctionTypeLoc clang::TypeLoc::castAs<clang::FunctionTypeLoc>() const
Line
Count
Source
77
7.14M
  T castAs() const {
78
7.14M
    assert(T::isKind(*this));
79
7.14M
    T t;
80
7.14M
    TypeLoc& tl = t;
81
7.14M
    tl = *this;
82
7.14M
    return t;
83
7.14M
  }
clang::ReferenceTypeLoc clang::TypeLoc::castAs<clang::ReferenceTypeLoc>() const
Line
Count
Source
77
3.90k
  T castAs() const {
78
3.90k
    assert(T::isKind(*this));
79
3.90k
    T t;
80
3.90k
    TypeLoc& tl = t;
81
3.90k
    tl = *this;
82
3.90k
    return t;
83
3.90k
  }
clang::TagTypeLoc clang::TypeLoc::castAs<clang::TagTypeLoc>() const
Line
Count
Source
77
1.44M
  T castAs() const {
78
1.44M
    assert(T::isKind(*this));
79
1.44M
    T t;
80
1.44M
    TypeLoc& tl = t;
81
1.44M
    tl = *this;
82
1.44M
    return t;
83
1.44M
  }
clang::TypeSpecTypeLoc clang::TypeLoc::castAs<clang::TypeSpecTypeLoc>() const
Line
Count
Source
77
1.33M
  T castAs() const {
78
1.33M
    assert(T::isKind(*this));
79
1.33M
    T t;
80
1.33M
    TypeLoc& tl = t;
81
1.33M
    tl = *this;
82
1.33M
    return t;
83
1.33M
  }
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
179M
  T getAs() const {
89
179M
    if (!T::isKind(*this))
90
171M
      return {};
91
7.85M
    T t;
92
7.85M
    TypeLoc& tl = t;
93
7.85M
    tl = *this;
94
7.85M
    return t;
95
7.85M
  }
clang::QualifiedTypeLoc clang::TypeLoc::getAs<clang::QualifiedTypeLoc>() const
Line
Count
Source
88
58.1M
  T getAs() const {
89
58.1M
    if (!T::isKind(*this))
90
55.3M
      return {};
91
2.76M
    T t;
92
2.76M
    TypeLoc& tl = t;
93
2.76M
    tl = *this;
94
2.76M
    return t;
95
2.76M
  }
clang::AttributedTypeLoc clang::TypeLoc::getAs<clang::AttributedTypeLoc>() const
Line
Count
Source
88
30.1M
  T getAs() const {
89
30.1M
    if (!T::isKind(*this))
90
28.2M
      return {};
91
1.91M
    T t;
92
1.91M
    TypeLoc& tl = t;
93
1.91M
    tl = *this;
94
1.91M
    return t;
95
1.91M
  }
clang::PointerTypeLoc clang::TypeLoc::getAs<clang::PointerTypeLoc>() const
Line
Count
Source
88
7.58k
  T getAs() const {
89
7.58k
    if (!T::isKind(*this))
90
1.03k
      return {};
91
6.55k
    T t;
92
6.55k
    TypeLoc& tl = t;
93
6.55k
    tl = *this;
94
6.55k
    return t;
95
6.55k
  }
clang::ReferenceTypeLoc clang::TypeLoc::getAs<clang::ReferenceTypeLoc>() const
Line
Count
Source
88
1.01k
  T getAs() const {
89
1.01k
    if (!T::isKind(*this))
90
998
      return {};
91
18
    T t;
92
18
    TypeLoc& tl = t;
93
18
    tl = *this;
94
18
    return t;
95
18
  }
clang::AdjustedTypeLoc clang::TypeLoc::getAs<clang::AdjustedTypeLoc>() const
Line
Count
Source
88
21.2M
  T getAs() const {
89
21.2M
    if (!T::isKind(*this))
90
21.2M
      return {};
91
0
    T t;
92
0
    TypeLoc& tl = t;
93
0
    tl = *this;
94
0
    return t;
95
0
  }
clang::BlockPointerTypeLoc clang::TypeLoc::getAs<clang::BlockPointerTypeLoc>() const
Line
Count
Source
88
648
  T getAs() const {
89
648
    if (!T::isKind(*this))
90
559
      return {};
91
89
    T t;
92
89
    TypeLoc& tl = t;
93
89
    tl = *this;
94
89
    return t;
95
89
  }
clang::MemberPointerTypeLoc clang::TypeLoc::getAs<clang::MemberPointerTypeLoc>() const
Line
Count
Source
88
554
  T getAs() const {
89
554
    if (!T::isKind(*this))
90
548
      return {};
91
6
    T t;
92
6
    TypeLoc& tl = t;
93
6
    tl = *this;
94
6
    return t;
95
6
  }
clang::ElaboratedTypeLoc clang::TypeLoc::getAs<clang::ElaboratedTypeLoc>() const
Line
Count
Source
88
6.87M
  T getAs() const {
89
6.87M
    if (!T::isKind(*this))
90
6.87M
      return {};
91
706
    T t;
92
706
    TypeLoc& tl = t;
93
706
    tl = *this;
94
706
    return t;
95
706
  }
clang::FunctionTypeLoc clang::TypeLoc::getAs<clang::FunctionTypeLoc>() const
Line
Count
Source
88
14.3k
  T getAs() const {
89
14.3k
    if (!T::isKind(*this))
90
358
      return {};
91
13.9k
    T t;
92
13.9k
    TypeLoc& tl = t;
93
13.9k
    tl = *this;
94
13.9k
    return t;
95
13.9k
  }
clang::TemplateSpecializationTypeLoc clang::TypeLoc::getAs<clang::TemplateSpecializationTypeLoc>() const
Line
Count
Source
88
74.2k
  T getAs() const {
89
74.2k
    if (!T::isKind(*this))
90
319
      return {};
91
73.9k
    T t;
92
73.9k
    TypeLoc& tl = t;
93
73.9k
    tl = *this;
94
73.9k
    return t;
95
73.9k
  }
clang::ParenTypeLoc clang::TypeLoc::getAs<clang::ParenTypeLoc>() const
Line
Count
Source
88
6.78M
  T getAs() const {
89
6.78M
    if (!T::isKind(*this))
90
6.78M
      return {};
91
258
    T t;
92
258
    TypeLoc& tl = t;
93
258
    tl = *this;
94
258
    return t;
95
258
  }
clang::MacroQualifiedTypeLoc clang::TypeLoc::getAs<clang::MacroQualifiedTypeLoc>() const
Line
Count
Source
88
21.3M
  T getAs() const {
89
21.3M
    if (!T::isKind(*this))
90
21.2M
      return {};
91
124k
    T t;
92
124k
    TypeLoc& tl = t;
93
124k
    tl = *this;
94
124k
    return t;
95
124k
  }
clang::FunctionProtoTypeLoc clang::TypeLoc::getAs<clang::FunctionProtoTypeLoc>() const
Line
Count
Source
88
2.89M
  T getAs() const {
89
2.89M
    if (!T::isKind(*this))
90
1.24k
      return {};
91
2.89M
    T t;
92
2.89M
    TypeLoc& tl = t;
93
2.89M
    tl = *this;
94
2.89M
    return t;
95
2.89M
  }
clang::AtomicTypeLoc clang::TypeLoc::getAs<clang::AtomicTypeLoc>() const
Line
Count
Source
88
14.6M
  T getAs() const {
89
14.6M
    if (!T::isKind(*this))
90
14.6M
      return {};
91
12
    T t;
92
12
    TypeLoc& tl = t;
93
12
    tl = *this;
94
12
    return t;
95
12
  }
clang::AutoTypeLoc clang::TypeLoc::getAs<clang::AutoTypeLoc>() const
Line
Count
Source
88
149
  T getAs() const {
89
149
    if (!T::isKind(*this))
90
0
      return {};
91
149
    T t;
92
149
    TypeLoc& tl = t;
93
149
    tl = *this;
94
149
    return t;
95
149
  }
clang::TypedefTypeLoc clang::TypeLoc::getAs<clang::TypedefTypeLoc>() const
Line
Count
Source
88
1.54k
  T getAs() const {
89
1.54k
    if (!T::isKind(*this))
90
1.51k
      return {};
91
31
    T t;
92
31
    TypeLoc& tl = t;
93
31
    tl = *this;
94
31
    return t;
95
31
  }
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
15
  }
clang::FunctionNoProtoTypeLoc clang::TypeLoc::getAs<clang::FunctionNoProtoTypeLoc>() const
Line
Count
Source
88
164
  T getAs() const {
89
164
    if (!T::isKind(*this))
90
5
      return {};
91
159
    T t;
92
159
    TypeLoc& tl = t;
93
159
    tl = *this;
94
159
    return t;
95
159
  }
clang::DecayedTypeLoc clang::TypeLoc::getAs<clang::DecayedTypeLoc>() const
Line
Count
Source
88
5
  T getAs() const {
89
5
    if (!T::isKind(*this))
90
5
      return {};
91
0
    T t;
92
0
    TypeLoc& tl = t;
93
0
    tl = *this;
94
0
    return t;
95
0
  }
clang::ArrayTypeLoc clang::TypeLoc::getAs<clang::ArrayTypeLoc>() const
Line
Count
Source
88
516
  T getAs() const {
89
516
    if (!T::isKind(*this))
90
507
      return {};
91
9
    T t;
92
9
    TypeLoc& tl = t;
93
9
    tl = *this;
94
9
    return t;
95
9
  }
clang::PackExpansionTypeLoc clang::TypeLoc::getAs<clang::PackExpansionTypeLoc>() const
Line
Count
Source
88
2.00M
  T getAs() const {
89
2.00M
    if (!T::isKind(*this))
90
1.95M
      return {};
91
43.9k
    T t;
92
43.9k
    TypeLoc& tl = t;
93
43.9k
    tl = *this;
94
43.9k
    return t;
95
43.9k
  }
clang::IncompleteArrayTypeLoc clang::TypeLoc::getAs<clang::IncompleteArrayTypeLoc>() const
Line
Count
Source
88
35
  T getAs() const {
89
35
    if (!T::isKind(*this))
90
10
      return {};
91
25
    T t;
92
25
    TypeLoc& tl = t;
93
25
    tl = *this;
94
25
    return t;
95
25
  }
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
1
  }
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
24
  }
clang::DeducedTemplateSpecializationTypeLoc clang::TypeLoc::getAs<clang::DeducedTemplateSpecializationTypeLoc>() const
Line
Count
Source
88
95.8k
  T getAs() const {
89
95.8k
    if (!T::isKind(*this))
90
95.5k
      return {};
91
289
    T t;
92
289
    TypeLoc& tl = t;
93
289
    tl = *this;
94
289
    return t;
95
289
  }
clang::DependentAddressSpaceTypeLoc clang::TypeLoc::getAs<clang::DependentAddressSpaceTypeLoc>() const
Line
Count
Source
88
14.4M
  T getAs() const {
89
14.4M
    if (!T::isKind(*this))
90
14.4M
      return {};
91
1
    T t;
92
1
    TypeLoc& tl = t;
93
1
    tl = *this;
94
1
    return t;
95
1
  }
clang::ObjCObjectPointerTypeLoc clang::TypeLoc::getAs<clang::ObjCObjectPointerTypeLoc>() const
Line
Count
Source
88
184k
  T getAs() const {
89
184k
    if (!T::isKind(*this))
90
165k
      return {};
91
19.5k
    T t;
92
19.5k
    TypeLoc& tl = t;
93
19.5k
    tl = *this;
94
19.5k
    return t;
95
19.5k
  }
clang::ObjCTypeParamTypeLoc clang::TypeLoc::getAs<clang::ObjCTypeParamTypeLoc>() const
Line
Count
Source
88
184k
  T getAs() const {
89
184k
    if (!T::isKind(*this))
90
182k
      return {};
91
2.30k
    T t;
92
2.30k
    TypeLoc& tl = t;
93
2.30k
    tl = *this;
94
2.30k
    return t;
95
2.30k
  }
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
0
  }
clang::DependentTemplateSpecializationTypeLoc clang::TypeLoc::getAs<clang::DependentTemplateSpecializationTypeLoc>() 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
0
  }
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.01G
  TypeLocClass getTypeLocClass() const {
116
1.01G
    if (getType().hasLocalQualifiers()) 
return Qualified30.0M
;
117
981M
    return (TypeLocClass) getType()->getTypeClass();
118
981M
  }
119
120
561M
  bool isNull() const { return !Ty; }
121
210M
  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
3.43G
  QualType getType() const {
133
3.43G
    return QualType::getFromOpaquePtr(Ty);
134
3.43G
  }
135
136
1.13G
  const Type *getTypePtr() const {
137
1.13G
    return QualType::getFromOpaquePtr(Ty).getTypePtr();
138
1.13G
  }
139
140
  /// Get the pointer where source information is stored.
141
19.9M
  void *getOpaqueData() const {
142
19.9M
    return Data;
143
19.9M
  }
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
14.2M
  SourceRange getSourceRange() const LLVM_READONLY {
153
14.2M
    return SourceRange(getBeginLoc(), getEndLoc());
154
14.2M
  }
155
156
157
  /// Get the local source range.
158
208M
  SourceRange getLocalSourceRange() const {
159
208M
    return getLocalSourceRangeImpl(*this);
160
208M
  }
161
162
  /// Returns the size of the type source info data block.
163
14.0M
  unsigned getFullDataSize() const {
164
14.0M
    return getFullDataSizeForType(getType());
165
14.0M
  }
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
283M
  TypeLoc getNextTypeLoc() const {
170
283M
    return getNextTypeLocImpl(*this);
171
283M
  }
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
10.4M
  void initialize(ASTContext &Context, SourceLocation Loc) const {
197
10.4M
    initializeImpl(Context, *this, Loc);
198
10.4M
  }
199
200
  /// Initializes this by copying its information from another
201
  /// TypeLoc of the same type.
202
35.2k
  void initializeFullCopy(TypeLoc Other) {
203
35.2k
    assert(getType() == Other.getType());
204
35.2k
    copy(Other);
205
35.2k
  }
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
683
  void initializeFullCopy(TypeLoc Other, unsigned Size) {
211
683
    assert(getType() == Other.getType());
212
683
    assert(getFullDataSize() == Size);
213
683
    copy(Other);
214
683
  }
215
216
  /// Copies the other type loc into this one.
217
  void copy(TypeLoc other);
218
219
19.5k
  friend bool operator==(const TypeLoc &LHS, const TypeLoc &RHS) {
220
19.5k
    return LHS.Ty == RHS.Ty && 
LHS.Data == RHS.Data7.11k
;
221
19.5k
  }
222
223
1.08k
  friend bool operator!=(const TypeLoc &LHS, const TypeLoc &RHS) {
224
1.08k
    return !(LHS == RHS);
225
1.08k
  }
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.00M
  static bool isKind(const TypeLoc&) {
233
5.00M
    return true;
234
5.00M
  }
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
131M
inline TypeLoc TypeSourceInfo::getTypeLoc() const {
245
131M
  // TODO: is this alignment already sufficient?
246
131M
  return TypeLoc(Ty, const_cast<void*>(static_cast<const void*>(this + 1)));
247
131M
}
248
249
/// Wrapper of type source information for a type with
250
/// no direct qualifiers.
251
class UnqualTypeLoc : public TypeLoc {
252
public:
253
1.15G
  UnqualTypeLoc() = default;
254
11.6M
  UnqualTypeLoc(const Type *Ty, void *Data) : TypeLoc(Ty, Data) {}
255
256
519M
  const Type *getTypePtr() const {
257
519M
    return reinterpret_cast<const Type*>(Ty);
258
519M
  }
259
260
56.4M
  TypeLocClass getTypeLocClass() const {
261
56.4M
    return (TypeLocClass) getTypePtr()->getTypeClass();
262
56.4M
  }
263
264
private:
265
  friend class TypeLoc;
266
267
55.1M
  static bool isKind(const TypeLoc &TL) {
268
55.1M
    return !TL.getType().hasLocalQualifiers();
269
55.1M
  }
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
7.44k
  SourceRange getLocalSourceRange() const { return {}; }
280
281
11.6M
  UnqualTypeLoc getUnqualifiedLoc() const {
282
11.6M
    unsigned align =
283
11.6M
        TypeLoc::getLocalAlignmentForType(QualType(getTypePtr(), 0));
284
11.6M
    auto dataInt = reinterpret_cast<uintptr_t>(Data);
285
11.6M
    dataInt = llvm::alignTo(dataInt, align);
286
11.6M
    return UnqualTypeLoc(getTypePtr(), reinterpret_cast<void*>(dataInt));
287
11.6M
  }
288
289
  /// Initializes the local data of this type source info block to
290
  /// provide no information.
291
105k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
292
105k
    // do nothing
293
105k
  }
294
295
4
  void copyLocal(TypeLoc other) {
296
4
    // do nothing
297
4
  }
298
299
7.46M
  TypeLoc getNextTypeLoc() const {
300
7.46M
    return getUnqualifiedLoc();
301
7.46M
  }
302
303
  /// Returns the size of the type source info data block that is
304
  /// specific to this type.
305
5.03M
  unsigned getLocalDataSize() const {
306
5.03M
    // In fact, we don't currently preserve any location information
307
5.03M
    // for qualifiers.
308
5.03M
    return 0;
309
5.03M
  }
310
311
  /// Returns the alignment of the type source info data block that is
312
  /// specific to this type.
313
13.8M
  unsigned getLocalDataAlignment() const {
314
13.8M
    // We don't preserve any location information.
315
13.8M
    return 1;
316
13.8M
  }
317
318
private:
319
  friend class TypeLoc;
320
321
86.4M
  static bool isKind(const TypeLoc &TL) {
322
86.4M
    return TL.getType().hasLocalQualifiers();
323
86.4M
  }
324
};
325
326
57.9M
inline UnqualTypeLoc TypeLoc::getUnqualifiedLoc() const {
327
57.9M
  if (QualifiedTypeLoc Loc = getAs<QualifiedTypeLoc>())
328
2.76M
    return Loc.getUnqualifiedLoc();
329
55.1M
  return castAs<UnqualTypeLoc>();
330
55.1M
}
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
1.17G
  const Derived *asDerived() const {
365
1.17G
    return static_cast<const Derived*>(this);
366
1.17G
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::asDerived() const
Line
Count
Source
364
82.8M
  const Derived *asDerived() const {
365
82.8M
    return static_cast<const Derived*>(this);
366
82.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::asDerived() const
Line
Count
Source
364
932k
  const Derived *asDerived() const {
365
932k
    return static_cast<const Derived*>(this);
366
932k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::asDerived() const
Line
Count
Source
364
59.7M
  const Derived *asDerived() const {
365
59.7M
    return static_cast<const Derived*>(this);
366
59.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::asDerived() const
Line
Count
Source
364
10.0M
  const Derived *asDerived() const {
365
10.0M
    return static_cast<const Derived*>(this);
366
10.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::asDerived() const
Line
Count
Source
364
4.76M
  const Derived *asDerived() const {
365
4.76M
    return static_cast<const Derived*>(this);
366
4.76M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::asDerived() const
Line
Count
Source
364
6.91M
  const Derived *asDerived() const {
365
6.91M
    return static_cast<const Derived*>(this);
366
6.91M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::asDerived() const
Line
Count
Source
364
46.2k
  const Derived *asDerived() const {
365
46.2k
    return static_cast<const Derived*>(this);
366
46.2k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::asDerived() const
Line
Count
Source
364
183M
  const Derived *asDerived() const {
365
183M
    return static_cast<const Derived*>(this);
366
183M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::asDerived() const
Line
Count
Source
364
7.12M
  const Derived *asDerived() const {
365
7.12M
    return static_cast<const Derived*>(this);
366
7.12M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::asDerived() const
Line
Count
Source
364
162M
  const Derived *asDerived() const {
365
162M
    return static_cast<const Derived*>(this);
366
162M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::asDerived() const
Line
Count
Source
364
1.33k
  const Derived *asDerived() const {
365
1.33k
    return static_cast<const Derived*>(this);
366
1.33k
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::asDerived() const
Line
Count
Source
364
865k
  const Derived *asDerived() const {
365
865k
    return static_cast<const Derived*>(this);
366
865k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::asDerived() const
Line
Count
Source
364
46.9M
  const Derived *asDerived() const {
365
46.9M
    return static_cast<const Derived*>(this);
366
46.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::asDerived() const
Line
Count
Source
364
2.66M
  const Derived *asDerived() const {
365
2.66M
    return static_cast<const Derived*>(this);
366
2.66M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::asDerived() const
Line
Count
Source
364
9.85M
  const Derived *asDerived() const {
365
9.85M
    return static_cast<const Derived*>(this);
366
9.85M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::asDerived() const
Line
Count
Source
364
101k
  const Derived *asDerived() const {
365
101k
    return static_cast<const Derived*>(this);
366
101k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::asDerived() const
Line
Count
Source
364
1.29k
  const Derived *asDerived() const {
365
1.29k
    return static_cast<const Derived*>(this);
366
1.29k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::asDerived() const
Line
Count
Source
364
86.9M
  const Derived *asDerived() const {
365
86.9M
    return static_cast<const Derived*>(this);
366
86.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::asDerived() const
Line
Count
Source
364
72.8M
  const Derived *asDerived() const {
365
72.8M
    return static_cast<const Derived*>(this);
366
72.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::asDerived() const
Line
Count
Source
364
1.32M
  const Derived *asDerived() const {
365
1.32M
    return static_cast<const Derived*>(this);
366
1.32M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::asDerived() const
Line
Count
Source
364
1.29M
  const Derived *asDerived() const {
365
1.29M
    return static_cast<const Derived*>(this);
366
1.29M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::asDerived() const
Line
Count
Source
364
27.9M
  const Derived *asDerived() const {
365
27.9M
    return static_cast<const Derived*>(this);
366
27.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::asDerived() const
Line
Count
Source
364
364M
  const Derived *asDerived() const {
365
364M
    return static_cast<const Derived*>(this);
366
364M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::asDerived() const
Line
Count
Source
364
23.5M
  const Derived *asDerived() const {
365
23.5M
    return static_cast<const Derived*>(this);
366
23.5M
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::asDerived() const
Line
Count
Source
364
15.2M
  const Derived *asDerived() const {
365
15.2M
    return static_cast<const Derived*>(this);
366
15.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::asDerived() const
Line
Count
Source
364
26.5k
  const Derived *asDerived() const {
365
26.5k
    return static_cast<const Derived*>(this);
366
26.5k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::asDerived() const
Line
Count
Source
364
519
  const Derived *asDerived() const {
365
519
    return static_cast<const Derived*>(this);
366
519
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::asDerived() const
Line
Count
Source
364
16.7k
  const Derived *asDerived() const {
365
16.7k
    return static_cast<const Derived*>(this);
366
16.7k
  }
367
368
581M
  static bool isKind(const TypeLoc &TL) {
369
581M
    return !TL.getType().hasLocalQualifiers() &&
370
581M
           
Derived::classofType(TL.getTypePtr())581M
;
371
581M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
13.2M
  static bool isKind(const TypeLoc &TL) {
369
13.2M
    return !TL.getType().hasLocalQualifiers() &&
370
13.2M
           Derived::classofType(TL.getTypePtr());
371
13.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
229M
  static bool isKind(const TypeLoc &TL) {
369
229M
    return !TL.getType().hasLocalQualifiers() &&
370
229M
           
Derived::classofType(TL.getTypePtr())229M
;
371
229M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
54.9M
  static bool isKind(const TypeLoc &TL) {
369
54.9M
    return !TL.getType().hasLocalQualifiers() &&
370
54.9M
           
Derived::classofType(TL.getTypePtr())54.9M
;
371
54.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
33.3M
  static bool isKind(const TypeLoc &TL) {
369
33.3M
    return !TL.getType().hasLocalQualifiers() &&
370
33.3M
           Derived::classofType(TL.getTypePtr());
371
33.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
4.92k
  static bool isKind(const TypeLoc &TL) {
369
4.92k
    return !TL.getType().hasLocalQualifiers() &&
370
4.92k
           Derived::classofType(TL.getTypePtr());
371
4.92k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
21.2M
  static bool isKind(const TypeLoc &TL) {
369
21.2M
    return !TL.getType().hasLocalQualifiers() &&
370
21.2M
           Derived::classofType(TL.getTypePtr());
371
21.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
599k
  static bool isKind(const TypeLoc &TL) {
369
599k
    return !TL.getType().hasLocalQualifiers() &&
370
599k
           Derived::classofType(TL.getTypePtr());
371
599k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
446k
  static bool isKind(const TypeLoc &TL) {
369
446k
    return !TL.getType().hasLocalQualifiers() &&
370
446k
           Derived::classofType(TL.getTypePtr());
371
446k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
24.8M
  static bool isKind(const TypeLoc &TL) {
369
24.8M
    return !TL.getType().hasLocalQualifiers() &&
370
24.8M
           
Derived::classofType(TL.getTypePtr())24.8M
;
371
24.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
7.17M
  static bool isKind(const TypeLoc &TL) {
369
7.17M
    return !TL.getType().hasLocalQualifiers() &&
370
7.17M
           Derived::classofType(TL.getTypePtr());
371
7.17M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
14.7M
  static bool isKind(const TypeLoc &TL) {
369
14.7M
    return !TL.getType().hasLocalQualifiers() &&
370
14.7M
           Derived::classofType(TL.getTypePtr());
371
14.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
75.4M
  static bool isKind(const TypeLoc &TL) {
369
75.4M
    return !TL.getType().hasLocalQualifiers() &&
370
75.4M
           Derived::classofType(TL.getTypePtr());
371
75.4M
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
769k
  static bool isKind(const TypeLoc &TL) {
369
769k
    return !TL.getType().hasLocalQualifiers() &&
370
769k
           Derived::classofType(TL.getTypePtr());
371
769k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
14.4M
  static bool isKind(const TypeLoc &TL) {
369
14.4M
    return !TL.getType().hasLocalQualifiers() &&
370
14.4M
           Derived::classofType(TL.getTypePtr());
371
14.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
25.9M
  static bool isKind(const TypeLoc &TL) {
369
25.9M
    return !TL.getType().hasLocalQualifiers() &&
370
25.9M
           Derived::classofType(TL.getTypePtr());
371
25.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
2.20M
  static bool isKind(const TypeLoc &TL) {
369
2.20M
    return !TL.getType().hasLocalQualifiers() &&
370
2.20M
           Derived::classofType(TL.getTypePtr());
371
2.20M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
22.7M
  static bool isKind(const TypeLoc &TL) {
369
22.7M
    return !TL.getType().hasLocalQualifiers() &&
370
22.7M
           Derived::classofType(TL.getTypePtr());
371
22.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::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::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
4.03M
  static bool isKind(const TypeLoc &TL) {
369
4.03M
    return !TL.getType().hasLocalQualifiers() &&
370
4.03M
           Derived::classofType(TL.getTypePtr());
371
4.03M
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
16.2M
  static bool isKind(const TypeLoc &TL) {
369
16.2M
    return !TL.getType().hasLocalQualifiers() &&
370
16.2M
           Derived::classofType(TL.getTypePtr());
371
16.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
1.10M
  static bool isKind(const TypeLoc &TL) {
369
1.10M
    return !TL.getType().hasLocalQualifiers() &&
370
1.10M
           Derived::classofType(TL.getTypePtr());
371
1.10M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
5.34M
  static bool isKind(const TypeLoc &TL) {
369
5.34M
    return !TL.getType().hasLocalQualifiers() &&
370
5.34M
           
Derived::classofType(TL.getTypePtr())5.33M
;
371
5.34M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
497
  static bool isKind(const TypeLoc &TL) {
369
497
    return !TL.getType().hasLocalQualifiers() &&
370
497
           Derived::classofType(TL.getTypePtr());
371
497
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
34.9k
  static bool isKind(const TypeLoc &TL) {
369
34.9k
    return !TL.getType().hasLocalQualifiers() &&
370
34.9k
           Derived::classofType(TL.getTypePtr());
371
34.9k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
584
  static bool isKind(const TypeLoc &TL) {
369
584
    return !TL.getType().hasLocalQualifiers() &&
370
584
           Derived::classofType(TL.getTypePtr());
371
584
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
16.0k
  static bool isKind(const TypeLoc &TL) {
369
16.0k
    return !TL.getType().hasLocalQualifiers() &&
370
16.0k
           Derived::classofType(TL.getTypePtr());
371
16.0k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
368
327k
  static bool isKind(const TypeLoc &TL) {
369
327k
    return !TL.getType().hasLocalQualifiers() &&
370
327k
           Derived::classofType(TL.getTypePtr());
371
327k
  }
372
373
581M
  static bool classofType(const Type *Ty) {
374
581M
    return TypeClass::classof(Ty);
375
581M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
13.2M
  static bool classofType(const Type *Ty) {
374
13.2M
    return TypeClass::classof(Ty);
375
13.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
229M
  static bool classofType(const Type *Ty) {
374
229M
    return TypeClass::classof(Ty);
375
229M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
54.9M
  static bool classofType(const Type *Ty) {
374
54.9M
    return TypeClass::classof(Ty);
375
54.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
33.3M
  static bool classofType(const Type *Ty) {
374
33.3M
    return TypeClass::classof(Ty);
375
33.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
4.92k
  static bool classofType(const Type *Ty) {
374
4.92k
    return TypeClass::classof(Ty);
375
4.92k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
21.2M
  static bool classofType(const Type *Ty) {
374
21.2M
    return TypeClass::classof(Ty);
375
21.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
599k
  static bool classofType(const Type *Ty) {
374
599k
    return TypeClass::classof(Ty);
375
599k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
446k
  static bool classofType(const Type *Ty) {
374
446k
    return TypeClass::classof(Ty);
375
446k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
24.8M
  static bool classofType(const Type *Ty) {
374
24.8M
    return TypeClass::classof(Ty);
375
24.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
7.17M
  static bool classofType(const Type *Ty) {
374
7.17M
    return TypeClass::classof(Ty);
375
7.17M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
14.7M
  static bool classofType(const Type *Ty) {
374
14.7M
    return TypeClass::classof(Ty);
375
14.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
75.4M
  static bool classofType(const Type *Ty) {
374
75.4M
    return TypeClass::classof(Ty);
375
75.4M
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
769k
  static bool classofType(const Type *Ty) {
374
769k
    return TypeClass::classof(Ty);
375
769k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
14.4M
  static bool classofType(const Type *Ty) {
374
14.4M
    return TypeClass::classof(Ty);
375
14.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
25.9M
  static bool classofType(const Type *Ty) {
374
25.9M
    return TypeClass::classof(Ty);
375
25.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
2.20M
  static bool classofType(const Type *Ty) {
374
2.20M
    return TypeClass::classof(Ty);
375
2.20M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
22.7M
  static bool classofType(const Type *Ty) {
374
22.7M
    return TypeClass::classof(Ty);
375
22.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::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::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
4.03M
  static bool classofType(const Type *Ty) {
374
4.03M
    return TypeClass::classof(Ty);
375
4.03M
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
16.2M
  static bool classofType(const Type *Ty) {
374
16.2M
    return TypeClass::classof(Ty);
375
16.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
1.10M
  static bool classofType(const Type *Ty) {
374
1.10M
    return TypeClass::classof(Ty);
375
1.10M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
5.33M
  static bool classofType(const Type *Ty) {
374
5.33M
    return TypeClass::classof(Ty);
375
5.33M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
497
  static bool classofType(const Type *Ty) {
374
497
    return TypeClass::classof(Ty);
375
497
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
34.9k
  static bool classofType(const Type *Ty) {
374
34.9k
    return TypeClass::classof(Ty);
375
34.9k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
584
  static bool classofType(const Type *Ty) {
374
584
    return TypeClass::classof(Ty);
375
584
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
16.0k
  static bool classofType(const Type *Ty) {
374
16.0k
    return TypeClass::classof(Ty);
375
16.0k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::classofType(clang::Type const*)
Line
Count
Source
373
327k
  static bool classofType(const Type *Ty) {
374
327k
    return TypeClass::classof(Ty);
375
327k
  }
376
377
public:
378
223M
  unsigned getLocalDataAlignment() const {
379
223M
    return std::max(unsigned(alignof(LocalData)),
380
223M
                    asDerived()->getExtraLocalDataAlignment());
381
223M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
7.51k
  unsigned getLocalDataAlignment() const {
379
7.51k
    return std::max(unsigned(alignof(LocalData)),
380
7.51k
                    asDerived()->getExtraLocalDataAlignment());
381
7.51k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
692k
  unsigned getLocalDataAlignment() const {
379
692k
    return std::max(unsigned(alignof(LocalData)),
380
692k
                    asDerived()->getExtraLocalDataAlignment());
381
692k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
7.73k
  unsigned getLocalDataAlignment() const {
379
7.73k
    return std::max(unsigned(alignof(LocalData)),
380
7.73k
                    asDerived()->getExtraLocalDataAlignment());
381
7.73k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
5.54M
  unsigned getLocalDataAlignment() const {
379
5.54M
    return std::max(unsigned(alignof(LocalData)),
380
5.54M
                    asDerived()->getExtraLocalDataAlignment());
381
5.54M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
221k
  unsigned getLocalDataAlignment() const {
379
221k
    return std::max(unsigned(alignof(LocalData)),
380
221k
                    asDerived()->getExtraLocalDataAlignment());
381
221k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
26.0M
  unsigned getLocalDataAlignment() const {
379
26.0M
    return std::max(unsigned(alignof(LocalData)),
380
26.0M
                    asDerived()->getExtraLocalDataAlignment());
381
26.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
108M
  unsigned getLocalDataAlignment() const {
379
108M
    return std::max(unsigned(alignof(LocalData)),
380
108M
                    asDerived()->getExtraLocalDataAlignment());
381
108M
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
270k
  unsigned getLocalDataAlignment() const {
379
270k
    return std::max(unsigned(alignof(LocalData)),
380
270k
                    asDerived()->getExtraLocalDataAlignment());
381
270k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
237
  unsigned getLocalDataAlignment() const {
379
237
    return std::max(unsigned(alignof(LocalData)),
380
237
                    asDerived()->getExtraLocalDataAlignment());
381
237
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
6.39M
  unsigned getLocalDataAlignment() const {
379
6.39M
    return std::max(unsigned(alignof(LocalData)),
380
6.39M
                    asDerived()->getExtraLocalDataAlignment());
381
6.39M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
536k
  unsigned getLocalDataAlignment() const {
379
536k
    return std::max(unsigned(alignof(LocalData)),
380
536k
                    asDerived()->getExtraLocalDataAlignment());
381
536k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
5.91M
  unsigned getLocalDataAlignment() const {
379
5.91M
    return std::max(unsigned(alignof(LocalData)),
380
5.91M
                    asDerived()->getExtraLocalDataAlignment());
381
5.91M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
12.6M
  unsigned getLocalDataAlignment() const {
379
12.6M
    return std::max(unsigned(alignof(LocalData)),
380
12.6M
                    asDerived()->getExtraLocalDataAlignment());
381
12.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
358k
  unsigned getLocalDataAlignment() const {
379
358k
    return std::max(unsigned(alignof(LocalData)),
380
358k
                    asDerived()->getExtraLocalDataAlignment());
381
358k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
61.6k
  unsigned getLocalDataAlignment() const {
379
61.6k
    return std::max(unsigned(alignof(LocalData)),
380
61.6k
                    asDerived()->getExtraLocalDataAlignment());
381
61.6k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
4.96M
  unsigned getLocalDataAlignment() const {
379
4.96M
    return std::max(unsigned(alignof(LocalData)),
380
4.96M
                    asDerived()->getExtraLocalDataAlignment());
381
4.96M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
1.56M
  unsigned getLocalDataAlignment() const {
379
1.56M
    return std::max(unsigned(alignof(LocalData)),
380
1.56M
                    asDerived()->getExtraLocalDataAlignment());
381
1.56M
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
6.75M
  unsigned getLocalDataAlignment() const {
379
6.75M
    return std::max(unsigned(alignof(LocalData)),
380
6.75M
                    asDerived()->getExtraLocalDataAlignment());
381
6.75M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
266k
  unsigned getLocalDataAlignment() const {
379
266k
    return std::max(unsigned(alignof(LocalData)),
380
266k
                    asDerived()->getExtraLocalDataAlignment());
381
266k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
729k
  unsigned getLocalDataAlignment() const {
379
729k
    return std::max(unsigned(alignof(LocalData)),
380
729k
                    asDerived()->getExtraLocalDataAlignment());
381
729k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
1.31M
  unsigned getLocalDataAlignment() const {
379
1.31M
    return std::max(unsigned(alignof(LocalData)),
380
1.31M
                    asDerived()->getExtraLocalDataAlignment());
381
1.31M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
97
  unsigned getLocalDataAlignment() const {
379
97
    return std::max(unsigned(alignof(LocalData)),
380
97
                    asDerived()->getExtraLocalDataAlignment());
381
97
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
8.47M
  unsigned getLocalDataAlignment() const {
379
8.47M
    return std::max(unsigned(alignof(LocalData)),
380
8.47M
                    asDerived()->getExtraLocalDataAlignment());
381
8.47M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
7.65M
  unsigned getLocalDataAlignment() const {
379
7.65M
    return std::max(unsigned(alignof(LocalData)),
380
7.65M
                    asDerived()->getExtraLocalDataAlignment());
381
7.65M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
24.9M
  unsigned getLocalDataAlignment() const {
379
24.9M
    return std::max(unsigned(alignof(LocalData)),
380
24.9M
                    asDerived()->getExtraLocalDataAlignment());
381
24.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
11.5k
  unsigned getLocalDataAlignment() const {
379
11.5k
    return std::max(unsigned(alignof(LocalData)),
380
11.5k
                    asDerived()->getExtraLocalDataAlignment());
381
11.5k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
121
  unsigned getLocalDataAlignment() const {
379
121
    return std::max(unsigned(alignof(LocalData)),
380
121
                    asDerived()->getExtraLocalDataAlignment());
381
121
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
378
3.96k
  unsigned getLocalDataAlignment() const {
379
3.96k
    return std::max(unsigned(alignof(LocalData)),
380
3.96k
                    asDerived()->getExtraLocalDataAlignment());
381
3.96k
  }
382
383
221M
  unsigned getLocalDataSize() const {
384
221M
    unsigned size = sizeof(LocalData);
385
221M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
221M
    size = llvm::alignTo(size, extraAlign);
387
221M
    size += asDerived()->getExtraLocalDataSize();
388
221M
    return size;
389
221M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getLocalDataSize() const
Line
Count
Source
383
13.2M
  unsigned getLocalDataSize() const {
384
13.2M
    unsigned size = sizeof(LocalData);
385
13.2M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
13.2M
    size = llvm::alignTo(size, extraAlign);
387
13.2M
    size += asDerived()->getExtraLocalDataSize();
388
13.2M
    return size;
389
13.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
2.21M
  unsigned getLocalDataSize() const {
384
2.21M
    unsigned size = sizeof(LocalData);
385
2.21M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
2.21M
    size = llvm::alignTo(size, extraAlign);
387
2.21M
    size += asDerived()->getExtraLocalDataSize();
388
2.21M
    return size;
389
2.21M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getLocalDataSize() const
Line
Count
Source
383
1.09M
  unsigned getLocalDataSize() const {
384
1.09M
    unsigned size = sizeof(LocalData);
385
1.09M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
1.09M
    size = llvm::alignTo(size, extraAlign);
387
1.09M
    size += asDerived()->getExtraLocalDataSize();
388
1.09M
    return size;
389
1.09M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getLocalDataSize() const
Line
Count
Source
383
1.34M
  unsigned getLocalDataSize() const {
384
1.34M
    unsigned size = sizeof(LocalData);
385
1.34M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
1.34M
    size = llvm::alignTo(size, extraAlign);
387
1.34M
    size += asDerived()->getExtraLocalDataSize();
388
1.34M
    return size;
389
1.34M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getLocalDataSize() const
Line
Count
Source
383
36.1M
  unsigned getLocalDataSize() const {
384
36.1M
    unsigned size = sizeof(LocalData);
385
36.1M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
36.1M
    size = llvm::alignTo(size, extraAlign);
387
36.1M
    size += asDerived()->getExtraLocalDataSize();
388
36.1M
    return size;
389
36.1M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getLocalDataSize() const
Line
Count
Source
383
1.57M
  unsigned getLocalDataSize() const {
384
1.57M
    unsigned size = sizeof(LocalData);
385
1.57M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
1.57M
    size = llvm::alignTo(size, extraAlign);
387
1.57M
    size += asDerived()->getExtraLocalDataSize();
388
1.57M
    return size;
389
1.57M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getLocalDataSize() const
Line
Count
Source
383
266
  unsigned getLocalDataSize() const {
384
266
    unsigned size = sizeof(LocalData);
385
266
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
266
    size = llvm::alignTo(size, extraAlign);
387
266
    size += asDerived()->getExtraLocalDataSize();
388
266
    return size;
389
266
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getLocalDataSize() const
Line
Count
Source
383
10.9M
  unsigned getLocalDataSize() const {
384
10.9M
    unsigned size = sizeof(LocalData);
385
10.9M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
10.9M
    size = llvm::alignTo(size, extraAlign);
387
10.9M
    size += asDerived()->getExtraLocalDataSize();
388
10.9M
    return size;
389
10.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
2.26M
  unsigned getLocalDataSize() const {
384
2.26M
    unsigned size = sizeof(LocalData);
385
2.26M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
2.26M
    size = llvm::alignTo(size, extraAlign);
387
2.26M
    size += asDerived()->getExtraLocalDataSize();
388
2.26M
    return size;
389
2.26M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
23.0k
  unsigned getLocalDataSize() const {
384
23.0k
    unsigned size = sizeof(LocalData);
385
23.0k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
23.0k
    size = llvm::alignTo(size, extraAlign);
387
23.0k
    size += asDerived()->getExtraLocalDataSize();
388
23.0k
    return size;
389
23.0k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
295
  unsigned getLocalDataSize() const {
384
295
    unsigned size = sizeof(LocalData);
385
295
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
295
    size = llvm::alignTo(size, extraAlign);
387
295
    size += asDerived()->getExtraLocalDataSize();
388
295
    return size;
389
295
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
19.2M
  unsigned getLocalDataSize() const {
384
19.2M
    unsigned size = sizeof(LocalData);
385
19.2M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
19.2M
    size = llvm::alignTo(size, extraAlign);
387
19.2M
    size += asDerived()->getExtraLocalDataSize();
388
19.2M
    return size;
389
19.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::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::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
262k
  unsigned getLocalDataSize() const {
384
262k
    unsigned size = sizeof(LocalData);
385
262k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
262k
    size = llvm::alignTo(size, extraAlign);
387
262k
    size += asDerived()->getExtraLocalDataSize();
388
262k
    return size;
389
262k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getLocalDataSize() const
Line
Count
Source
383
279k
  unsigned getLocalDataSize() const {
384
279k
    unsigned size = sizeof(LocalData);
385
279k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
279k
    size = llvm::alignTo(size, extraAlign);
387
279k
    size += asDerived()->getExtraLocalDataSize();
388
279k
    return size;
389
279k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
5.56M
  unsigned getLocalDataSize() const {
384
5.56M
    unsigned size = sizeof(LocalData);
385
5.56M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
5.56M
    size = llvm::alignTo(size, extraAlign);
387
5.56M
    size += asDerived()->getExtraLocalDataSize();
388
5.56M
    return size;
389
5.56M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getLocalDataSize() const
Line
Count
Source
383
11.8M
  unsigned getLocalDataSize() const {
384
11.8M
    unsigned size = sizeof(LocalData);
385
11.8M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
11.8M
    size = llvm::alignTo(size, extraAlign);
387
11.8M
    size += asDerived()->getExtraLocalDataSize();
388
11.8M
    return size;
389
11.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getLocalDataSize() const
Line
Count
Source
383
68.5M
  unsigned getLocalDataSize() const {
384
68.5M
    unsigned size = sizeof(LocalData);
385
68.5M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
68.5M
    size = llvm::alignTo(size, extraAlign);
387
68.5M
    size += asDerived()->getExtraLocalDataSize();
388
68.5M
    return size;
389
68.5M
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
179k
  unsigned getLocalDataSize() const {
384
179k
    unsigned size = sizeof(LocalData);
385
179k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
179k
    size = llvm::alignTo(size, extraAlign);
387
179k
    size += asDerived()->getExtraLocalDataSize();
388
179k
    return size;
389
179k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getLocalDataSize() const
Line
Count
Source
383
4.94M
  unsigned getLocalDataSize() const {
384
4.94M
    unsigned size = sizeof(LocalData);
385
4.94M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
4.94M
    size = llvm::alignTo(size, extraAlign);
387
4.94M
    size += asDerived()->getExtraLocalDataSize();
388
4.94M
    return size;
389
4.94M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getLocalDataSize() const
Line
Count
Source
383
515k
  unsigned getLocalDataSize() const {
384
515k
    unsigned size = sizeof(LocalData);
385
515k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
515k
    size = llvm::alignTo(size, extraAlign);
387
515k
    size += asDerived()->getExtraLocalDataSize();
388
515k
    return size;
389
515k
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getLocalDataSize() const
Line
Count
Source
383
2.38M
  unsigned getLocalDataSize() const {
384
2.38M
    unsigned size = sizeof(LocalData);
385
2.38M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
2.38M
    size = llvm::alignTo(size, extraAlign);
387
2.38M
    size += asDerived()->getExtraLocalDataSize();
388
2.38M
    return size;
389
2.38M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
155k
  unsigned getLocalDataSize() const {
384
155k
    unsigned size = sizeof(LocalData);
385
155k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
155k
    size = llvm::alignTo(size, extraAlign);
387
155k
    size += asDerived()->getExtraLocalDataSize();
388
155k
    return size;
389
155k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getLocalDataSize() const
Line
Count
Source
383
22.3M
  unsigned getLocalDataSize() const {
384
22.3M
    unsigned size = sizeof(LocalData);
385
22.3M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
22.3M
    size = llvm::alignTo(size, extraAlign);
387
22.3M
    size += asDerived()->getExtraLocalDataSize();
388
22.3M
    return size;
389
22.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
3.98k
  unsigned getLocalDataSize() const {
384
3.98k
    unsigned size = sizeof(LocalData);
385
3.98k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
3.98k
    size = llvm::alignTo(size, extraAlign);
387
3.98k
    size += asDerived()->getExtraLocalDataSize();
388
3.98k
    return size;
389
3.98k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
113
  unsigned getLocalDataSize() const {
384
113
    unsigned size = sizeof(LocalData);
385
113
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
113
    size = llvm::alignTo(size, extraAlign);
387
113
    size += asDerived()->getExtraLocalDataSize();
388
113
    return size;
389
113
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
383
3.95k
  unsigned getLocalDataSize() const {
384
3.95k
    unsigned size = sizeof(LocalData);
385
3.95k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
386
3.95k
    size = llvm::alignTo(size, extraAlign);
387
3.95k
    size += asDerived()->getExtraLocalDataSize();
388
3.95k
    return size;
389
3.95k
  }
390
391
2.24k
  void copyLocal(Derived other) {
392
2.24k
    // Some subclasses have no data to copy.
393
2.24k
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
394
2.24k
395
2.24k
    // Copy the fixed-sized local data.
396
2.24k
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
397
2.24k
398
2.24k
    // Copy the variable-sized local data. We need to do this
399
2.24k
    // separately because the padding in the source and the padding in
400
2.24k
    // the destination might be different.
401
2.24k
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
402
2.24k
           asDerived()->getExtraLocalDataSize());
403
2.24k
  }
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
1
    // Some subclasses have no data to copy.
393
1
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
394
1
395
1
    // Copy the fixed-sized local data.
396
1
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
397
1
398
1
    // Copy the variable-sized local data. We need to do this
399
1
    // separately because the padding in the source and the padding in
400
1
    // 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
729
  void copyLocal(Derived other) {
392
729
    // Some subclasses have no data to copy.
393
729
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
394
729
395
729
    // Copy the fixed-sized local data.
396
729
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
397
729
398
729
    // Copy the variable-sized local data. We need to do this
399
729
    // separately because the padding in the source and the padding in
400
729
    // the destination might be different.
401
729
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
402
729
           asDerived()->getExtraLocalDataSize());
403
729
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::copyLocal(clang::TypeSpecTypeLoc)
Line
Count
Source
391
1.44k
  void copyLocal(Derived other) {
392
1.44k
    // Some subclasses have no data to copy.
393
1.44k
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
394
1.44k
395
1.44k
    // Copy the fixed-sized local data.
396
1.44k
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
397
1.44k
398
1.44k
    // Copy the variable-sized local data. We need to do this
399
1.44k
    // separately because the padding in the source and the padding in
400
1.44k
    // 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::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::copyLocal(clang::DependentTemplateSpecializationTypeLoc)
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
3
    // Some subclasses have no data to copy.
393
3
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
394
3
395
3
    // Copy the fixed-sized local data.
396
3
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
397
3
398
3
    // Copy the variable-sized local data. We need to do this
399
3
    // separately because the padding in the source and the padding in
400
3
    // 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::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
18
    // Some subclasses have no data to copy.
393
18
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
394
18
395
18
    // Copy the fixed-sized local data.
396
18
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
397
18
398
18
    // Copy the variable-sized local data. We need to do this
399
18
    // separately because the padding in the source and the padding in
400
18
    // 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
18
    // Some subclasses have no data to copy.
393
18
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
394
18
395
18
    // Copy the fixed-sized local data.
396
18
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
397
18
398
18
    // Copy the variable-sized local data. We need to do this
399
18
    // separately because the padding in the source and the padding in
400
18
    // 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
3
    // Some subclasses have no data to copy.
393
3
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
394
3
395
3
    // Copy the fixed-sized local data.
396
3
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
397
3
398
3
    // Copy the variable-sized local data. We need to do this
399
3
    // separately because the padding in the source and the padding in
400
3
    // 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
26
  void copyLocal(Derived other) {
392
26
    // Some subclasses have no data to copy.
393
26
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
394
26
395
26
    // Copy the fixed-sized local data.
396
26
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
397
26
398
26
    // Copy the variable-sized local data. We need to do this
399
26
    // separately because the padding in the source and the padding in
400
26
    // the destination might be different.
401
26
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
402
26
           asDerived()->getExtraLocalDataSize());
403
26
  }
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
1
    // Some subclasses have no data to copy.
393
1
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
394
1
395
1
    // Copy the fixed-sized local data.
396
1
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
397
1
398
1
    // Copy the variable-sized local data. We need to do this
399
1
    // separately because the padding in the source and the padding in
400
1
    // 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)
404
405
290M
  TypeLoc getNextTypeLoc() const {
406
290M
    return getNextTypeLoc(asDerived()->getInnerType());
407
290M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
10.7k
  TypeLoc getNextTypeLoc() const {
406
10.7k
    return getNextTypeLoc(asDerived()->getInnerType());
407
10.7k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
1.04M
  TypeLoc getNextTypeLoc() const {
406
1.04M
    return getNextTypeLoc(asDerived()->getInnerType());
407
1.04M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
11.4k
  TypeLoc getNextTypeLoc() const {
406
11.4k
    return getNextTypeLoc(asDerived()->getInnerType());
407
11.4k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
7.04M
  TypeLoc getNextTypeLoc() const {
406
7.04M
    return getNextTypeLoc(asDerived()->getInnerType());
407
7.04M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
188k
  TypeLoc getNextTypeLoc() const {
406
188k
    return getNextTypeLoc(asDerived()->getInnerType());
407
188k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
18.5M
  TypeLoc getNextTypeLoc() const {
406
18.5M
    return getNextTypeLoc(asDerived()->getInnerType());
407
18.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
119M
  TypeLoc getNextTypeLoc() const {
406
119M
    return getNextTypeLoc(asDerived()->getInnerType());
407
119M
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
219k
  TypeLoc getNextTypeLoc() const {
406
219k
    return getNextTypeLoc(asDerived()->getInnerType());
407
219k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
186
  TypeLoc getNextTypeLoc() const {
406
186
    return getNextTypeLoc(asDerived()->getInnerType());
407
186
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
7.29M
  TypeLoc getNextTypeLoc() const {
406
7.29M
    return getNextTypeLoc(asDerived()->getInnerType());
407
7.29M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
750k
  TypeLoc getNextTypeLoc() const {
406
750k
    return getNextTypeLoc(asDerived()->getInnerType());
407
750k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
6.21M
  TypeLoc getNextTypeLoc() const {
406
6.21M
    return getNextTypeLoc(asDerived()->getInnerType());
407
6.21M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
22.9M
  TypeLoc getNextTypeLoc() const {
406
22.9M
    return getNextTypeLoc(asDerived()->getInnerType());
407
22.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
485k
  TypeLoc getNextTypeLoc() const {
406
485k
    return getNextTypeLoc(asDerived()->getInnerType());
407
485k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
220k
  TypeLoc getNextTypeLoc() const {
406
220k
    return getNextTypeLoc(asDerived()->getInnerType());
407
220k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
3.87M
  TypeLoc getNextTypeLoc() const {
406
3.87M
    return getNextTypeLoc(asDerived()->getInnerType());
407
3.87M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
1.07M
  TypeLoc getNextTypeLoc() const {
406
1.07M
    return getNextTypeLoc(asDerived()->getInnerType());
407
1.07M
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
3.71M
  TypeLoc getNextTypeLoc() const {
406
3.71M
    return getNextTypeLoc(asDerived()->getInnerType());
407
3.71M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
338k
  TypeLoc getNextTypeLoc() const {
406
338k
    return getNextTypeLoc(asDerived()->getInnerType());
407
338k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
1.21M
  TypeLoc getNextTypeLoc() const {
406
1.21M
    return getNextTypeLoc(asDerived()->getInnerType());
407
1.21M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
909k
  TypeLoc getNextTypeLoc() const {
406
909k
    return getNextTypeLoc(asDerived()->getInnerType());
407
909k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
200
  TypeLoc getNextTypeLoc() const {
406
200
    return getNextTypeLoc(asDerived()->getInnerType());
407
200
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
12.2M
  TypeLoc getNextTypeLoc() const {
406
12.2M
    return getNextTypeLoc(asDerived()->getInnerType());
407
12.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
9.53M
  TypeLoc getNextTypeLoc() const {
406
9.53M
    return getNextTypeLoc(asDerived()->getInnerType());
407
9.53M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
73.7M
  TypeLoc getNextTypeLoc() const {
406
73.7M
    return getNextTypeLoc(asDerived()->getInnerType());
407
73.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
6.96k
  TypeLoc getNextTypeLoc() const {
406
6.96k
    return getNextTypeLoc(asDerived()->getInnerType());
407
6.96k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
172
  TypeLoc getNextTypeLoc() const {
406
172
    return getNextTypeLoc(asDerived()->getInnerType());
407
172
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
405
4.89k
  TypeLoc getNextTypeLoc() const {
406
4.89k
    return getNextTypeLoc(asDerived()->getInnerType());
407
4.89k
  }
408
409
463M
  const TypeClass *getTypePtr() const {
410
463M
    return cast<TypeClass>(Base::getTypePtr());
411
463M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getTypePtr() const
Line
Count
Source
409
85.4M
  const TypeClass *getTypePtr() const {
410
85.4M
    return cast<TypeClass>(Base::getTypePtr());
411
85.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getTypePtr() const
Line
Count
Source
409
9.43M
  const TypeClass *getTypePtr() const {
410
9.43M
    return cast<TypeClass>(Base::getTypePtr());
411
9.43M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getTypePtr() const
Line
Count
Source
409
390k
  const TypeClass *getTypePtr() const {
410
390k
    return cast<TypeClass>(Base::getTypePtr());
411
390k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getTypePtr() const
Line
Count
Source
409
22.5M
  const TypeClass *getTypePtr() const {
410
22.5M
    return cast<TypeClass>(Base::getTypePtr());
411
22.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getTypePtr() const
Line
Count
Source
409
7.95M
  const TypeClass *getTypePtr() const {
410
7.95M
    return cast<TypeClass>(Base::getTypePtr());
411
7.95M
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getTypePtr() const
Line
Count
Source
409
44.4k
  const TypeClass *getTypePtr() const {
410
44.4k
    return cast<TypeClass>(Base::getTypePtr());
411
44.4k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getTypePtr() const
Line
Count
Source
409
1.84M
  const TypeClass *getTypePtr() const {
410
1.84M
    return cast<TypeClass>(Base::getTypePtr());
411
1.84M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getTypePtr() const
Line
Count
Source
409
1.98M
  const TypeClass *getTypePtr() const {
410
1.98M
    return cast<TypeClass>(Base::getTypePtr());
411
1.98M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getTypePtr() const
Line
Count
Source
409
25.8k
  const TypeClass *getTypePtr() const {
410
25.8k
    return cast<TypeClass>(Base::getTypePtr());
411
25.8k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getTypePtr() const
Line
Count
Source
409
482k
  const TypeClass *getTypePtr() const {
410
482k
    return cast<TypeClass>(Base::getTypePtr());
411
482k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getTypePtr() const
Line
Count
Source
409
22.6M
  const TypeClass *getTypePtr() const {
410
22.6M
    return cast<TypeClass>(Base::getTypePtr());
411
22.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getTypePtr() const
Line
Count
Source
409
203M
  const TypeClass *getTypePtr() const {
410
203M
    return cast<TypeClass>(Base::getTypePtr());
411
203M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getTypePtr() const
Line
Count
Source
409
2.24M
  const TypeClass *getTypePtr() const {
410
2.24M
    return cast<TypeClass>(Base::getTypePtr());
411
2.24M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getTypePtr() const
Line
Count
Source
409
43.7M
  const TypeClass *getTypePtr() const {
410
43.7M
    return cast<TypeClass>(Base::getTypePtr());
411
43.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getTypePtr() const
Line
Count
Source
409
448
  const TypeClass *getTypePtr() const {
410
448
    return cast<TypeClass>(Base::getTypePtr());
411
448
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getTypePtr() const
Line
Count
Source
409
3.63k
  const TypeClass *getTypePtr() const {
410
3.63k
    return cast<TypeClass>(Base::getTypePtr());
411
3.63k
  }
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
344k
  const TypeClass *getTypePtr() const {
410
344k
    return cast<TypeClass>(Base::getTypePtr());
411
344k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getTypePtr() const
Line
Count
Source
409
16.3M
  const TypeClass *getTypePtr() const {
410
16.3M
    return cast<TypeClass>(Base::getTypePtr());
411
16.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getTypePtr() const
Line
Count
Source
409
4.17M
  const TypeClass *getTypePtr() const {
410
4.17M
    return cast<TypeClass>(Base::getTypePtr());
411
4.17M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getTypePtr() const
Line
Count
Source
409
1.78M
  const TypeClass *getTypePtr() const {
410
1.78M
    return cast<TypeClass>(Base::getTypePtr());
411
1.78M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getTypePtr() const
Line
Count
Source
409
3.32M
  const TypeClass *getTypePtr() const {
410
3.32M
    return cast<TypeClass>(Base::getTypePtr());
411
3.32M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getTypePtr() const
Line
Count
Source
409
33.0k
  const TypeClass *getTypePtr() const {
410
33.0k
    return cast<TypeClass>(Base::getTypePtr());
411
33.0k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getTypePtr() const
Line
Count
Source
409
404
  const TypeClass *getTypePtr() const {
410
404
    return cast<TypeClass>(Base::getTypePtr());
411
404
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getTypePtr() const
Line
Count
Source
409
27.0M
  const TypeClass *getTypePtr() const {
410
27.0M
    return cast<TypeClass>(Base::getTypePtr());
411
27.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getTypePtr() const
Line
Count
Source
409
383k
  const TypeClass *getTypePtr() const {
410
383k
    return cast<TypeClass>(Base::getTypePtr());
411
383k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getTypePtr() const
Line
Count
Source
409
7.92M
  const TypeClass *getTypePtr() const {
410
7.92M
    return cast<TypeClass>(Base::getTypePtr());
411
7.92M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getTypePtr() const
Line
Count
Source
409
865
  const TypeClass *getTypePtr() const {
410
865
    return cast<TypeClass>(Base::getTypePtr());
411
865
  }
412
413
protected:
414
148M
  unsigned getExtraLocalDataSize() const {
415
148M
    return 0;
416
148M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
13.2M
  unsigned getExtraLocalDataSize() const {
415
13.2M
    return 0;
416
13.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
1.09M
  unsigned getExtraLocalDataSize() const {
415
1.09M
    return 0;
416
1.09M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
1.34M
  unsigned getExtraLocalDataSize() const {
415
1.34M
    return 0;
416
1.34M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
1.57M
  unsigned getExtraLocalDataSize() const {
415
1.57M
    return 0;
416
1.57M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
266
  unsigned getExtraLocalDataSize() const {
415
266
    return 0;
416
266
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
10.9M
  unsigned getExtraLocalDataSize() const {
415
10.9M
    return 0;
416
10.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
2.26M
  unsigned getExtraLocalDataSize() const {
415
2.26M
    return 0;
416
2.26M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
23.0k
  unsigned getExtraLocalDataSize() const {
415
23.0k
    return 0;
416
23.0k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
295
  unsigned getExtraLocalDataSize() const {
415
295
    return 0;
416
295
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
19.2M
  unsigned getExtraLocalDataSize() const {
415
19.2M
    return 0;
416
19.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
16.4M
  unsigned getExtraLocalDataSize() const {
415
16.4M
    return 0;
416
16.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
262k
  unsigned getExtraLocalDataSize() const {
415
262k
    return 0;
416
262k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
279k
  unsigned getExtraLocalDataSize() const {
415
279k
    return 0;
416
279k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
5.56M
  unsigned getExtraLocalDataSize() const {
415
5.56M
    return 0;
416
5.56M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
68.5M
  unsigned getExtraLocalDataSize() const {
415
68.5M
    return 0;
416
68.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
4.94M
  unsigned getExtraLocalDataSize() const {
415
4.94M
    return 0;
416
4.94M
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
2.38M
  unsigned getExtraLocalDataSize() const {
415
2.38M
    return 0;
416
2.38M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
3.98k
  unsigned getExtraLocalDataSize() const {
415
3.98k
    return 0;
416
3.98k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
113
  unsigned getExtraLocalDataSize() const {
415
113
    return 0;
416
113
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
414
3.95k
  unsigned getExtraLocalDataSize() const {
415
3.95k
    return 0;
416
3.95k
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getExtraLocalDataSize() const
417
418
305M
  unsigned getExtraLocalDataAlignment() const {
419
305M
    return 1;
420
305M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
18.7M
  unsigned getExtraLocalDataAlignment() const {
419
18.7M
    return 1;
420
18.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
1.45M
  unsigned getExtraLocalDataAlignment() const {
419
1.45M
    return 1;
420
1.45M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
2.66M
  unsigned getExtraLocalDataAlignment() const {
419
2.66M
    return 1;
420
2.66M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
2.27M
  unsigned getExtraLocalDataAlignment() const {
419
2.27M
    return 1;
420
2.27M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
503
  unsigned getExtraLocalDataAlignment() const {
419
503
    return 1;
420
503
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
16.8M
  unsigned getExtraLocalDataAlignment() const {
419
16.8M
    return 1;
420
16.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
2.99M
  unsigned getExtraLocalDataAlignment() const {
419
2.99M
    return 1;
420
2.99M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
30.7k
  unsigned getExtraLocalDataAlignment() const {
419
30.7k
    return 1;
420
30.7k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
392
  unsigned getExtraLocalDataAlignment() const {
419
392
    return 1;
420
392
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
27.6M
  unsigned getExtraLocalDataAlignment() const {
419
27.6M
    return 1;
420
27.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
24.1M
  unsigned getExtraLocalDataAlignment() const {
419
24.1M
    return 1;
420
24.1M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
484k
  unsigned getExtraLocalDataAlignment() const {
419
484k
    return 1;
420
484k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
341k
  unsigned getExtraLocalDataAlignment() const {
419
341k
    return 1;
420
341k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
10.5M
  unsigned getExtraLocalDataAlignment() const {
419
10.5M
    return 1;
420
10.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
7.51k
  unsigned getExtraLocalDataAlignment() const {
419
7.51k
    return 1;
420
7.51k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
177M
  unsigned getExtraLocalDataAlignment() const {
419
177M
    return 1;
420
177M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
11.3M
  unsigned getExtraLocalDataAlignment() const {
419
11.3M
    return 1;
420
11.3M
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
9.14M
  unsigned getExtraLocalDataAlignment() const {
419
9.14M
    return 1;
420
9.14M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
15.5k
  unsigned getExtraLocalDataAlignment() const {
419
15.5k
    return 1;
420
15.5k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
234
  unsigned getExtraLocalDataAlignment() const {
419
234
    return 1;
420
234
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
418
7.91k
  unsigned getExtraLocalDataAlignment() const {
419
7.91k
    return 1;
420
7.91k
  }
421
422
726M
  LocalData *getLocalData() const {
423
726M
    return static_cast<LocalData*>(Base::Data);
424
726M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getLocalData() const
Line
Count
Source
422
226M
  LocalData *getLocalData() const {
423
226M
    return static_cast<LocalData*>(Base::Data);
424
226M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getLocalData() const
Line
Count
Source
422
21.6M
  LocalData *getLocalData() const {
423
21.6M
    return static_cast<LocalData*>(Base::Data);
424
21.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getLocalData() const
Line
Count
Source
422
210k
  LocalData *getLocalData() const {
423
210k
    return static_cast<LocalData*>(Base::Data);
424
210k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getLocalData() const
Line
Count
Source
422
6.10M
  LocalData *getLocalData() const {
423
6.10M
    return static_cast<LocalData*>(Base::Data);
424
6.10M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getLocalData() const
Line
Count
Source
422
1.40M
  LocalData *getLocalData() const {
423
1.40M
    return static_cast<LocalData*>(Base::Data);
424
1.40M
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getLocalData() const
Line
Count
Source
422
7.40M
  LocalData *getLocalData() const {
423
7.40M
    return static_cast<LocalData*>(Base::Data);
424
7.40M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getLocalData() const
Line
Count
Source
422
367k
  LocalData *getLocalData() const {
423
367k
    return static_cast<LocalData*>(Base::Data);
424
367k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getLocalData() const
Line
Count
Source
422
1.01M
  LocalData *getLocalData() const {
423
1.01M
    return static_cast<LocalData*>(Base::Data);
424
1.01M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getLocalData() const
Line
Count
Source
422
8.79M
  LocalData *getLocalData() const {
423
8.79M
    return static_cast<LocalData*>(Base::Data);
424
8.79M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getLocalData() const
Line
Count
Source
422
156k
  LocalData *getLocalData() const {
423
156k
    return static_cast<LocalData*>(Base::Data);
424
156k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getLocalData() const
Line
Count
Source
422
256k
  LocalData *getLocalData() const {
423
256k
    return static_cast<LocalData*>(Base::Data);
424
256k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getLocalData() const
Line
Count
Source
422
2.95M
  LocalData *getLocalData() const {
423
2.95M
    return static_cast<LocalData*>(Base::Data);
424
2.95M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getLocalData() const
Line
Count
Source
422
8.22M
  LocalData *getLocalData() const {
423
8.22M
    return static_cast<LocalData*>(Base::Data);
424
8.22M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getLocalData() const
Line
Count
Source
422
42.2M
  LocalData *getLocalData() const {
423
42.2M
    return static_cast<LocalData*>(Base::Data);
424
42.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getLocalData() const
Line
Count
Source
422
1.64M
  LocalData *getLocalData() const {
423
1.64M
    return static_cast<LocalData*>(Base::Data);
424
1.64M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getLocalData() const
Line
Count
Source
422
362M
  LocalData *getLocalData() const {
423
362M
    return static_cast<LocalData*>(Base::Data);
424
362M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getLocalData() const
Line
Count
Source
422
280
  LocalData *getLocalData() const {
423
280
    return static_cast<LocalData*>(Base::Data);
424
280
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getLocalData() const
Line
Count
Source
422
616
  LocalData *getLocalData() const {
423
616
    return static_cast<LocalData*>(Base::Data);
424
616
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getLocalData() const
Line
Count
Source
422
14.5k
  LocalData *getLocalData() const {
423
14.5k
    return static_cast<LocalData*>(Base::Data);
424
14.5k
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getLocalData() const
Line
Count
Source
422
144k
  LocalData *getLocalData() const {
423
144k
    return static_cast<LocalData*>(Base::Data);
424
144k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getLocalData() const
Line
Count
Source
422
6.79M
  LocalData *getLocalData() const {
423
6.79M
    return static_cast<LocalData*>(Base::Data);
424
6.79M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getLocalData() const
Line
Count
Source
422
22.6M
  LocalData *getLocalData() const {
423
22.6M
    return static_cast<LocalData*>(Base::Data);
424
22.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getLocalData() const
Line
Count
Source
422
3.46M
  LocalData *getLocalData() const {
423
3.46M
    return static_cast<LocalData*>(Base::Data);
424
3.46M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getLocalData() const
Line
Count
Source
422
1.18M
  LocalData *getLocalData() const {
423
1.18M
    return static_cast<LocalData*>(Base::Data);
424
1.18M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getLocalData() const
Line
Count
Source
422
23.7k
  LocalData *getLocalData() const {
423
23.7k
    return static_cast<LocalData*>(Base::Data);
424
23.7k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getLocalData() const
Line
Count
Source
422
107
  LocalData *getLocalData() const {
423
107
    return static_cast<LocalData*>(Base::Data);
424
107
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getLocalData() const
Line
Count
Source
422
29.0k
  LocalData *getLocalData() const {
423
29.0k
    return static_cast<LocalData*>(Base::Data);
424
29.0k
  }
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
59.5M
  void *getExtraLocalData() const {
430
59.5M
    unsigned size = sizeof(LocalData);
431
59.5M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
59.5M
    size = llvm::alignTo(size, extraAlign);
433
59.5M
    return reinterpret_cast<char*>(Base::Data) + size;
434
59.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getExtraLocalData() const
Line
Count
Source
429
14.5M
  void *getExtraLocalData() const {
430
14.5M
    unsigned size = sizeof(LocalData);
431
14.5M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
14.5M
    size = llvm::alignTo(size, extraAlign);
433
14.5M
    return reinterpret_cast<char*>(Base::Data) + size;
434
14.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getExtraLocalData() const
Line
Count
Source
429
17.0k
  void *getExtraLocalData() const {
430
17.0k
    unsigned size = sizeof(LocalData);
431
17.0k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
17.0k
    size = llvm::alignTo(size, extraAlign);
433
17.0k
    return reinterpret_cast<char*>(Base::Data) + size;
434
17.0k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getExtraLocalData() const
Line
Count
Source
429
240k
  void *getExtraLocalData() const {
430
240k
    unsigned size = sizeof(LocalData);
431
240k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
240k
    size = llvm::alignTo(size, extraAlign);
433
240k
    return reinterpret_cast<char*>(Base::Data) + size;
434
240k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getExtraLocalData() const
Line
Count
Source
429
24.9M
  void *getExtraLocalData() const {
430
24.9M
    unsigned size = sizeof(LocalData);
431
24.9M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
24.9M
    size = llvm::alignTo(size, extraAlign);
433
24.9M
    return reinterpret_cast<char*>(Base::Data) + size;
434
24.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getExtraLocalData() const
Line
Count
Source
429
19.3M
  void *getExtraLocalData() const {
430
19.3M
    unsigned size = sizeof(LocalData);
431
19.3M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
19.3M
    size = llvm::alignTo(size, extraAlign);
433
19.3M
    return reinterpret_cast<char*>(Base::Data) + size;
434
19.3M
  }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getExtraLocalData() const
Line
Count
Source
429
16.6k
  void *getExtraLocalData() const {
430
16.6k
    unsigned size = sizeof(LocalData);
431
16.6k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
16.6k
    size = llvm::alignTo(size, extraAlign);
433
16.6k
    return reinterpret_cast<char*>(Base::Data) + size;
434
16.6k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getExtraLocalData() const
Line
Count
Source
429
346k
  void *getExtraLocalData() const {
430
346k
    unsigned size = sizeof(LocalData);
431
346k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
346k
    size = llvm::alignTo(size, extraAlign);
433
346k
    return reinterpret_cast<char*>(Base::Data) + size;
434
346k
  }
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.89k
  void *getExtraLocalData() const {
430
2.89k
    unsigned size = sizeof(LocalData);
431
2.89k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
2.89k
    size = llvm::alignTo(size, extraAlign);
433
2.89k
    return reinterpret_cast<char*>(Base::Data) + size;
434
2.89k
  }
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::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::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
52
  void *getExtraLocalData() const {
430
52
    unsigned size = sizeof(LocalData);
431
52
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
432
52
    size = llvm::alignTo(size, extraAlign);
433
52
    return reinterpret_cast<char*>(Base::Data) + size;
434
52
  }
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
435
436
74.3M
  void *getNonLocalData() const {
437
74.3M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
74.3M
    data += asDerived()->getLocalDataSize();
439
74.3M
    data = llvm::alignTo(data, getNextTypeAlign());
440
74.3M
    return reinterpret_cast<void*>(data);
441
74.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNonLocalData() const
Line
Count
Source
436
9.23M
  void *getNonLocalData() const {
437
9.23M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
9.23M
    data += asDerived()->getLocalDataSize();
439
9.23M
    data = llvm::alignTo(data, getNextTypeAlign());
440
9.23M
    return reinterpret_cast<void*>(data);
441
9.23M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNonLocalData() const
Line
Count
Source
436
1.26M
  void *getNonLocalData() const {
437
1.26M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
1.26M
    data += asDerived()->getLocalDataSize();
439
1.26M
    data = llvm::alignTo(data, getNextTypeAlign());
440
1.26M
    return reinterpret_cast<void*>(data);
441
1.26M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getNonLocalData() const
Line
Count
Source
436
739k
  void *getNonLocalData() const {
437
739k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
739k
    data += asDerived()->getLocalDataSize();
439
739k
    data = llvm::alignTo(data, getNextTypeAlign());
440
739k
    return reinterpret_cast<void*>(data);
441
739k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNonLocalData() const
Line
Count
Source
436
967k
  void *getNonLocalData() const {
437
967k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
967k
    data += asDerived()->getLocalDataSize();
439
967k
    data = llvm::alignTo(data, getNextTypeAlign());
440
967k
    return reinterpret_cast<void*>(data);
441
967k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNonLocalData() const
Line
Count
Source
436
12.9k
  void *getNonLocalData() const {
437
12.9k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
12.9k
    data += asDerived()->getLocalDataSize();
439
12.9k
    data = llvm::alignTo(data, getNextTypeAlign());
440
12.9k
    return reinterpret_cast<void*>(data);
441
12.9k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNonLocalData() const
Line
Count
Source
436
24.6M
  void *getNonLocalData() const {
437
24.6M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
24.6M
    data += asDerived()->getLocalDataSize();
439
24.6M
    data = llvm::alignTo(data, getNextTypeAlign());
440
24.6M
    return reinterpret_cast<void*>(data);
441
24.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNonLocalData() const
Line
Count
Source
436
1.09M
  void *getNonLocalData() const {
437
1.09M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
1.09M
    data += asDerived()->getLocalDataSize();
439
1.09M
    data = llvm::alignTo(data, getNextTypeAlign());
440
1.09M
    return reinterpret_cast<void*>(data);
441
1.09M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNonLocalData() const
Line
Count
Source
436
187
  void *getNonLocalData() const {
437
187
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
187
    data += asDerived()->getLocalDataSize();
439
187
    data = llvm::alignTo(data, getNextTypeAlign());
440
187
    return reinterpret_cast<void*>(data);
441
187
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNonLocalData() const
Line
Count
Source
436
6.37M
  void *getNonLocalData() const {
437
6.37M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
6.37M
    data += asDerived()->getLocalDataSize();
439
6.37M
    data = llvm::alignTo(data, getNextTypeAlign());
440
6.37M
    return reinterpret_cast<void*>(data);
441
6.37M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNonLocalData() const
Line
Count
Source
436
1.53M
  void *getNonLocalData() const {
437
1.53M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
1.53M
    data += asDerived()->getLocalDataSize();
439
1.53M
    data = llvm::alignTo(data, getNextTypeAlign());
440
1.53M
    return reinterpret_cast<void*>(data);
441
1.53M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNonLocalData() const
Line
Count
Source
436
16.0k
  void *getNonLocalData() const {
437
16.0k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
16.0k
    data += asDerived()->getLocalDataSize();
439
16.0k
    data = llvm::alignTo(data, getNextTypeAlign());
440
16.0k
    return reinterpret_cast<void*>(data);
441
16.0k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNonLocalData() const
Line
Count
Source
436
202
  void *getNonLocalData() const {
437
202
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
202
    data += asDerived()->getLocalDataSize();
439
202
    data = llvm::alignTo(data, getNextTypeAlign());
440
202
    return reinterpret_cast<void*>(data);
441
202
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNonLocalData() const
Line
Count
Source
436
13.3M
  void *getNonLocalData() const {
437
13.3M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
13.3M
    data += asDerived()->getLocalDataSize();
439
13.3M
    data = llvm::alignTo(data, getNextTypeAlign());
440
13.3M
    return reinterpret_cast<void*>(data);
441
13.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNonLocalData() const
Line
Count
Source
436
10.7M
  void *getNonLocalData() const {
437
10.7M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
10.7M
    data += asDerived()->getLocalDataSize();
439
10.7M
    data = llvm::alignTo(data, getNextTypeAlign());
440
10.7M
    return reinterpret_cast<void*>(data);
441
10.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNonLocalData() const
Line
Count
Source
436
190k
  void *getNonLocalData() const {
437
190k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
190k
    data += asDerived()->getLocalDataSize();
439
190k
    data = llvm::alignTo(data, getNextTypeAlign());
440
190k
    return reinterpret_cast<void*>(data);
441
190k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNonLocalData() const
Line
Count
Source
436
223k
  void *getNonLocalData() const {
437
223k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
223k
    data += asDerived()->getLocalDataSize();
439
223k
    data = llvm::alignTo(data, getNextTypeAlign());
440
223k
    return reinterpret_cast<void*>(data);
441
223k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNonLocalData() const
Line
Count
Source
436
3.94M
  void *getNonLocalData() const {
437
3.94M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
438
3.94M
    data += asDerived()->getLocalDataSize();
439
3.94M
    data = llvm::alignTo(data, getNextTypeAlign());
440
3.94M
    return reinterpret_cast<void*>(data);
441
3.94M
  }
442
443
  struct HasNoInnerType {};
444
223M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getInnerType() const
Line
Count
Source
444
18.5M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getInnerType() const
Line
Count
Source
444
119M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getInnerType() const
Line
Count
Source
444
219k
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getInnerType() const
Line
Count
Source
444
7.29M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getInnerType() const
Line
Count
Source
444
750k
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getInnerType() const
Line
Count
Source
444
3.71M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getInnerType() const
Line
Count
Source
444
338k
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getInnerType() const
Line
Count
Source
444
73.7M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getInnerType() const
Line
Count
Source
444
6.96k
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getInnerType() const
Line
Count
Source
444
172
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getInnerType() const
Line
Count
Source
444
4.89k
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
445
446
7.26M
  TypeLoc getInnerTypeLoc() const {
447
7.26M
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
7.26M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
2.19M
  TypeLoc getInnerTypeLoc() const {
447
2.19M
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
2.19M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
188k
  TypeLoc getInnerTypeLoc() const {
447
188k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
188k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
254k
  TypeLoc getInnerTypeLoc() const {
447
254k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
254k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
57.9k
  TypeLoc getInnerTypeLoc() const {
447
57.9k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
57.9k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
2.12k
  TypeLoc getInnerTypeLoc() const {
447
2.12k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
2.12k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
1.66M
  TypeLoc getInnerTypeLoc() const {
447
1.66M
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
1.66M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
52.1k
  TypeLoc getInnerTypeLoc() const {
447
52.1k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
52.1k
  }
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::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
161k
  TypeLoc getInnerTypeLoc() const {
447
161k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
161k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
317k
  TypeLoc getInnerTypeLoc() const {
447
317k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
317k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
4.53k
  TypeLoc getInnerTypeLoc() const {
447
4.53k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
4.53k
  }
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::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
1.08M
  TypeLoc getInnerTypeLoc() const {
447
1.08M
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
1.08M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
1.21M
  TypeLoc getInnerTypeLoc() const {
447
1.21M
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
1.21M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
2.44k
  TypeLoc getInnerTypeLoc() const {
447
2.44k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
2.44k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
2.65k
  TypeLoc getInnerTypeLoc() const {
447
2.65k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
2.65k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
446
65.4k
  TypeLoc getInnerTypeLoc() const {
447
65.4k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
448
65.4k
  }
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
74.3M
  unsigned getNextTypeAlign() const {
464
74.3M
    return getNextTypeAlign(asDerived()->getInnerType());
465
74.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
9.23M
  unsigned getNextTypeAlign() const {
464
9.23M
    return getNextTypeAlign(asDerived()->getInnerType());
465
9.23M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
1.26M
  unsigned getNextTypeAlign() const {
464
1.26M
    return getNextTypeAlign(asDerived()->getInnerType());
465
1.26M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
739k
  unsigned getNextTypeAlign() const {
464
739k
    return getNextTypeAlign(asDerived()->getInnerType());
465
739k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
967k
  unsigned getNextTypeAlign() const {
464
967k
    return getNextTypeAlign(asDerived()->getInnerType());
465
967k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
12.9k
  unsigned getNextTypeAlign() const {
464
12.9k
    return getNextTypeAlign(asDerived()->getInnerType());
465
12.9k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
24.6M
  unsigned getNextTypeAlign() const {
464
24.6M
    return getNextTypeAlign(asDerived()->getInnerType());
465
24.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
1.09M
  unsigned getNextTypeAlign() const {
464
1.09M
    return getNextTypeAlign(asDerived()->getInnerType());
465
1.09M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
187
  unsigned getNextTypeAlign() const {
464
187
    return getNextTypeAlign(asDerived()->getInnerType());
465
187
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
6.37M
  unsigned getNextTypeAlign() const {
464
6.37M
    return getNextTypeAlign(asDerived()->getInnerType());
465
6.37M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
1.53M
  unsigned getNextTypeAlign() const {
464
1.53M
    return getNextTypeAlign(asDerived()->getInnerType());
465
1.53M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
16.0k
  unsigned getNextTypeAlign() const {
464
16.0k
    return getNextTypeAlign(asDerived()->getInnerType());
465
16.0k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
202
  unsigned getNextTypeAlign() const {
464
202
    return getNextTypeAlign(asDerived()->getInnerType());
465
202
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
13.3M
  unsigned getNextTypeAlign() const {
464
13.3M
    return getNextTypeAlign(asDerived()->getInnerType());
465
13.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
10.7M
  unsigned getNextTypeAlign() const {
464
10.7M
    return getNextTypeAlign(asDerived()->getInnerType());
465
10.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
190k
  unsigned getNextTypeAlign() const {
464
190k
    return getNextTypeAlign(asDerived()->getInnerType());
465
190k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
223k
  unsigned getNextTypeAlign() const {
464
223k
    return getNextTypeAlign(asDerived()->getInnerType());
465
223k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNextTypeAlign() const
Line
Count
Source
463
3.94M
  unsigned getNextTypeAlign() const {
464
3.94M
    return getNextTypeAlign(asDerived()->getInnerType());
465
3.94M
  }
466
467
  unsigned getNextTypeAlign(HasNoInnerType _) const {
468
    return 1;
469
  }
470
471
74.3M
  unsigned getNextTypeAlign(QualType T) const {
472
74.3M
    return TypeLoc::getLocalAlignmentForType(T);
473
74.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
9.23M
  unsigned getNextTypeAlign(QualType T) const {
472
9.23M
    return TypeLoc::getLocalAlignmentForType(T);
473
9.23M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
1.26M
  unsigned getNextTypeAlign(QualType T) const {
472
1.26M
    return TypeLoc::getLocalAlignmentForType(T);
473
1.26M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
739k
  unsigned getNextTypeAlign(QualType T) const {
472
739k
    return TypeLoc::getLocalAlignmentForType(T);
473
739k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
967k
  unsigned getNextTypeAlign(QualType T) const {
472
967k
    return TypeLoc::getLocalAlignmentForType(T);
473
967k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
12.9k
  unsigned getNextTypeAlign(QualType T) const {
472
12.9k
    return TypeLoc::getLocalAlignmentForType(T);
473
12.9k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
24.6M
  unsigned getNextTypeAlign(QualType T) const {
472
24.6M
    return TypeLoc::getLocalAlignmentForType(T);
473
24.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
1.09M
  unsigned getNextTypeAlign(QualType T) const {
472
1.09M
    return TypeLoc::getLocalAlignmentForType(T);
473
1.09M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
187
  unsigned getNextTypeAlign(QualType T) const {
472
187
    return TypeLoc::getLocalAlignmentForType(T);
473
187
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
6.37M
  unsigned getNextTypeAlign(QualType T) const {
472
6.37M
    return TypeLoc::getLocalAlignmentForType(T);
473
6.37M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
1.53M
  unsigned getNextTypeAlign(QualType T) const {
472
1.53M
    return TypeLoc::getLocalAlignmentForType(T);
473
1.53M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
16.0k
  unsigned getNextTypeAlign(QualType T) const {
472
16.0k
    return TypeLoc::getLocalAlignmentForType(T);
473
16.0k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
202
  unsigned getNextTypeAlign(QualType T) const {
472
202
    return TypeLoc::getLocalAlignmentForType(T);
473
202
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
13.3M
  unsigned getNextTypeAlign(QualType T) const {
472
13.3M
    return TypeLoc::getLocalAlignmentForType(T);
473
13.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
10.7M
  unsigned getNextTypeAlign(QualType T) const {
472
10.7M
    return TypeLoc::getLocalAlignmentForType(T);
473
10.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
190k
  unsigned getNextTypeAlign(QualType T) const {
472
190k
    return TypeLoc::getLocalAlignmentForType(T);
473
190k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
223k
  unsigned getNextTypeAlign(QualType T) const {
472
223k
    return TypeLoc::getLocalAlignmentForType(T);
473
223k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
471
3.94M
  unsigned getNextTypeAlign(QualType T) const {
472
3.94M
    return TypeLoc::getLocalAlignmentForType(T);
473
3.94M
  }
474
475
223M
  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
18.5M
  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
119M
  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
219k
  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.29M
  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
750k
  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
3.71M
  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
338k
  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
73.7M
  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
6.96k
  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
172
  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
4.89k
  TypeLoc getNextTypeLoc(HasNoInnerType _) const { return {}; }
476
477
67.0M
  TypeLoc getNextTypeLoc(QualType T) const {
478
67.0M
    return TypeLoc(T, getNonLocalData());
479
67.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
10.7k
  TypeLoc getNextTypeLoc(QualType T) const {
478
10.7k
    return TypeLoc(T, getNonLocalData());
479
10.7k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
1.04M
  TypeLoc getNextTypeLoc(QualType T) const {
478
1.04M
    return TypeLoc(T, getNonLocalData());
479
1.04M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
11.4k
  TypeLoc getNextTypeLoc(QualType T) const {
478
11.4k
    return TypeLoc(T, getNonLocalData());
479
11.4k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
7.04M
  TypeLoc getNextTypeLoc(QualType T) const {
478
7.04M
    return TypeLoc(T, getNonLocalData());
479
7.04M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
188k
  TypeLoc getNextTypeLoc(QualType T) const {
478
188k
    return TypeLoc(T, getNonLocalData());
479
188k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
186
  TypeLoc getNextTypeLoc(QualType T) const {
478
186
    return TypeLoc(T, getNonLocalData());
479
186
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
6.21M
  TypeLoc getNextTypeLoc(QualType T) const {
478
6.21M
    return TypeLoc(T, getNonLocalData());
479
6.21M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
22.9M
  TypeLoc getNextTypeLoc(QualType T) const {
478
22.9M
    return TypeLoc(T, getNonLocalData());
479
22.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
485k
  TypeLoc getNextTypeLoc(QualType T) const {
478
485k
    return TypeLoc(T, getNonLocalData());
479
485k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
220k
  TypeLoc getNextTypeLoc(QualType T) const {
478
220k
    return TypeLoc(T, getNonLocalData());
479
220k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
3.87M
  TypeLoc getNextTypeLoc(QualType T) const {
478
3.87M
    return TypeLoc(T, getNonLocalData());
479
3.87M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
1.07M
  TypeLoc getNextTypeLoc(QualType T) const {
478
1.07M
    return TypeLoc(T, getNonLocalData());
479
1.07M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
1.21M
  TypeLoc getNextTypeLoc(QualType T) const {
478
1.21M
    return TypeLoc(T, getNonLocalData());
479
1.21M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
909k
  TypeLoc getNextTypeLoc(QualType T) const {
478
909k
    return TypeLoc(T, getNonLocalData());
479
909k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
200
  TypeLoc getNextTypeLoc(QualType T) const {
478
200
    return TypeLoc(T, getNonLocalData());
479
200
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
12.2M
  TypeLoc getNextTypeLoc(QualType T) const {
478
12.2M
    return TypeLoc(T, getNonLocalData());
479
12.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
477
9.53M
  TypeLoc getNextTypeLoc(QualType T) const {
478
9.53M
    return TypeLoc(T, getNonLocalData());
479
9.53M
  }
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
522M
  static bool classofType(const Type *Ty) {
490
522M
    return TypeClass::classof(Ty);
491
522M
  }
clang::InheritingConcreteTypeLoc<clang::AdjustedTypeLoc, clang::DecayedTypeLoc, clang::DecayedType>::classofType(clang::Type const*)
Line
Count
Source
489
27.5k
  static bool classofType(const Type *Ty) {
490
27.5k
    return TypeClass::classof(Ty);
491
27.5k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::ConstantArrayTypeLoc, clang::ConstantArrayType>::classofType(clang::Type const*)
Line
Count
Source
489
1.87M
  static bool classofType(const Type *Ty) {
490
1.87M
    return TypeClass::classof(Ty);
491
1.87M
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::DependentSizedArrayTypeLoc, clang::DependentSizedArrayType>::classofType(clang::Type const*)
Line
Count
Source
489
184k
  static bool classofType(const Type *Ty) {
490
184k
    return TypeClass::classof(Ty);
491
184k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::IncompleteArrayTypeLoc, clang::IncompleteArrayType>::classofType(clang::Type const*)
Line
Count
Source
489
492k
  static bool classofType(const Type *Ty) {
490
492k
    return TypeClass::classof(Ty);
491
492k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::VariableArrayTypeLoc, clang::VariableArrayType>::classofType(clang::Type const*)
Line
Count
Source
489
91.4k
  static bool classofType(const Type *Ty) {
490
91.4k
    return TypeClass::classof(Ty);
491
91.4k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::ComplexTypeLoc, clang::ComplexType>::classofType(clang::Type const*)
Line
Count
Source
489
88.7k
  static bool classofType(const Type *Ty) {
490
88.7k
    return TypeClass::classof(Ty);
491
88.7k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType>::classofType(clang::Type const*)
Line
Count
Source
489
2.75M
  static bool classofType(const Type *Ty) {
490
2.75M
    return TypeClass::classof(Ty);
491
2.75M
  }
clang::InheritingConcreteTypeLoc<clang::DeducedTypeLoc, clang::DeducedTemplateSpecializationTypeLoc, clang::DeducedTemplateSpecializationType>::classofType(clang::Type const*)
Line
Count
Source
489
114k
  static bool classofType(const Type *Ty) {
490
114k
    return TypeClass::classof(Ty);
491
114k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType>::classofType(clang::Type const*)
Line
Count
Source
489
336
  static bool classofType(const Type *Ty) {
490
336
    return TypeClass::classof(Ty);
491
336
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType>::classofType(clang::Type const*)
Line
Count
Source
489
555
  static bool classofType(const Type *Ty) {
490
555
    return TypeClass::classof(Ty);
491
555
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionNoProtoTypeLoc, clang::FunctionNoProtoType>::classofType(clang::Type const*)
Line
Count
Source
489
137k
  static bool classofType(const Type *Ty) {
490
137k
    return TypeClass::classof(Ty);
491
137k
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionProtoTypeLoc, clang::FunctionProtoType>::classofType(clang::Type const*)
Line
Count
Source
489
63.9M
  static bool classofType(const Type *Ty) {
490
63.9M
    return TypeClass::classof(Ty);
491
63.9M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::InjectedClassNameTypeLoc, clang::InjectedClassNameType>::classofType(clang::Type const*)
Line
Count
Source
489
8.42M
  static bool classofType(const Type *Ty) {
490
8.42M
    return TypeClass::classof(Ty);
491
8.42M
  }
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::LValueReferenceTypeLoc, clang::LValueReferenceType>::classofType(clang::Type const*)
Line
Count
Source
489
20.8M
  static bool classofType(const Type *Ty) {
490
20.8M
    return TypeClass::classof(Ty);
491
20.8M
  }
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::RValueReferenceTypeLoc, clang::RValueReferenceType>::classofType(clang::Type const*)
Line
Count
Source
489
6.60M
  static bool classofType(const Type *Ty) {
490
6.60M
    return TypeClass::classof(Ty);
491
6.60M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmPackTypeLoc, clang::SubstTemplateTypeParmPackType>::classofType(clang::Type const*)
Line
Count
Source
489
545k
  static bool classofType(const Type *Ty) {
490
545k
    return TypeClass::classof(Ty);
491
545k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmTypeLoc, clang::SubstTemplateTypeParmType>::classofType(clang::Type const*)
Line
Count
Source
489
63.0M
  static bool classofType(const Type *Ty) {
490
63.0M
    return TypeClass::classof(Ty);
491
63.0M
  }
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::EnumTypeLoc, clang::EnumType>::classofType(clang::Type const*)
Line
Count
Source
489
1.67M
  static bool classofType(const Type *Ty) {
490
1.67M
    return TypeClass::classof(Ty);
491
1.67M
  }
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::RecordTypeLoc, clang::RecordType>::classofType(clang::Type const*)
Line
Count
Source
489
35.3M
  static bool classofType(const Type *Ty) {
490
35.3M
    return TypeClass::classof(Ty);
491
35.3M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TemplateTypeParmTypeLoc, clang::TemplateTypeParmType>::classofType(clang::Type const*)
Line
Count
Source
489
117M
  static bool classofType(const Type *Ty) {
490
117M
    return TypeClass::classof(Ty);
491
117M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TypedefTypeLoc, clang::TypedefType>::classofType(clang::Type const*)
Line
Count
Source
489
193M
  static bool classofType(const Type *Ty) {
490
193M
    return TypeClass::classof(Ty);
491
193M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::UnresolvedUsingTypeLoc, clang::UnresolvedUsingType>::classofType(clang::Type const*)
Line
Count
Source
489
9.52k
  static bool classofType(const Type *Ty) {
490
9.52k
    return TypeClass::classof(Ty);
491
9.52k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::VectorTypeLoc, clang::VectorType>::classofType(clang::Type const*)
Line
Count
Source
489
3.50M
  static bool classofType(const Type *Ty) {
490
3.50M
    return TypeClass::classof(Ty);
491
3.50M
  }
clang::InheritingConcreteTypeLoc<clang::VectorTypeLoc, clang::ExtVectorTypeLoc, clang::ExtVectorType>::classofType(clang::Type const*)
Line
Count
Source
489
13.6k
  static bool classofType(const Type *Ty) {
490
13.6k
    return TypeClass::classof(Ty);
491
13.6k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DeducedTypeLoc, clang::DeducedType>::classofType(clang::Type const*)
Line
Count
Source
489
548
  static bool classofType(const Type *Ty) {
490
548
    return TypeClass::classof(Ty);
491
548
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TagTypeLoc, clang::TagType>::classofType(clang::Type const*)
Line
Count
Source
489
1.44M
  static bool classofType(const Type *Ty) {
490
1.44M
    return TypeClass::classof(Ty);
491
1.44M
  }
492
493
522M
  static bool isKind(const TypeLoc &TL) {
494
522M
    return !TL.getType().hasLocalQualifiers() &&
495
522M
           
Derived::classofType(TL.getTypePtr())522M
;
496
522M
  }
clang::InheritingConcreteTypeLoc<clang::AdjustedTypeLoc, clang::DecayedTypeLoc, clang::DecayedType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
27.5k
  static bool isKind(const TypeLoc &TL) {
494
27.5k
    return !TL.getType().hasLocalQualifiers() &&
495
27.5k
           Derived::classofType(TL.getTypePtr());
496
27.5k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::ConstantArrayTypeLoc, clang::ConstantArrayType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
1.87M
  static bool isKind(const TypeLoc &TL) {
494
1.87M
    return !TL.getType().hasLocalQualifiers() &&
495
1.87M
           Derived::classofType(TL.getTypePtr());
496
1.87M
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::DependentSizedArrayTypeLoc, clang::DependentSizedArrayType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
184k
  static bool isKind(const TypeLoc &TL) {
494
184k
    return !TL.getType().hasLocalQualifiers() &&
495
184k
           Derived::classofType(TL.getTypePtr());
496
184k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::IncompleteArrayTypeLoc, clang::IncompleteArrayType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
492k
  static bool isKind(const TypeLoc &TL) {
494
492k
    return !TL.getType().hasLocalQualifiers() &&
495
492k
           
Derived::classofType(TL.getTypePtr())492k
;
496
492k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::VariableArrayTypeLoc, clang::VariableArrayType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
91.4k
  static bool isKind(const TypeLoc &TL) {
494
91.4k
    return !TL.getType().hasLocalQualifiers() &&
495
91.4k
           Derived::classofType(TL.getTypePtr());
496
91.4k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::ComplexTypeLoc, clang::ComplexType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
88.7k
  static bool isKind(const TypeLoc &TL) {
494
88.7k
    return !TL.getType().hasLocalQualifiers() &&
495
88.7k
           Derived::classofType(TL.getTypePtr());
496
88.7k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
2.75M
  static bool isKind(const TypeLoc &TL) {
494
2.75M
    return !TL.getType().hasLocalQualifiers() &&
495
2.75M
           Derived::classofType(TL.getTypePtr());
496
2.75M
  }
clang::InheritingConcreteTypeLoc<clang::DeducedTypeLoc, clang::DeducedTemplateSpecializationTypeLoc, clang::DeducedTemplateSpecializationType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
115k
  static bool isKind(const TypeLoc &TL) {
494
115k
    return !TL.getType().hasLocalQualifiers() &&
495
115k
           
Derived::classofType(TL.getTypePtr())114k
;
496
115k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
336
  static bool isKind(const TypeLoc &TL) {
494
336
    return !TL.getType().hasLocalQualifiers() &&
495
336
           Derived::classofType(TL.getTypePtr());
496
336
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
555
  static bool isKind(const TypeLoc &TL) {
494
555
    return !TL.getType().hasLocalQualifiers() &&
495
555
           Derived::classofType(TL.getTypePtr());
496
555
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionNoProtoTypeLoc, clang::FunctionNoProtoType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
137k
  static bool isKind(const TypeLoc &TL) {
494
137k
    return !TL.getType().hasLocalQualifiers() &&
495
137k
           Derived::classofType(TL.getTypePtr());
496
137k
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionProtoTypeLoc, clang::FunctionProtoType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
63.9M
  static bool isKind(const TypeLoc &TL) {
494
63.9M
    return !TL.getType().hasLocalQualifiers() &&
495
63.9M
           Derived::classofType(TL.getTypePtr());
496
63.9M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::InjectedClassNameTypeLoc, clang::InjectedClassNameType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
8.42M
  static bool isKind(const TypeLoc &TL) {
494
8.42M
    return !TL.getType().hasLocalQualifiers() &&
495
8.42M
           Derived::classofType(TL.getTypePtr());
496
8.42M
  }
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::LValueReferenceTypeLoc, clang::LValueReferenceType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
20.8M
  static bool isKind(const TypeLoc &TL) {
494
20.8M
    return !TL.getType().hasLocalQualifiers() &&
495
20.8M
           Derived::classofType(TL.getTypePtr());
496
20.8M
  }
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::RValueReferenceTypeLoc, clang::RValueReferenceType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
6.60M
  static bool isKind(const TypeLoc &TL) {
494
6.60M
    return !TL.getType().hasLocalQualifiers() &&
495
6.60M
           Derived::classofType(TL.getTypePtr());
496
6.60M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmPackTypeLoc, clang::SubstTemplateTypeParmPackType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
545k
  static bool isKind(const TypeLoc &TL) {
494
545k
    return !TL.getType().hasLocalQualifiers() &&
495
545k
           Derived::classofType(TL.getTypePtr());
496
545k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmTypeLoc, clang::SubstTemplateTypeParmType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
63.0M
  static bool isKind(const TypeLoc &TL) {
494
63.0M
    return !TL.getType().hasLocalQualifiers() &&
495
63.0M
           Derived::classofType(TL.getTypePtr());
496
63.0M
  }
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::EnumTypeLoc, clang::EnumType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
1.67M
  static bool isKind(const TypeLoc &TL) {
494
1.67M
    return !TL.getType().hasLocalQualifiers() &&
495
1.67M
           Derived::classofType(TL.getTypePtr());
496
1.67M
  }
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::RecordTypeLoc, clang::RecordType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
35.3M
  static bool isKind(const TypeLoc &TL) {
494
35.3M
    return !TL.getType().hasLocalQualifiers() &&
495
35.3M
           Derived::classofType(TL.getTypePtr());
496
35.3M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TemplateTypeParmTypeLoc, clang::TemplateTypeParmType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
117M
  static bool isKind(const TypeLoc &TL) {
494
117M
    return !TL.getType().hasLocalQualifiers() &&
495
117M
           Derived::classofType(TL.getTypePtr());
496
117M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TypedefTypeLoc, clang::TypedefType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
193M
  static bool isKind(const TypeLoc &TL) {
494
193M
    return !TL.getType().hasLocalQualifiers() &&
495
193M
           Derived::classofType(TL.getTypePtr());
496
193M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::UnresolvedUsingTypeLoc, clang::UnresolvedUsingType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
9.52k
  static bool isKind(const TypeLoc &TL) {
494
9.52k
    return !TL.getType().hasLocalQualifiers() &&
495
9.52k
           Derived::classofType(TL.getTypePtr());
496
9.52k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::VectorTypeLoc, clang::VectorType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
3.50M
  static bool isKind(const TypeLoc &TL) {
494
3.50M
    return !TL.getType().hasLocalQualifiers() &&
495
3.50M
           Derived::classofType(TL.getTypePtr());
496
3.50M
  }
clang::InheritingConcreteTypeLoc<clang::VectorTypeLoc, clang::ExtVectorTypeLoc, clang::ExtVectorType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
13.6k
  static bool isKind(const TypeLoc &TL) {
494
13.6k
    return !TL.getType().hasLocalQualifiers() &&
495
13.6k
           Derived::classofType(TL.getTypePtr());
496
13.6k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DeducedTypeLoc, clang::DeducedType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
548
  static bool isKind(const TypeLoc &TL) {
494
548
    return !TL.getType().hasLocalQualifiers() &&
495
548
           Derived::classofType(TL.getTypePtr());
496
548
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TagTypeLoc, clang::TagType>::isKind(clang::TypeLoc const&)
Line
Count
Source
493
1.44M
  static bool isKind(const TypeLoc &TL) {
494
1.44M
    return !TL.getType().hasLocalQualifiers() &&
495
1.44M
           Derived::classofType(TL.getTypePtr());
496
1.44M
  }
497
  static bool isKind(const UnqualTypeLoc &TL) {
498
    return Derived::classofType(TL.getTypePtr());
499
  }
500
501
public:
502
17.0M
  const TypeClass *getTypePtr() const {
503
17.0M
    return cast<TypeClass>(Base::getTypePtr());
504
17.0M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TypedefTypeLoc, clang::TypedefType>::getTypePtr() const
Line
Count
Source
502
2.38M
  const TypeClass *getTypePtr() const {
503
2.38M
    return cast<TypeClass>(Base::getTypePtr());
504
2.38M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::InjectedClassNameTypeLoc, clang::InjectedClassNameType>::getTypePtr() const
Line
Count
Source
502
544k
  const TypeClass *getTypePtr() const {
503
544k
    return cast<TypeClass>(Base::getTypePtr());
504
544k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::UnresolvedUsingTypeLoc, clang::UnresolvedUsingType>::getTypePtr() const
Line
Count
Source
502
506
  const TypeClass *getTypePtr() const {
503
506
    return cast<TypeClass>(Base::getTypePtr());
504
506
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TagTypeLoc, clang::TagType>::getTypePtr() const
Line
Count
Source
502
268k
  const TypeClass *getTypePtr() const {
503
268k
    return cast<TypeClass>(Base::getTypePtr());
504
268k
  }
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::RecordTypeLoc, clang::RecordType>::getTypePtr() const
Line
Count
Source
502
247k
  const TypeClass *getTypePtr() const {
503
247k
    return cast<TypeClass>(Base::getTypePtr());
504
247k
  }
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::EnumTypeLoc, clang::EnumType>::getTypePtr() const
Line
Count
Source
502
19.2k
  const TypeClass *getTypePtr() const {
503
19.2k
    return cast<TypeClass>(Base::getTypePtr());
504
19.2k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TemplateTypeParmTypeLoc, clang::TemplateTypeParmType>::getTypePtr() const
Line
Count
Source
502
5.70M
  const TypeClass *getTypePtr() const {
503
5.70M
    return cast<TypeClass>(Base::getTypePtr());
504
5.70M
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::DependentSizedArrayTypeLoc, clang::DependentSizedArrayType>::getTypePtr() const
Line
Count
Source
502
10.1k
  const TypeClass *getTypePtr() const {
503
10.1k
    return cast<TypeClass>(Base::getTypePtr());
504
10.1k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType>::getTypePtr() const
Line
Count
Source
502
103k
  const TypeClass *getTypePtr() const {
503
103k
    return cast<TypeClass>(Base::getTypePtr());
504
103k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DeducedTypeLoc, clang::DeducedType>::getTypePtr() const
Line
Count
Source
502
344k
  const TypeClass *getTypePtr() const {
503
344k
    return cast<TypeClass>(Base::getTypePtr());
504
344k
  }
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
36.4k
  const TypeClass *getTypePtr() const {
503
36.4k
    return cast<TypeClass>(Base::getTypePtr());
504
36.4k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::IncompleteArrayTypeLoc, clang::IncompleteArrayType>::getTypePtr() const
Line
Count
Source
502
6.73k
  const TypeClass *getTypePtr() const {
503
6.73k
    return cast<TypeClass>(Base::getTypePtr());
504
6.73k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::VariableArrayTypeLoc, clang::VariableArrayType>::getTypePtr() const
Line
Count
Source
502
205
  const TypeClass *getTypePtr() const {
503
205
    return cast<TypeClass>(Base::getTypePtr());
504
205
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::ComplexTypeLoc, clang::ComplexType>::getTypePtr() const
Line
Count
Source
502
9.42k
  const TypeClass *getTypePtr() const {
503
9.42k
    return cast<TypeClass>(Base::getTypePtr());
504
9.42k
  }
clang::InheritingConcreteTypeLoc<clang::DeducedTypeLoc, clang::DeducedTemplateSpecializationTypeLoc, clang::DeducedTemplateSpecializationType>::getTypePtr() const
Line
Count
Source
502
576
  const TypeClass *getTypePtr() const {
503
576
    return cast<TypeClass>(Base::getTypePtr());
504
576
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType>::getTypePtr() const
Line
Count
Source
502
19
  const TypeClass *getTypePtr() const {
503
19
    return cast<TypeClass>(Base::getTypePtr());
504
19
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType>::getTypePtr() const
Line
Count
Source
502
65
  const TypeClass *getTypePtr() const {
503
65
    return cast<TypeClass>(Base::getTypePtr());
504
65
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionNoProtoTypeLoc, clang::FunctionNoProtoType>::getTypePtr() const
Line
Count
Source
502
1.77k
  const TypeClass *getTypePtr() const {
503
1.77k
    return cast<TypeClass>(Base::getTypePtr());
504
1.77k
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionProtoTypeLoc, clang::FunctionProtoType>::getTypePtr() const
Line
Count
Source
502
7.03M
  const TypeClass *getTypePtr() const {
503
7.03M
    return cast<TypeClass>(Base::getTypePtr());
504
7.03M
  }
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::LValueReferenceTypeLoc, clang::LValueReferenceType>::getTypePtr() const
Line
Count
Source
502
198k
  const TypeClass *getTypePtr() const {
503
198k
    return cast<TypeClass>(Base::getTypePtr());
504
198k
  }
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::RValueReferenceTypeLoc, clang::RValueReferenceType>::getTypePtr() const
Line
Count
Source
502
30.3k
  const TypeClass *getTypePtr() const {
503
30.3k
    return cast<TypeClass>(Base::getTypePtr());
504
30.3k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmPackTypeLoc, clang::SubstTemplateTypeParmPackType>::getTypePtr() const
Line
Count
Source
502
129
  const TypeClass *getTypePtr() const {
503
129
    return cast<TypeClass>(Base::getTypePtr());
504
129
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmTypeLoc, clang::SubstTemplateTypeParmType>::getTypePtr() const
Line
Count
Source
502
71.8k
  const TypeClass *getTypePtr() const {
503
71.8k
    return cast<TypeClass>(Base::getTypePtr());
504
71.8k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::VectorTypeLoc, clang::VectorType>::getTypePtr() const
Line
Count
Source
502
5.22k
  const TypeClass *getTypePtr() const {
503
5.22k
    return cast<TypeClass>(Base::getTypePtr());
504
5.22k
  }
clang::InheritingConcreteTypeLoc<clang::VectorTypeLoc, clang::ExtVectorTypeLoc, clang::ExtVectorType>::getTypePtr() const
Line
Count
Source
502
19
  const TypeClass *getTypePtr() const {
503
19
    return cast<TypeClass>(Base::getTypePtr());
504
19
  }
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
184M
  SourceLocation getNameLoc() const {
524
184M
    return this->getLocalData()->NameLoc;
525
184M
  }
526
527
41.9M
  void setNameLoc(SourceLocation Loc) {
528
41.9M
    this->getLocalData()->NameLoc = Loc;
529
41.9M
  }
530
531
86.2M
  SourceRange getLocalSourceRange() const {
532
86.2M
    return SourceRange(getNameLoc(), getNameLoc());
533
86.2M
  }
534
535
7.05M
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
536
7.05M
    setNameLoc(Loc);
537
7.05M
  }
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
1.08M
  SourceLocation getBuiltinLoc() const {
556
1.08M
    return getLocalData()->BuiltinRange.getBegin();
557
1.08M
  }
558
559
10.1M
  void setBuiltinLoc(SourceLocation Loc) {
560
10.1M
    getLocalData()->BuiltinRange = Loc;
561
10.1M
  }
562
563
1.55M
  void expandBuiltinRange(SourceRange Range) {
564
1.55M
    SourceRange &BuiltinRange = getLocalData()->BuiltinRange;
565
1.55M
    if (!BuiltinRange.getBegin().isValid()) {
566
652k
      BuiltinRange = Range;
567
904k
    } else {
568
904k
      BuiltinRange.setBegin(std::min(Range.getBegin(), BuiltinRange.getBegin()));
569
904k
      BuiltinRange.setEnd(std::max(Range.getEnd(), BuiltinRange.getEnd()));
570
904k
    }
571
1.55M
  }
572
573
0
  SourceLocation getNameLoc() const { return getBuiltinLoc(); }
574
575
5.78M
  WrittenBuiltinSpecs& getWrittenBuiltinSpecs() {
576
5.78M
    return *(static_cast<WrittenBuiltinSpecs*>(getExtraLocalData()));
577
5.78M
  }
578
8.79M
  const WrittenBuiltinSpecs& getWrittenBuiltinSpecs() const {
579
8.79M
    return *(static_cast<WrittenBuiltinSpecs*>(getExtraLocalData()));
580
8.79M
  }
581
582
84.7M
  bool needsExtraLocalData() const {
583
84.7M
    BuiltinType::Kind bk = getTypePtr()->getKind();
584
84.7M
    return (bk >= BuiltinType::UShort && 
bk <= BuiltinType::UInt12854.9M
)
585
84.7M
      || 
(78.8M
bk >= BuiltinType::Short78.8M
&&
bk <= BuiltinType::Float12842.5M
)
586
84.7M
      || 
bk == BuiltinType::UChar37.2M
587
84.7M
      || 
bk == BuiltinType::SChar36.0M
;
588
84.7M
  }
589
590
11.8M
  unsigned getExtraLocalDataSize() const {
591
11.8M
    return needsExtraLocalData() ? 
sizeof(WrittenBuiltinSpecs)5.27M
:
06.53M
;
592
11.8M
  }
593
594
52.4M
  unsigned getExtraLocalDataAlignment() const {
595
52.4M
    return needsExtraLocalData() ? 
alignof(WrittenBuiltinSpecs)28.6M
:
123.7M
;
596
52.4M
  }
597
598
8.86M
  SourceRange getLocalSourceRange() const {
599
8.86M
    return getLocalData()->BuiltinRange;
600
8.86M
  }
601
602
4.05M
  TypeSpecifierSign getWrittenSignSpec() const {
603
4.05M
    if (needsExtraLocalData())
604
4.05M
      return static_cast<TypeSpecifierSign>(getWrittenBuiltinSpecs().Sign);
605
0
    else
606
0
      return TSS_unspecified;
607
4.05M
  }
608
609
0
  bool hasWrittenSignSpec() const {
610
0
    return getWrittenSignSpec() != TSS_unspecified;
611
0
  }
612
613
192k
  void setWrittenSignSpec(TypeSpecifierSign written) {
614
192k
    if (needsExtraLocalData())
615
192k
      getWrittenBuiltinSpecs().Sign = written;
616
192k
  }
617
618
4.05M
  TypeSpecifierWidth getWrittenWidthSpec() const {
619
4.05M
    if (needsExtraLocalData())
620
4.05M
      return static_cast<TypeSpecifierWidth>(getWrittenBuiltinSpecs().Width);
621
0
    else
622
0
      return TSW_unspecified;
623
4.05M
  }
624
625
0
  bool hasWrittenWidthSpec() const {
626
0
    return getWrittenWidthSpec() != TSW_unspecified;
627
0
  }
628
629
192k
  void setWrittenWidthSpec(TypeSpecifierWidth written) {
630
192k
    if (needsExtraLocalData())
631
192k
      getWrittenBuiltinSpecs().Width = written;
632
192k
  }
633
634
  TypeSpecifierType getWrittenTypeSpec() const;
635
636
0
  bool hasWrittenTypeSpec() const {
637
0
    return getWrittenTypeSpec() != TST_unspecified;
638
0
  }
639
640
192k
  void setWrittenTypeSpec(TypeSpecifierType written) {
641
192k
    if (needsExtraLocalData())
642
192k
      getWrittenBuiltinSpecs().Type = written;
643
192k
  }
644
645
339k
  bool hasModeAttr() const {
646
339k
    if (needsExtraLocalData())
647
339k
      return getWrittenBuiltinSpecs().ModeAttr;
648
0
    else
649
0
      return false;
650
339k
  }
651
652
192k
  void setModeAttr(bool written) {
653
192k
    if (needsExtraLocalData())
654
192k
      getWrittenBuiltinSpecs().ModeAttr = written;
655
192k
  }
656
657
1.73M
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
658
1.73M
    setBuiltinLoc(Loc);
659
1.73M
    if (needsExtraLocalData()) {
660
1.26M
      WrittenBuiltinSpecs &wbs = getWrittenBuiltinSpecs();
661
1.26M
      wbs.Sign = TSS_unspecified;
662
1.26M
      wbs.Width = TSW_unspecified;
663
1.26M
      wbs.Type = TST_unspecified;
664
1.26M
      wbs.ModeAttr = false;
665
1.26M
    }
666
1.73M
  }
667
};
668
669
/// Wrapper for source info for typedefs.
670
class TypedefTypeLoc : public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
671
                                                        TypedefTypeLoc,
672
                                                        TypedefType> {
673
public:
674
3.02k
  TypedefNameDecl *getTypedefNameDecl() const {
675
3.02k
    return getTypePtr()->getDecl();
676
3.02k
  }
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.53k
  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
388
  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
4.74k
  SourceLocation *getProtocolLocArray() const {
754
4.74k
    return (SourceLocation*)this->getExtraLocalData() + 2;
755
4.74k
  }
756
757
public:
758
5
  ObjCTypeParamDecl *getDecl() const { return getTypePtr()->getDecl(); }
759
760
58.2k
  SourceLocation getNameLoc() const {
761
58.2k
    return this->getLocalData()->NameLoc;
762
58.2k
  }
763
764
151k
  void setNameLoc(SourceLocation Loc) {
765
151k
    this->getLocalData()->NameLoc = Loc;
766
151k
  }
767
768
54
  SourceLocation getProtocolLAngleLoc() const {
769
54
    return getNumProtocols()  ?
770
54
      *((SourceLocation*)this->getExtraLocalData()) :
771
54
      
SourceLocation()0
;
772
54
  }
773
774
4.68k
  void setProtocolLAngleLoc(SourceLocation Loc) {
775
4.68k
    *((SourceLocation*)this->getExtraLocalData()) = Loc;
776
4.68k
  }
777
778
58.3k
  SourceLocation getProtocolRAngleLoc() const {
779
58.3k
    return getNumProtocols()  ?
780
2.92k
      *((SourceLocation*)this->getExtraLocalData() + 1) :
781
58.3k
      
SourceLocation()55.4k
;
782
58.3k
  }
783
784
4.68k
  void setProtocolRAngleLoc(SourceLocation Loc) {
785
4.68k
    *((SourceLocation*)this->getExtraLocalData() + 1) = Loc;
786
4.68k
  }
787
788
388k
  unsigned getNumProtocols() const {
789
388k
    return this->getTypePtr()->getNumProtocols();
790
388k
  }
791
792
55
  SourceLocation getProtocolLoc(unsigned i) const {
793
55
    assert(i < getNumProtocols() && "Index is out of bounds!");
794
55
    return getProtocolLocArray()[i];
795
55
  }
796
797
4.68k
  void setProtocolLoc(unsigned i, SourceLocation Loc) {
798
4.68k
    assert(i < getNumProtocols() && "Index is out of bounds!");
799
4.68k
    getProtocolLocArray()[i] = Loc;
800
4.68k
  }
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
155k
  unsigned getExtraLocalDataSize() const {
814
155k
    if (!this->getNumProtocols()) 
return 0150k
;
815
4.68k
    // When there are protocol qualifers, we have LAngleLoc and RAngleLoc
816
4.68k
    // as well.
817
4.68k
    return (this->getNumProtocols() + 2) * sizeof(SourceLocation) ;
818
4.68k
  }
819
820
438k
  unsigned getExtraLocalDataAlignment() const {
821
438k
    return alignof(SourceLocation);
822
438k
  }
823
824
58.2k
  SourceRange getLocalSourceRange() const {
825
58.2k
    SourceLocation start = getNameLoc();
826
58.2k
    SourceLocation end = getProtocolRAngleLoc();
827
58.2k
    if (end.isInvalid()) 
return SourceRange(start, start)55.4k
;
828
2.87k
    return SourceRange(start, end);
829
2.87k
  }
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
122
  attr::Kind getAttrKind() const {
857
122
    return getTypePtr()->getAttrKind();
858
122
  }
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
2.19M
  TypeLoc getModifiedLoc() const {
869
2.19M
    return getInnerTypeLoc();
870
2.19M
  }
871
872
  /// The type attribute.
873
2.09M
  const Attr *getAttr() const {
874
2.09M
    return getLocalData()->TypeAttr;
875
2.09M
  }
876
4.00M
  void setAttr(const Attr *A) {
877
4.00M
    getLocalData()->TypeAttr = A;
878
4.00M
  }
879
880
9.88k
  template<typename T> const T *getAttrAs() {
881
9.88k
    return dyn_cast_or_null<T>(getAttr());
882
9.88k
  }
clang::LifetimeBoundAttr const* clang::AttributedTypeLoc::getAttrAs<clang::LifetimeBoundAttr>()
Line
Count
Source
880
9.54k
  template<typename T> const T *getAttrAs() {
881
9.54k
    return dyn_cast_or_null<T>(getAttr());
882
9.54k
  }
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
842
  void initializeLocal(ASTContext &Context, SourceLocation loc) {
887
842
    setAttr(nullptr);
888
842
  }
889
890
18.4M
  QualType getInnerType() const {
891
18.4M
    return getTypePtr()->getModifiedType();
892
18.4M
  }
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
240k
  TypeSourceInfo **getTypeArgLocArray() const {
914
240k
    return (TypeSourceInfo**)this->getExtraLocalData();
915
240k
  }
916
917
  // SourceLocations are stored after the type argument information, one for
918
  // each Protocol.
919
27.9k
  SourceLocation *getProtocolLocArray() const {
920
27.9k
    return (SourceLocation*)(getTypeArgLocArray() + getNumTypeArgs());
921
27.9k
  }
922
923
public:
924
81.0k
  SourceLocation getTypeArgsLAngleLoc() const {
925
81.0k
    return this->getLocalData()->TypeArgsLAngleLoc;
926
81.0k
  }
927
928
229k
  void setTypeArgsLAngleLoc(SourceLocation Loc) {
929
229k
    this->getLocalData()->TypeArgsLAngleLoc = Loc;
930
229k
  }
931
932
70.3k
  SourceLocation getTypeArgsRAngleLoc() const {
933
70.3k
    return this->getLocalData()->TypeArgsRAngleLoc;
934
70.3k
  }
935
936
229k
  void setTypeArgsRAngleLoc(SourceLocation Loc) {
937
229k
    this->getLocalData()->TypeArgsRAngleLoc = Loc;
938
229k
  }
939
940
2.85M
  unsigned getNumTypeArgs() const {
941
2.85M
    return this->getTypePtr()->getTypeArgsAsWritten().size();
942
2.85M
  }
943
944
11.5k
  TypeSourceInfo *getTypeArgTInfo(unsigned i) const {
945
11.5k
    assert(i < getNumTypeArgs() && "Index is out of bounds!");
946
11.5k
    return getTypeArgLocArray()[i];
947
11.5k
  }
948
949
201k
  void setTypeArgTInfo(unsigned i, TypeSourceInfo *TInfo) {
950
201k
    assert(i < getNumTypeArgs() && "Index is out of bounds!");
951
201k
    getTypeArgLocArray()[i] = TInfo;
952
201k
  }
953
954
17.2k
  SourceLocation getProtocolLAngleLoc() const {
955
17.2k
    return this->getLocalData()->ProtocolLAngleLoc;
956
17.2k
  }
957
958
229k
  void setProtocolLAngleLoc(SourceLocation Loc) {
959
229k
    this->getLocalData()->ProtocolLAngleLoc = Loc;
960
229k
  }
961
962
81.0k
  SourceLocation getProtocolRAngleLoc() const {
963
81.0k
    return this->getLocalData()->ProtocolRAngleLoc;
964
81.0k
  }
965
966
229k
  void setProtocolRAngleLoc(SourceLocation Loc) {
967
229k
    this->getLocalData()->ProtocolRAngleLoc = Loc;
968
229k
  }
969
970
2.50M
  unsigned getNumProtocols() const {
971
2.50M
    return this->getTypePtr()->getNumProtocols();
972
2.50M
  }
973
974
1.47k
  SourceLocation getProtocolLoc(unsigned i) const {
975
1.47k
    assert(i < getNumProtocols() && "Index is out of bounds!");
976
1.47k
    return getProtocolLocArray()[i];
977
1.47k
  }
978
979
26.4k
  void setProtocolLoc(unsigned i, SourceLocation Loc) {
980
26.4k
    assert(i < getNumProtocols() && "Index is out of bounds!");
981
26.4k
    getProtocolLocArray()[i] = Loc;
982
26.4k
  }
983
984
68
  ObjCProtocolDecl *getProtocol(unsigned i) const {
985
68
    assert(i < getNumProtocols() && "Index is out of bounds!");
986
68
    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
6.55k
  bool hasBaseTypeAsWritten() const {
995
6.55k
    return getLocalData()->HasBaseTypeAsWritten;
996
6.55k
  }
997
998
229k
  void setHasBaseTypeAsWritten(bool HasBaseType) {
999
229k
    getLocalData()->HasBaseTypeAsWritten = HasBaseType;
1000
229k
  }
1001
1002
188k
  TypeLoc getBaseLoc() const {
1003
188k
    return getInnerTypeLoc();
1004
188k
  }
1005
1006
74.4k
  SourceRange getLocalSourceRange() const {
1007
74.4k
    SourceLocation start = getTypeArgsLAngleLoc();
1008
74.4k
    if (start.isInvalid())
1009
10.7k
      start = getProtocolLAngleLoc();
1010
74.4k
    SourceLocation end = getProtocolRAngleLoc();
1011
74.4k
    if (end.isInvalid())
1012
63.8k
      end = getTypeArgsRAngleLoc();
1013
74.4k
    return SourceRange(start, end);
1014
74.4k
  }
1015
1016
  void initializeLocal(ASTContext &Context, SourceLocation Loc);
1017
1018
2.21M
  unsigned getExtraLocalDataSize() const {
1019
2.21M
    return this->getNumTypeArgs() * sizeof(TypeSourceInfo *)
1020
2.21M
         + this->getNumProtocols() * sizeof(SourceLocation);
1021
2.21M
  }
1022
1023
4.02M
  unsigned getExtraLocalDataAlignment() const {
1024
4.02M
    static_assert(alignof(ObjCObjectTypeLoc) >= alignof(TypeSourceInfo *),
1025
4.02M
                  "not enough alignment for tail-allocated data");
1026
4.02M
    return alignof(TypeSourceInfo *);
1027
4.02M
  }
1028
1029
2.53M
  QualType getInnerType() const {
1030
2.53M
    return getTypePtr()->getBaseType();
1031
2.53M
  }
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
379
  ObjCInterfaceDecl *getIFaceDecl() const {
1046
379
    return getTypePtr()->getDecl();
1047
379
  }
1048
1049
2.00M
  SourceLocation getNameLoc() const {
1050
2.00M
    return getLocalData()->NameLoc;
1051
2.00M
  }
1052
1053
1.73M
  void setNameLoc(SourceLocation Loc) {
1054
1.73M
    getLocalData()->NameLoc = Loc;
1055
1.73M
  }
1056
1057
1.95M
  SourceRange getLocalSourceRange() const {
1058
1.95M
    return SourceRange(getNameLoc(), getNameEndLoc());
1059
1.95M
  }
1060
1061
1.95M
  SourceLocation getNameEndLoc() const {
1062
1.95M
    return getLocalData()->NameEndLoc;
1063
1.95M
  }
1064
1065
1.71M
  void setNameEndLoc(SourceLocation Loc) {
1066
1.71M
    getLocalData()->NameEndLoc = Loc;
1067
1.71M
  }
1068
1069
411k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1070
411k
    setNameLoc(Loc);
1071
411k
    setNameEndLoc(Loc);
1072
411k
  }
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
254k
  TypeLoc getInnerLoc() const { return getInnerTypeLoc(); }
1088
1089
23
  const IdentifierInfo *getMacroIdentifier() const {
1090
23
    return getTypePtr()->getMacroIdentifier();
1091
23
  }
1092
1093
11.4k
  SourceLocation getExpansionLoc() const {
1094
11.4k
    return this->getLocalData()->ExpansionLoc;
1095
11.4k
  }
1096
1097
355k
  void setExpansionLoc(SourceLocation Loc) {
1098
355k
    this->getLocalData()->ExpansionLoc = Loc;
1099
355k
  }
1100
1101
1.47M
  QualType getInnerType() const { return getTypePtr()->getUnderlyingType(); }
1102
1103
171
  SourceRange getLocalSourceRange() const {
1104
171
    return getInnerLoc().getLocalSourceRange();
1105
171
  }
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
142k
  SourceLocation getLParenLoc() const {
1118
142k
    return this->getLocalData()->LParenLoc;
1119
142k
  }
1120
1121
142k
  SourceLocation getRParenLoc() const {
1122
142k
    return this->getLocalData()->RParenLoc;
1123
142k
  }
1124
1125
363k
  void setLParenLoc(SourceLocation Loc) {
1126
363k
    this->getLocalData()->LParenLoc = Loc;
1127
363k
  }
1128
1129
363k
  void setRParenLoc(SourceLocation Loc) {
1130
363k
    this->getLocalData()->RParenLoc = Loc;
1131
363k
  }
1132
1133
102k
  SourceRange getLocalSourceRange() const {
1134
102k
    return SourceRange(getLParenLoc(), getRParenLoc());
1135
102k
  }
1136
1137
1.24k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1138
1.24k
    setLParenLoc(Loc);
1139
1.24k
    setRParenLoc(Loc);
1140
1.24k
  }
1141
1142
57.9k
  TypeLoc getInnerLoc() const {
1143
57.9k
    return getInnerTypeLoc();
1144
57.9k
  }
1145
1146
1.93M
  QualType getInnerType() const {
1147
1.93M
    return this->getTypePtr()->getInnerType();
1148
1.93M
  }
1149
};
1150
1151
3.30M
inline TypeLoc TypeLoc::IgnoreParens() const {
1152
3.30M
  if (ParenTypeLoc::isKind(*this))
1153
154
    return IgnoreParensImpl(*this);
1154
3.30M
  return *this;
1155
3.30M
}
1156
1157
struct AdjustedLocInfo {}; // Nothing.
1158
1159
class AdjustedTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, AdjustedTypeLoc,
1160
                                               AdjustedType, AdjustedLocInfo> {
1161
public:
1162
2.12k
  TypeLoc getOriginalLoc() const {
1163
2.12k
    return getInnerTypeLoc();
1164
2.12k
  }
1165
1166
2.54k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1167
2.54k
    // do nothing
1168
2.54k
  }
1169
1170
25.8k
  QualType getInnerType() const {
1171
25.8k
    // The inner type is the undecayed type, since that's what we have source
1172
25.8k
    // location information for.
1173
25.8k
    return getTypePtr()->getOriginalType();
1174
25.8k
  }
1175
1176
1.06k
  SourceRange getLocalSourceRange() const { return {}; }
1177
1178
19.8k
  unsigned getLocalDataSize() const {
1179
19.8k
    // sizeof(AdjustedLocInfo) is 1, but we don't need its address to be unique
1180
19.8k
    // anyway.  TypeLocBuilder can't handle data sizes of 1.
1181
19.8k
    return 0;  // No data.
1182
19.8k
  }
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.0M
  SourceLocation getSigilLoc() const {
1201
11.0M
    return this->getLocalData()->StarLoc;
1202
11.0M
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getSigilLoc() const
Line
Count
Source
1200
3.94M
  SourceLocation getSigilLoc() const {
1201
3.94M
    return this->getLocalData()->StarLoc;
1202
3.94M
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getSigilLoc() const
Line
Count
Source
1200
84.3k
  SourceLocation getSigilLoc() const {
1201
84.3k
    return this->getLocalData()->StarLoc;
1202
84.3k
  }
clang::PointerLikeTypeLoc<clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getSigilLoc() const
Line
Count
Source
1200
72.6k
  SourceLocation getSigilLoc() const {
1201
72.6k
    return this->getLocalData()->StarLoc;
1202
72.6k
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getSigilLoc() const
Line
Count
Source
1200
1.41M
  SourceLocation getSigilLoc() const {
1201
1.41M
    return this->getLocalData()->StarLoc;
1202
1.41M
  }
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getSigilLoc() const
Line
Count
Source
1200
5.55M
  SourceLocation getSigilLoc() const {
1201
5.55M
    return this->getLocalData()->StarLoc;
1202
5.55M
  }
1203
1204
9.18M
  void setSigilLoc(SourceLocation Loc) {
1205
9.18M
    this->getLocalData()->StarLoc = Loc;
1206
9.18M
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::setSigilLoc(clang::SourceLocation)
Line
Count
Source
1204
4.84M
  void setSigilLoc(SourceLocation Loc) {
1205
4.84M
    this->getLocalData()->StarLoc = Loc;
1206
4.84M
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::setSigilLoc(clang::SourceLocation)
Line
Count
Source
1204
71.8k
  void setSigilLoc(SourceLocation Loc) {
1205
71.8k
    this->getLocalData()->StarLoc = Loc;
1206
71.8k
  }
clang::PointerLikeTypeLoc<clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::setSigilLoc(clang::SourceLocation)
Line
Count
Source
1204
54.8k
  void setSigilLoc(SourceLocation Loc) {
1205
54.8k
    this->getLocalData()->StarLoc = Loc;
1206
54.8k
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::setSigilLoc(clang::SourceLocation)
Line
Count
Source
1204
1.54M
  void setSigilLoc(SourceLocation Loc) {
1205
1.54M
    this->getLocalData()->StarLoc = Loc;
1206
1.54M
  }
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::setSigilLoc(clang::SourceLocation)
Line
Count
Source
1204
2.66M
  void setSigilLoc(SourceLocation Loc) {
1205
2.66M
    this->getLocalData()->StarLoc = Loc;
1206
2.66M
  }
1207
1208
2.37M
  TypeLoc getPointeeLoc() const {
1209
2.37M
    return this->getInnerTypeLoc();
1210
2.37M
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getPointeeLoc() const
Line
Count
Source
1208
1.08M
  TypeLoc getPointeeLoc() const {
1209
1.08M
    return this->getInnerTypeLoc();
1210
1.08M
  }
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getPointeeLoc() const
Line
Count
Source
1208
1.21M
  TypeLoc getPointeeLoc() const {
1209
1.21M
    return this->getInnerTypeLoc();
1210
1.21M
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getPointeeLoc() const
Line
Count
Source
1208
2.44k
  TypeLoc getPointeeLoc() const {
1209
2.44k
    return this->getInnerTypeLoc();
1210
2.44k
  }
clang::PointerLikeTypeLoc<clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getPointeeLoc() const
Line
Count
Source
1208
2.65k
  TypeLoc getPointeeLoc() const {
1209
2.65k
    return this->getInnerTypeLoc();
1210
2.65k
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getPointeeLoc() const
Line
Count
Source
1208
65.4k
  TypeLoc getPointeeLoc() const {
1209
65.4k
    return this->getInnerTypeLoc();
1210
65.4k
  }
1211
1212
3.95M
  SourceRange getLocalSourceRange() const {
1213
3.95M
    return SourceRange(getSigilLoc(), getSigilLoc());
1214
3.95M
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getLocalSourceRange() const
Line
Count
Source
1212
41.0k
  SourceRange getLocalSourceRange() const {
1213
41.0k
    return SourceRange(getSigilLoc(), getSigilLoc());
1214
41.0k
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getLocalSourceRange() const
Line
Count
Source
1212
682k
  SourceRange getLocalSourceRange() const {
1213
682k
    return SourceRange(getSigilLoc(), getSigilLoc());
1214
682k
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getLocalSourceRange() const
Line
Count
Source
1212
1.47M
  SourceRange getLocalSourceRange() const {
1213
1.47M
    return SourceRange(getSigilLoc(), getSigilLoc());
1214
1.47M
  }
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getLocalSourceRange() const
Line
Count
Source
1212
1.75M
  SourceRange getLocalSourceRange() const {
1213
1.75M
    return SourceRange(getSigilLoc(), getSigilLoc());
1214
1.75M
  }
1215
1216
791k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1217
791k
    setSigilLoc(Loc);
1218
791k
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation)
Line
Count
Source
1216
1.08k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1217
1.08k
    setSigilLoc(Loc);
1218
1.08k
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation)
Line
Count
Source
1216
45.0k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1217
45.0k
    setSigilLoc(Loc);
1218
45.0k
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation)
Line
Count
Source
1216
367k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1217
367k
    setSigilLoc(Loc);
1218
367k
  }
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation)
Line
Count
Source
1216
377k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1217
377k
    setSigilLoc(Loc);
1218
377k
  }
1219
1220
35.4M
  QualType getInnerType() const {
1221
35.4M
    return this->getTypePtr()->getPointeeType();
1222
35.4M
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getInnerType() const
Line
Count
Source
1220
26.7M
  QualType getInnerType() const {
1221
26.7M
    return this->getTypePtr()->getPointeeType();
1222
26.7M
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getInnerType() const
Line
Count
Source
1220
381k
  QualType getInnerType() const {
1221
381k
    return this->getTypePtr()->getPointeeType();
1222
381k
  }
clang::PointerLikeTypeLoc<clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getInnerType() const
Line
Count
Source
1220
446k
  QualType getInnerType() const {
1221
446k
    return this->getTypePtr()->getPointeeType();
1222
446k
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getInnerType() const
Line
Count
Source
1220
7.88M
  QualType getInnerType() const {
1221
7.88M
    return this->getTypePtr()->getPointeeType();
1222
7.88M
  }
1223
};
1224
1225
/// Wrapper for source info for pointers.
1226
class PointerTypeLoc : public PointerLikeTypeLoc<PointerTypeLoc,
1227
                                                 PointerType> {
1228
public:
1229
371k
  SourceLocation getStarLoc() const {
1230
371k
    return getSigilLoc();
1231
371k
  }
1232
1233
4.16M
  void setStarLoc(SourceLocation Loc) {
1234
4.16M
    setSigilLoc(Loc);
1235
4.16M
  }
1236
};
1237
1238
/// Wrapper for source info for block pointers.
1239
class BlockPointerTypeLoc : public PointerLikeTypeLoc<BlockPointerTypeLoc,
1240
                                                      BlockPointerType> {
1241
public:
1242
2.29k
  SourceLocation getCaretLoc() const {
1243
2.29k
    return getSigilLoc();
1244
2.29k
  }
1245
1246
70.7k
  void setCaretLoc(SourceLocation Loc) {
1247
70.7k
    setSigilLoc(Loc);
1248
70.7k
  }
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
72.2k
  SourceLocation getStarLoc() const {
1261
72.2k
    return getSigilLoc();
1262
72.2k
  }
1263
1264
33.0k
  void setStarLoc(SourceLocation Loc) {
1265
33.0k
    setSigilLoc(Loc);
1266
33.0k
  }
1267
1268
32.8k
  const Type *getClass() const {
1269
32.8k
    return getTypePtr()->getClass();
1270
32.8k
  }
1271
1272
74.3k
  TypeSourceInfo *getClassTInfo() const {
1273
74.3k
    return getLocalData()->ClassTInfo;
1274
74.3k
  }
1275
1276
54.8k
  void setClassTInfo(TypeSourceInfo* TI) {
1277
54.8k
    getLocalData()->ClassTInfo = TI;
1278
54.8k
  }
1279
1280
21.4k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1281
21.4k
    setSigilLoc(Loc);
1282
21.4k
    setClassTInfo(nullptr);
1283
21.4k
  }
1284
1285
69.8k
  SourceRange getLocalSourceRange() const {
1286
69.8k
    if (TypeSourceInfo *TI = getClassTInfo())
1287
46.6k
      return SourceRange(TI->getTypeLoc().getBeginLoc(), getStarLoc());
1288
23.2k
    else
1289
23.2k
      return SourceRange(getStarLoc());
1290
69.8k
  }
1291
};
1292
1293
/// Wraps an ObjCPointerType with source location information.
1294
class ObjCObjectPointerTypeLoc :
1295
    public PointerLikeTypeLoc<ObjCObjectPointerTypeLoc,
1296
                              ObjCObjectPointerType> {
1297
public:
1298
47.1k
  SourceLocation getStarLoc() const {
1299
47.1k
    return getSigilLoc();
1300
47.1k
  }
1301
1302
1.50M
  void setStarLoc(SourceLocation Loc) {
1303
1.50M
    setSigilLoc(Loc);
1304
1.50M
  }
1305
};
1306
1307
class ReferenceTypeLoc : public PointerLikeTypeLoc<ReferenceTypeLoc,
1308
                                                   ReferenceType> {
1309
public:
1310
21.4M
  QualType getInnerType() const {
1311
21.4M
    return getTypePtr()->getPointeeTypeAsWritten();
1312
21.4M
  }
1313
};
1314
1315
class LValueReferenceTypeLoc :
1316
    public InheritingConcreteTypeLoc<ReferenceTypeLoc,
1317
                                     LValueReferenceTypeLoc,
1318
                                     LValueReferenceType> {
1319
public:
1320
225k
  SourceLocation getAmpLoc() const {
1321
225k
    return getSigilLoc();
1322
225k
  }
1323
1324
1.17M
  void setAmpLoc(SourceLocation Loc) {
1325
1.17M
    setSigilLoc(Loc);
1326
1.17M
  }
1327
};
1328
1329
class RValueReferenceTypeLoc :
1330
    public InheritingConcreteTypeLoc<ReferenceTypeLoc,
1331
                                     RValueReferenceTypeLoc,
1332
                                     RValueReferenceType> {
1333
public:
1334
33.4k
  SourceLocation getAmpAmpLoc() const {
1335
33.4k
    return getSigilLoc();
1336
33.4k
  }
1337
1338
208k
  void setAmpAmpLoc(SourceLocation Loc) {
1339
208k
    setSigilLoc(Loc);
1340
208k
  }
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
47.8M
  bool hasExceptionSpec() const {
1356
47.8M
    if (auto *FPT = dyn_cast<FunctionProtoType>(getTypePtr())) {
1357
47.7M
      return FPT->hasExceptionSpec();
1358
47.7M
    }
1359
114k
    return false;
1360
114k
  }
1361
1362
1.61M
  SourceRange *getExceptionSpecRangePtr() const {
1363
1.61M
    assert(hasExceptionSpec() && "No exception spec range");
1364
1.61M
    // After the Info comes the ParmVarDecl array, and after that comes the
1365
1.61M
    // exception specification information.
1366
1.61M
    return (SourceRange *)(getParmArray() + getNumParams());
1367
1.61M
  }
1368
1369
public:
1370
2.45M
  SourceLocation getLocalRangeBegin() const {
1371
2.45M
    return getLocalData()->LocalRangeBegin;
1372
2.45M
  }
1373
1374
8.55M
  void setLocalRangeBegin(SourceLocation L) {
1375
8.55M
    getLocalData()->LocalRangeBegin = L;
1376
8.55M
  }
1377
1378
2.45M
  SourceLocation getLocalRangeEnd() const {
1379
2.45M
    return getLocalData()->LocalRangeEnd;
1380
2.45M
  }
1381
1382
8.55M
  void setLocalRangeEnd(SourceLocation L) {
1383
8.55M
    getLocalData()->LocalRangeEnd = L;
1384
8.55M
  }
1385
1386
1.54M
  SourceLocation getLParenLoc() const {
1387
1.54M
    return this->getLocalData()->LParenLoc;
1388
1.54M
  }
1389
1390
8.55M
  void setLParenLoc(SourceLocation Loc) {
1391
8.55M
    this->getLocalData()->LParenLoc = Loc;
1392
8.55M
  }
1393
1394
1.53M
  SourceLocation getRParenLoc() const {
1395
1.53M
    return this->getLocalData()->RParenLoc;
1396
1.53M
  }
1397
1398
8.55M
  void setRParenLoc(SourceLocation Loc) {
1399
8.55M
    this->getLocalData()->RParenLoc = Loc;
1400
8.55M
  }
1401
1402
0
  SourceRange getParensRange() const {
1403
0
    return SourceRange(getLParenLoc(), getRParenLoc());
1404
0
  }
1405
1406
1.53M
  SourceRange getExceptionSpecRange() const {
1407
1.53M
    if (hasExceptionSpec())
1408
453k
      return *getExceptionSpecRangePtr();
1409
1.07M
    return {};
1410
1.07M
  }
1411
1412
8.50M
  void setExceptionSpecRange(SourceRange R) {
1413
8.50M
    if (hasExceptionSpec())
1414
1.16M
      *getExceptionSpecRangePtr() = R;
1415
8.50M
  }
1416
1417
1.12M
  ArrayRef<ParmVarDecl *> getParams() const {
1418
1.12M
    return llvm::makeArrayRef(getParmArray(), getNumParams());
1419
1.12M
  }
1420
1421
  // ParmVarDecls* are stored after Info, one for each parameter.
1422
24.9M
  ParmVarDecl **getParmArray() const {
1423
24.9M
    return (ParmVarDecl**) getExtraLocalData();
1424
24.9M
  }
1425
1426
49.7M
  unsigned getNumParams() const {
1427
49.7M
    if (isa<FunctionNoProtoType>(getTypePtr()))
1428
114k
      return 0;
1429
49.6M
    return cast<FunctionProtoType>(getTypePtr())->getNumParams();
1430
49.6M
  }
1431
1432
5.69M
  ParmVarDecl *getParam(unsigned i) const { return getParmArray()[i]; }
1433
16.5M
  void setParam(unsigned i, ParmVarDecl *VD) { getParmArray()[i] = VD; }
1434
1435
1.66M
  TypeLoc getReturnLoc() const {
1436
1.66M
    return getInnerTypeLoc();
1437
1.66M
  }
1438
1439
918k
  SourceRange getLocalSourceRange() const {
1440
918k
    return SourceRange(getLocalRangeBegin(), getLocalRangeEnd());
1441
918k
  }
1442
1443
60.0k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1444
60.0k
    setLocalRangeBegin(Loc);
1445
60.0k
    setLParenLoc(Loc);
1446
60.0k
    setRParenLoc(Loc);
1447
60.0k
    setLocalRangeEnd(Loc);
1448
116k
    for (unsigned i = 0, e = getNumParams(); i != e; 
++i56.1k
)
1449
56.1k
      setParam(i, nullptr);
1450
60.0k
    if (hasExceptionSpec())
1451
3.44k
      setExceptionSpecRange(Loc);
1452
60.0k
  }
1453
1454
  /// Returns the size of the type source info data block that is
1455
  /// specific to this type.
1456
36.1M
  unsigned getExtraLocalDataSize() const {
1457
36.1M
    unsigned ExceptSpecSize = hasExceptionSpec() ? 
sizeof(SourceRange)7.30M
:
028.8M
;
1458
36.1M
    return (getNumParams() * sizeof(ParmVarDecl *)) + ExceptSpecSize;
1459
36.1M
  }
1460
1461
73.7M
  unsigned getExtraLocalDataAlignment() const { return alignof(ParmVarDecl *); }
1462
1463
49.2M
  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
81.7k
  SourceLocation getLBracketLoc() const {
1490
81.7k
    return getLocalData()->LBracketLoc;
1491
81.7k
  }
1492
1493
446k
  void setLBracketLoc(SourceLocation Loc) {
1494
446k
    getLocalData()->LBracketLoc = Loc;
1495
446k
  }
1496
1497
81.7k
  SourceLocation getRBracketLoc() const {
1498
81.7k
    return getLocalData()->RBracketLoc;
1499
81.7k
  }
1500
1501
446k
  void setRBracketLoc(SourceLocation Loc) {
1502
446k
    getLocalData()->RBracketLoc = Loc;
1503
446k
  }
1504
1505
9.66k
  SourceRange getBracketsRange() const {
1506
9.66k
    return SourceRange(getLBracketLoc(), getRBracketLoc());
1507
9.66k
  }
1508
1509
139k
  Expr *getSizeExpr() const {
1510
139k
    return getLocalData()->Size;
1511
139k
  }
1512
1513
450k
  void setSizeExpr(Expr *Size) {
1514
450k
    getLocalData()->Size = Size;
1515
450k
  }
1516
1517
52.1k
  TypeLoc getElementLoc() const {
1518
52.1k
    return getInnerTypeLoc();
1519
52.1k
  }
1520
1521
27.3k
  SourceRange getLocalSourceRange() const {
1522
27.3k
    return SourceRange(getLBracketLoc(), getRBracketLoc());
1523
27.3k
  }
1524
1525
108k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1526
108k
    setLBracketLoc(Loc);
1527
108k
    setRBracketLoc(Loc);
1528
108k
    setSizeExpr(nullptr);
1529
108k
  }
1530
1531
2.18M
  QualType getInnerType() const { return getTypePtr()->getElementType(); }
1532
};
1533
1534
class ConstantArrayTypeLoc :
1535
    public InheritingConcreteTypeLoc<ArrayTypeLoc,
1536
                                     ConstantArrayTypeLoc,
1537
                                     ConstantArrayType> {
1538
};
1539
1540
class IncompleteArrayTypeLoc :
1541
    public InheritingConcreteTypeLoc<ArrayTypeLoc,
1542
                                     IncompleteArrayTypeLoc,
1543
                                     IncompleteArrayType> {
1544
};
1545
1546
class DependentSizedArrayTypeLoc :
1547
    public InheritingConcreteTypeLoc<ArrayTypeLoc,
1548
                                     DependentSizedArrayTypeLoc,
1549
                                     DependentSizedArrayType> {
1550
public:
1551
4.22k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1552
4.22k
    ArrayTypeLoc::initializeLocal(Context, Loc);
1553
4.22k
    setSizeExpr(getTypePtr()->getSizeExpr());
1554
4.22k
  }
1555
};
1556
1557
class VariableArrayTypeLoc :
1558
    public InheritingConcreteTypeLoc<ArrayTypeLoc,
1559
                                     VariableArrayTypeLoc,
1560
                                     VariableArrayType> {
1561
};
1562
1563
// Location information for a TemplateName.  Rudimentary for now.
1564
struct TemplateNameLocInfo {
1565
  SourceLocation NameLoc;
1566
};
1567
1568
struct TemplateSpecializationLocInfo : TemplateNameLocInfo {
1569
  SourceLocation TemplateKWLoc;
1570
  SourceLocation LAngleLoc;
1571
  SourceLocation RAngleLoc;
1572
};
1573
1574
class TemplateSpecializationTypeLoc :
1575
    public ConcreteTypeLoc<UnqualTypeLoc,
1576
                           TemplateSpecializationTypeLoc,
1577
                           TemplateSpecializationType,
1578
                           TemplateSpecializationLocInfo> {
1579
public:
1580
109M
  SourceLocation getTemplateKeywordLoc() const {
1581
109M
    return getLocalData()->TemplateKWLoc;
1582
109M
  }
1583
1584
7.46M
  void setTemplateKeywordLoc(SourceLocation Loc) {
1585
7.46M
    getLocalData()->TemplateKWLoc = Loc;
1586
7.46M
  }
1587
1588
7.91M
  SourceLocation getLAngleLoc() const {
1589
7.91M
    return getLocalData()->LAngleLoc;
1590
7.91M
  }
1591
1592
7.46M
  void setLAngleLoc(SourceLocation Loc) {
1593
7.46M
    getLocalData()->LAngleLoc = Loc;
1594
7.46M
  }
1595
1596
109M
  SourceLocation getRAngleLoc() const {
1597
109M
    return getLocalData()->RAngleLoc;
1598
109M
  }
1599
1600
7.46M
  void setRAngleLoc(SourceLocation Loc) {
1601
7.46M
    getLocalData()->RAngleLoc = Loc;
1602
7.46M
  }
1603
1604
29.6M
  unsigned getNumArgs() const {
1605
29.6M
    return getTypePtr()->getNumArgs();
1606
29.6M
  }
1607
1608
10.5M
  void setArgLocInfo(unsigned i, TemplateArgumentLocInfo AI) {
1609
10.5M
    getArgInfos()[i] = AI;
1610
10.5M
  }
1611
1612
8.01M
  TemplateArgumentLocInfo getArgLocInfo(unsigned i) const {
1613
8.01M
    return getArgInfos()[i];
1614
8.01M
  }
1615
1616
8.01M
  TemplateArgumentLoc getArgLoc(unsigned i) const {
1617
8.01M
    return TemplateArgumentLoc(getTypePtr()->getArg(i), getArgLocInfo(i));
1618
8.01M
  }
1619
1620
105M
  SourceLocation getTemplateNameLoc() const {
1621
105M
    return getLocalData()->NameLoc;
1622
105M
  }
1623
1624
7.46M
  void setTemplateNameLoc(SourceLocation Loc) {
1625
7.46M
    getLocalData()->NameLoc = Loc;
1626
7.46M
  }
1627
1628
  /// - Copy the location information from the given info.
1629
873k
  void copy(TemplateSpecializationTypeLoc Loc) {
1630
873k
    unsigned size = getFullDataSize();
1631
873k
    assert(size == Loc.getFullDataSize());
1632
873k
1633
873k
    // We're potentially copying Expr references here.  We don't
1634
873k
    // bother retaining them because TypeSourceInfos live forever, so
1635
873k
    // as long as the Expr was retained when originally written into
1636
873k
    // the TypeLoc, we're okay.
1637
873k
    memcpy(Data, Loc.Data, size);
1638
873k
  }
1639
1640
99.8M
  SourceRange getLocalSourceRange() const {
1641
99.8M
    if (getTemplateKeywordLoc().isValid())
1642
5.95M
      return SourceRange(getTemplateKeywordLoc(), getRAngleLoc());
1643
93.8M
    else
1644
93.8M
      return SourceRange(getTemplateNameLoc(), getRAngleLoc());
1645
99.8M
  }
1646
1647
718k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1648
718k
    setTemplateKeywordLoc(Loc);
1649
718k
    setTemplateNameLoc(Loc);
1650
718k
    setLAngleLoc(Loc);
1651
718k
    setRAngleLoc(Loc);
1652
718k
    initializeArgLocs(Context, getNumArgs(), getTypePtr()->getArgs(),
1653
718k
                      getArgInfos(), Loc);
1654
718k
  }
1655
1656
  static void initializeArgLocs(ASTContext &Context, unsigned NumArgs,
1657
                                const TemplateArgument *Args,
1658
                                TemplateArgumentLocInfo *ArgInfos,
1659
                                SourceLocation Loc);
1660
1661
22.3M
  unsigned getExtraLocalDataSize() const {
1662
22.3M
    return getNumArgs() * sizeof(TemplateArgumentLocInfo);
1663
22.3M
  }
1664
1665
66.5M
  unsigned getExtraLocalDataAlignment() const {
1666
66.5M
    return alignof(TemplateArgumentLocInfo);
1667
66.5M
  }
1668
1669
private:
1670
19.3M
  TemplateArgumentLocInfo *getArgInfos() const {
1671
19.3M
    return static_cast<TemplateArgumentLocInfo*>(getExtraLocalData());
1672
19.3M
  }
1673
};
1674
1675
struct DependentAddressSpaceLocInfo {
1676
  Expr *ExprOperand;
1677
  SourceRange OperandParens;
1678
  SourceLocation AttrLoc;
1679
};
1680
1681
class DependentAddressSpaceTypeLoc
1682
    : public ConcreteTypeLoc<UnqualTypeLoc,
1683
                             DependentAddressSpaceTypeLoc,
1684
                             DependentAddressSpaceType,
1685
                             DependentAddressSpaceLocInfo> {
1686
public:
1687
  /// The location of the attribute name, i.e.
1688
  ///    int * __attribute__((address_space(11)))
1689
  ///                         ^~~~~~~~~~~~~
1690
54
  SourceLocation getAttrNameLoc() const {
1691
54
    return getLocalData()->AttrLoc;
1692
54
  }
1693
54
  void setAttrNameLoc(SourceLocation loc) {
1694
54
    getLocalData()->AttrLoc = loc;
1695
54
  }
1696
1697
  /// The attribute's expression operand, if it has one.
1698
  ///    int * __attribute__((address_space(11)))
1699
  ///                                       ^~
1700
10
  Expr *getAttrExprOperand() const {
1701
10
    return getLocalData()->ExprOperand;
1702
10
  }
1703
54
  void setAttrExprOperand(Expr *e) {
1704
54
    getLocalData()->ExprOperand = e;
1705
54
  }
1706
1707
  /// The location of the parentheses around the operand, if there is
1708
  /// an operand.
1709
  ///    int * __attribute__((address_space(11)))
1710
  ///                                      ^  ^
1711
54
  SourceRange getAttrOperandParensRange() const {
1712
54
    return getLocalData()->OperandParens;
1713
54
  }
1714
54
  void setAttrOperandParensRange(SourceRange range) {
1715
54
    getLocalData()->OperandParens = range;
1716
54
  }
1717
1718
44
  SourceRange getLocalSourceRange() const {
1719
44
    SourceRange range(getAttrNameLoc());
1720
44
    range.setEnd(getAttrOperandParensRange().getEnd());
1721
44
    return range;
1722
44
  }
1723
1724
  ///  Returns the type before the address space attribute application
1725
  ///  area.
1726
  ///    int * __attribute__((address_space(11))) *
1727
  ///    ^   ^
1728
374
  QualType getInnerType() const {
1729
374
    return this->getTypePtr()->getPointeeType();
1730
374
  }
1731
1732
1
  TypeLoc getPointeeTypeLoc() const {
1733
1
    return this->getInnerTypeLoc();
1734
1
  }
1735
1736
49
  void initializeLocal(ASTContext &Context, SourceLocation loc) {
1737
49
    setAttrNameLoc(loc);
1738
49
    setAttrOperandParensRange(SourceRange(loc));
1739
49
    setAttrExprOperand(getTypePtr()->getAddrSpaceExpr());
1740
49
  }
1741
};
1742
1743
//===----------------------------------------------------------------------===//
1744
//
1745
//  All of these need proper implementations.
1746
//
1747
//===----------------------------------------------------------------------===//
1748
1749
// FIXME: size expression and attribute locations (or keyword if we
1750
// ever fully support altivec syntax).
1751
class VectorTypeLoc : public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
1752
                                                       VectorTypeLoc,
1753
                                                       VectorType> {
1754
};
1755
1756
// FIXME: size expression and attribute locations (or keyword if we
1757
// ever fully support altivec syntax).
1758
class DependentVectorTypeLoc
1759
    : public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
1760
                                       DependentVectorTypeLoc,
1761
                                       DependentVectorType> {};
1762
1763
// FIXME: size expression and attribute locations.
1764
class ExtVectorTypeLoc : public InheritingConcreteTypeLoc<VectorTypeLoc,
1765
                                                          ExtVectorTypeLoc,
1766
                                                          ExtVectorType> {
1767
};
1768
1769
// FIXME: attribute locations.
1770
// For some reason, this isn't a subtype of VectorType.
1771
class DependentSizedExtVectorTypeLoc :
1772
    public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
1773
                                     DependentSizedExtVectorTypeLoc,
1774
                                     DependentSizedExtVectorType> {
1775
};
1776
1777
// FIXME: location of the '_Complex' keyword.
1778
class ComplexTypeLoc : public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
1779
                                                        ComplexTypeLoc,
1780
                                                        ComplexType> {
1781
};
1782
1783
struct TypeofLocInfo {
1784
  SourceLocation TypeofLoc;
1785
  SourceLocation LParenLoc;
1786
  SourceLocation RParenLoc;
1787
};
1788
1789
struct TypeOfExprTypeLocInfo : public TypeofLocInfo {
1790
};
1791
1792
struct TypeOfTypeLocInfo : public TypeofLocInfo {
1793
  TypeSourceInfo* UnderlyingTInfo;
1794
};
1795
1796
template <class Derived, class TypeClass, class LocalData = TypeofLocInfo>
1797
class TypeofLikeTypeLoc
1798
  : public ConcreteTypeLoc<UnqualTypeLoc, Derived, TypeClass, LocalData> {
1799
public:
1800
6.84k
  SourceLocation getTypeofLoc() const {
1801
6.84k
    return this->getLocalData()->TypeofLoc;
1802
6.84k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getTypeofLoc() const
Line
Count
Source
1800
73
  SourceLocation getTypeofLoc() const {
1801
73
    return this->getLocalData()->TypeofLoc;
1802
73
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getTypeofLoc() const
Line
Count
Source
1800
6.77k
  SourceLocation getTypeofLoc() const {
1801
6.77k
    return this->getLocalData()->TypeofLoc;
1802
6.77k
  }
1803
1804
3.17k
  void setTypeofLoc(SourceLocation Loc) {
1805
3.17k
    this->getLocalData()->TypeofLoc = Loc;
1806
3.17k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::setTypeofLoc(clang::SourceLocation)
Line
Count
Source
1804
3.07k
  void setTypeofLoc(SourceLocation Loc) {
1805
3.07k
    this->getLocalData()->TypeofLoc = Loc;
1806
3.07k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::setTypeofLoc(clang::SourceLocation)
Line
Count
Source
1804
107
  void setTypeofLoc(SourceLocation Loc) {
1805
107
    this->getLocalData()->TypeofLoc = Loc;
1806
107
  }
1807
1808
344
  SourceLocation getLParenLoc() const {
1809
344
    return this->getLocalData()->LParenLoc;
1810
344
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getLParenLoc() const
Line
Count
Source
1808
324
  SourceLocation getLParenLoc() const {
1809
324
    return this->getLocalData()->LParenLoc;
1810
324
  }
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getLParenLoc() const
Line
Count
Source
1808
20
  SourceLocation getLParenLoc() const {
1809
20
    return this->getLocalData()->LParenLoc;
1810
20
  }
1811
1812
3.17k
  void setLParenLoc(SourceLocation Loc) {
1813
3.17k
    this->getLocalData()->LParenLoc = Loc;
1814
3.17k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::setLParenLoc(clang::SourceLocation)
Line
Count
Source
1812
3.07k
  void setLParenLoc(SourceLocation Loc) {
1813
3.07k
    this->getLocalData()->LParenLoc = Loc;
1814
3.07k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::setLParenLoc(clang::SourceLocation)
Line
Count
Source
1812
107
  void setLParenLoc(SourceLocation Loc) {
1813
107
    this->getLocalData()->LParenLoc = Loc;
1814
107
  }
1815
1816
12.8k
  SourceLocation getRParenLoc() const {
1817
12.8k
    return this->getLocalData()->RParenLoc;
1818
12.8k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getRParenLoc() const
Line
Count
Source
1816
73
  SourceLocation getRParenLoc() const {
1817
73
    return this->getLocalData()->RParenLoc;
1818
73
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getRParenLoc() const
Line
Count
Source
1816
12.7k
  SourceLocation getRParenLoc() const {
1817
12.7k
    return this->getLocalData()->RParenLoc;
1818
12.7k
  }
1819
1820
3.17k
  void setRParenLoc(SourceLocation Loc) {
1821
3.17k
    this->getLocalData()->RParenLoc = Loc;
1822
3.17k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::setRParenLoc(clang::SourceLocation)
Line
Count
Source
1820
3.07k
  void setRParenLoc(SourceLocation Loc) {
1821
3.07k
    this->getLocalData()->RParenLoc = Loc;
1822
3.07k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::setRParenLoc(clang::SourceLocation)
Line
Count
Source
1820
107
  void setRParenLoc(SourceLocation Loc) {
1821
107
    this->getLocalData()->RParenLoc = Loc;
1822
107
  }
1823
1824
  SourceRange getParensRange() const {
1825
    return SourceRange(getLParenLoc(), getRParenLoc());
1826
  }
1827
1828
2.85k
  void setParensRange(SourceRange range) {
1829
2.85k
      setLParenLoc(range.getBegin());
1830
2.85k
      setRParenLoc(range.getEnd());
1831
2.85k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::setParensRange(clang::SourceRange)
Line
Count
Source
1828
2.76k
  void setParensRange(SourceRange range) {
1829
2.76k
      setLParenLoc(range.getBegin());
1830
2.76k
      setRParenLoc(range.getEnd());
1831
2.76k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::setParensRange(clang::SourceRange)
Line
Count
Source
1828
89
  void setParensRange(SourceRange range) {
1829
89
      setLParenLoc(range.getBegin());
1830
89
      setRParenLoc(range.getEnd());
1831
89
  }
1832
1833
53
  SourceRange getLocalSourceRange() const {
1834
53
    return SourceRange(getTypeofLoc(), getRParenLoc());
1835
53
  }
1836
1837
4
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1838
4
    setTypeofLoc(Loc);
1839
4
    setLParenLoc(Loc);
1840
4
    setRParenLoc(Loc);
1841
4
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation)
Line
Count
Source
1837
2
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1838
2
    setTypeofLoc(Loc);
1839
2
    setLParenLoc(Loc);
1840
2
    setRParenLoc(Loc);
1841
2
  }
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation)
Line
Count
Source
1837
2