Coverage Report

Created: 2019-02-21 13:17

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/tools/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/Attr.h"
18
#include "clang/AST/Decl.h"
19
#include "clang/AST/NestedNameSpecifier.h"
20
#include "clang/AST/TemplateBase.h"
21
#include "clang/AST/Type.h"
22
#include "clang/Basic/LLVM.h"
23
#include "clang/Basic/SourceLocation.h"
24
#include "clang/Basic/Specifiers.h"
25
#include "llvm/ADT/ArrayRef.h"
26
#include "llvm/Support/Casting.h"
27
#include "llvm/Support/Compiler.h"
28
#include "llvm/Support/MathExtras.h"
29
#include <algorithm>
30
#include <cassert>
31
#include <cstdint>
32
#include <cstring>
33
34
namespace clang {
35
36
class ASTContext;
37
class CXXRecordDecl;
38
class Expr;
39
class ObjCInterfaceDecl;
40
class ObjCProtocolDecl;
41
class ObjCTypeParamDecl;
42
class TemplateTypeParmDecl;
43
class UnqualTypeLoc;
44
class UnresolvedUsingTypenameDecl;
45
46
// Predeclare all the type nodes.
47
#define ABSTRACT_TYPELOC(Class, Base)
48
#define TYPELOC(Class, Base) \
49
  class Class##TypeLoc;
50
#include "clang/AST/TypeLocNodes.def"
51
52
/// Base wrapper for a particular "section" of type source info.
53
///
54
/// A client should use the TypeLoc subclasses through castAs()/getAs()
55
/// in order to get at the actual information.
56
0
class TypeLoc {
57
protected:
58
  // The correctness of this relies on the property that, for Type *Ty,
59
  //   QualType(Ty, 0).getAsOpaquePtr() == (void*) Ty
60
  const void *Ty = nullptr;
61
  void *Data = nullptr;
62
63
public:
64
982M
  TypeLoc() = default;
65
  TypeLoc(QualType ty, void *opaqueData)
66
380M
      : Ty(ty.getAsOpaquePtr()), Data(opaqueData) {}
67
  TypeLoc(const Type *ty, void *opaqueData)
68
47.2M
      : Ty(ty), Data(opaqueData) {}
69
70
  /// Convert to the specified TypeLoc type, asserting that this TypeLoc
71
  /// is of the desired type.
72
  ///
73
  /// \pre T::isKind(*this)
74
  template<typename T>
75
705M
  T castAs() const {
76
705M
    assert(T::isKind(*this));
77
705M
    T t;
78
705M
    TypeLoc& tl = t;
79
705M
    tl = *this;
80
705M
    return t;
81
705M
  }
clang::FunctionTypeLoc clang::TypeLoc::castAs<clang::FunctionTypeLoc>() const
Line
Count
Source
75
5.83M
  T castAs() const {
76
5.83M
    assert(T::isKind(*this));
77
5.83M
    T t;
78
5.83M
    TypeLoc& tl = t;
79
5.83M
    tl = *this;
80
5.83M
    return t;
81
5.83M
  }
clang::UnqualTypeLoc clang::TypeLoc::castAs<clang::UnqualTypeLoc>() const
Line
Count
Source
75
39.1M
  T castAs() const {
76
39.1M
    assert(T::isKind(*this));
77
39.1M
    T t;
78
39.1M
    TypeLoc& tl = t;
79
39.1M
    tl = *this;
80
39.1M
    return t;
81
39.1M
  }
clang::QualifiedTypeLoc clang::TypeLoc::castAs<clang::QualifiedTypeLoc>() const
Line
Count
Source
75
21.2M
  T castAs() const {
76
21.2M
    assert(T::isKind(*this));
77
21.2M
    T t;
78
21.2M
    TypeLoc& tl = t;
79
21.2M
    tl = *this;
80
21.2M
    return t;
81
21.2M
  }
clang::BuiltinTypeLoc clang::TypeLoc::castAs<clang::BuiltinTypeLoc>() const
Line
Count
Source
75
72.7M
  T castAs() const {
76
72.7M
    assert(T::isKind(*this));
77
72.7M
    T t;
78
72.7M
    TypeLoc& tl = t;
79
72.7M
    tl = *this;
80
72.7M
    return t;
81
72.7M
  }
clang::ComplexTypeLoc clang::TypeLoc::castAs<clang::ComplexTypeLoc>() const
Line
Count
Source
75
60.7k
  T castAs() const {
76
60.7k
    assert(T::isKind(*this));
77
60.7k
    T t;
78
60.7k
    TypeLoc& tl = t;
79
60.7k
    tl = *this;
80
60.7k
    return t;
81
60.7k
  }
clang::PointerTypeLoc clang::TypeLoc::castAs<clang::PointerTypeLoc>() const
Line
Count
Source
75
31.7M
  T castAs() const {
76
31.7M
    assert(T::isKind(*this));
77
31.7M
    T t;
78
31.7M
    TypeLoc& tl = t;
79
31.7M
    tl = *this;
80
31.7M
    return t;
81
31.7M
  }
clang::BlockPointerTypeLoc clang::TypeLoc::castAs<clang::BlockPointerTypeLoc>() const
Line
Count
Source
75
129k
  T castAs() const {
76
129k
    assert(T::isKind(*this));
77
129k
    T t;
78
129k
    TypeLoc& tl = t;
79
129k
    tl = *this;
80
129k
    return t;
81
129k
  }
clang::LValueReferenceTypeLoc clang::TypeLoc::castAs<clang::LValueReferenceTypeLoc>() const
Line
Count
Source
75
16.5M
  T castAs() const {
76
16.5M
    assert(T::isKind(*this));
77
16.5M
    T t;
78
16.5M
    TypeLoc& tl = t;
79
16.5M
    tl = *this;
80
16.5M
    return t;
81
16.5M
  }
clang::RValueReferenceTypeLoc clang::TypeLoc::castAs<clang::RValueReferenceTypeLoc>() const
Line
Count
Source
75
4.87M
  T castAs() const {
76
4.87M
    assert(T::isKind(*this));
77
4.87M
    T t;
78
4.87M
    TypeLoc& tl = t;
79
4.87M
    tl = *this;
80
4.87M
    return t;
81
4.87M
  }
clang::MemberPointerTypeLoc clang::TypeLoc::castAs<clang::MemberPointerTypeLoc>() const
Line
Count
Source
75
466k
  T castAs() const {
76
466k
    assert(T::isKind(*this));
77
466k
    T t;
78
466k
    TypeLoc& tl = t;
79
466k
    tl = *this;
80
466k
    return t;
81
466k
  }
clang::ConstantArrayTypeLoc clang::TypeLoc::castAs<clang::ConstantArrayTypeLoc>() const
Line
Count
Source
75
1.70M
  T castAs() const {
76
1.70M
    assert(T::isKind(*this));
77
1.70M
    T t;
78
1.70M
    TypeLoc& tl = t;
79
1.70M
    tl = *this;
80
1.70M
    return t;
81
1.70M
  }
clang::IncompleteArrayTypeLoc clang::TypeLoc::castAs<clang::IncompleteArrayTypeLoc>() const
Line
Count
Source
75
329k
  T castAs() const {
76
329k
    assert(T::isKind(*this));
77
329k
    T t;
78
329k
    TypeLoc& tl = t;
79
329k
    tl = *this;
80
329k
    return t;
81
329k
  }
clang::VariableArrayTypeLoc clang::TypeLoc::castAs<clang::VariableArrayTypeLoc>() const
Line
Count
Source
75
84.5k
  T castAs() const {
76
84.5k
    assert(T::isKind(*this));
77
84.5k
    T t;
78
84.5k
    TypeLoc& tl = t;
79
84.5k
    tl = *this;
80
84.5k
    return t;
81
84.5k
  }
clang::DependentSizedArrayTypeLoc clang::TypeLoc::castAs<clang::DependentSizedArrayTypeLoc>() const
Line
Count
Source
75
307k
  T castAs() const {
76
307k
    assert(T::isKind(*this));
77
307k
    T t;
78
307k
    TypeLoc& tl = t;
79
307k
    tl = *this;
80
307k
    return t;
81
307k
  }
clang::DependentSizedExtVectorTypeLoc clang::TypeLoc::castAs<clang::DependentSizedExtVectorTypeLoc>() const
Line
Count
Source
75
322
  T castAs() const {
76
322
    assert(T::isKind(*this));
77
322
    T t;
78
322
    TypeLoc& tl = t;
79
322
    tl = *this;
80
322
    return t;
81
322
  }
clang::DependentAddressSpaceTypeLoc clang::TypeLoc::castAs<clang::DependentAddressSpaceTypeLoc>() const
Line
Count
Source
75
629
  T castAs() const {
76
629
    assert(T::isKind(*this));
77
629
    T t;
78
629
    TypeLoc& tl = t;
79
629
    tl = *this;
80
629
    return t;
81
629
  }
clang::VectorTypeLoc clang::TypeLoc::castAs<clang::VectorTypeLoc>() const
Line
Count
Source
75
1.77M
  T castAs() const {
76
1.77M
    assert(T::isKind(*this));
77
1.77M
    T t;
78
1.77M
    TypeLoc& tl = t;
79
1.77M
    tl = *this;
80
1.77M
    return t;
81
1.77M
  }
clang::DependentVectorTypeLoc clang::TypeLoc::castAs<clang::DependentVectorTypeLoc>() const
Line
Count
Source
75
333
  T castAs() const {
76
333
    assert(T::isKind(*this));
77
333
    T t;
78
333
    TypeLoc& tl = t;
79
333
    tl = *this;
80
333
    return t;
81
333
  }
clang::ExtVectorTypeLoc clang::TypeLoc::castAs<clang::ExtVectorTypeLoc>() const
Line
Count
Source
75
10.2k
  T castAs() const {
76
10.2k
    assert(T::isKind(*this));
77
10.2k
    T t;
78
10.2k
    TypeLoc& tl = t;
79
10.2k
    tl = *this;
80
10.2k
    return t;
81
10.2k
  }
clang::FunctionProtoTypeLoc clang::TypeLoc::castAs<clang::FunctionProtoTypeLoc>() const
Line
Count
Source
75
48.8M
  T castAs() const {
76
48.8M
    assert(T::isKind(*this));
77
48.8M
    T t;
78
48.8M
    TypeLoc& tl = t;
79
48.8M
    tl = *this;
80
48.8M
    return t;
81
48.8M
  }
clang::FunctionNoProtoTypeLoc clang::TypeLoc::castAs<clang::FunctionNoProtoTypeLoc>() const
Line
Count
Source
75
193k
  T castAs() const {
76
193k
    assert(T::isKind(*this));
77
193k
    T t;
78
193k
    TypeLoc& tl = t;
79
193k
    tl = *this;
80
193k
    return t;
81
193k
  }
clang::UnresolvedUsingTypeLoc clang::TypeLoc::castAs<clang::UnresolvedUsingTypeLoc>() const
Line
Count
Source
75
394
  T castAs() const {
76
394
    assert(T::isKind(*this));
77
394
    T t;
78
394
    TypeLoc& tl = t;
79
394
    tl = *this;
80
394
    return t;
81
394
  }
clang::ParenTypeLoc clang::TypeLoc::castAs<clang::ParenTypeLoc>() const
Line
Count
Source
75
1.85M
  T castAs() const {
76
1.85M
    assert(T::isKind(*this));
77
1.85M
    T t;
78
1.85M
    TypeLoc& tl = t;
79
1.85M
    tl = *this;
80
1.85M
    return t;
81
1.85M
  }
clang::TypedefTypeLoc clang::TypeLoc::castAs<clang::TypedefTypeLoc>() const
Line
Count
Source
75
113M
  T castAs() const {
76
113M
    assert(T::isKind(*this));
77
113M
    T t;
78
113M
    TypeLoc& tl = t;
79
113M
    tl = *this;
80
113M
    return t;
81
113M
  }
clang::AdjustedTypeLoc clang::TypeLoc::castAs<clang::AdjustedTypeLoc>() const
Line
Count
Source
75
43
  T castAs() const {
76
43
    assert(T::isKind(*this));
77
43
    T t;
78
43
    TypeLoc& tl = t;
79
43
    tl = *this;
80
43
    return t;
81
43
  }
clang::DecayedTypeLoc clang::TypeLoc::castAs<clang::DecayedTypeLoc>() const
Line
Count
Source
75
4.93k
  T castAs() const {
76
4.93k
    assert(T::isKind(*this));
77
4.93k
    T t;
78
4.93k
    TypeLoc& tl = t;
79
4.93k
    tl = *this;
80
4.93k
    return t;
81
4.93k
  }
clang::TypeOfExprTypeLoc clang::TypeLoc::castAs<clang::TypeOfExprTypeLoc>() const
Line
Count
Source
75
28.4k
  T castAs() const {
76
28.4k
    assert(T::isKind(*this));
77
28.4k
    T t;
78
28.4k
    TypeLoc& tl = t;
79
28.4k
    tl = *this;
80
28.4k
    return t;
81
28.4k
  }
clang::TypeOfTypeLoc clang::TypeLoc::castAs<clang::TypeOfTypeLoc>() const
Line
Count
Source
75
542
  T castAs() const {
76
542
    assert(T::isKind(*this));
77
542
    T t;
78
542
    TypeLoc& tl = t;
79
542
    tl = *this;
80
542
    return t;
81
542
  }
clang::DecltypeTypeLoc clang::TypeLoc::castAs<clang::DecltypeTypeLoc>() const
Line
Count
Source
75
2.00M
  T castAs() const {
76
2.00M
    assert(T::isKind(*this));
77
2.00M
    T t;
78
2.00M
    TypeLoc& tl = t;
79
2.00M
    tl = *this;
80
2.00M
    return t;
81
2.00M
  }
clang::UnaryTransformTypeLoc clang::TypeLoc::castAs<clang::UnaryTransformTypeLoc>() const
Line
Count
Source
75
2.89k
  T castAs() const {
76
2.89k
    assert(T::isKind(*this));
77
2.89k
    T t;
78
2.89k
    TypeLoc& tl = t;
79
2.89k
    tl = *this;
80
2.89k
    return t;
81
2.89k
  }
clang::RecordTypeLoc clang::TypeLoc::castAs<clang::RecordTypeLoc>() const
Line
Count
Source
75
36.6M
  T castAs() const {
76
36.6M
    assert(T::isKind(*this));
77
36.6M
    T t;
78
36.6M
    TypeLoc& tl = t;
79
36.6M
    tl = *this;
80
36.6M
    return t;
81
36.6M
  }
clang::EnumTypeLoc clang::TypeLoc::castAs<clang::EnumTypeLoc>() const
Line
Count
Source
75
1.16M
  T castAs() const {
76
1.16M
    assert(T::isKind(*this));
77
1.16M
    T t;
78
1.16M
    TypeLoc& tl = t;
79
1.16M
    tl = *this;
80
1.16M
    return t;
81
1.16M
  }
clang::ElaboratedTypeLoc clang::TypeLoc::castAs<clang::ElaboratedTypeLoc>() const
Line
Count
Source
75
12.6M
  T castAs() const {
76
12.6M
    assert(T::isKind(*this));
77
12.6M
    T t;
78
12.6M
    TypeLoc& tl = t;
79
12.6M
    tl = *this;
80
12.6M
    return t;
81
12.6M
  }
clang::AttributedTypeLoc clang::TypeLoc::castAs<clang::AttributedTypeLoc>() const
Line
Count
Source
75
979k
  T castAs() const {
76
979k
    assert(T::isKind(*this));
77
979k
    T t;
78
979k
    TypeLoc& tl = t;
79
979k
    tl = *this;
80
979k
    return t;
81
979k
  }
clang::TemplateTypeParmTypeLoc clang::TypeLoc::castAs<clang::TemplateTypeParmTypeLoc>() const
Line
Count
Source
75
103M
  T castAs() const {
76
103M
    assert(T::isKind(*this));
77
103M
    T t;
78
103M
    TypeLoc& tl = t;
79
103M
    tl = *this;
80
103M
    return t;
81
103M
  }
clang::SubstTemplateTypeParmTypeLoc clang::TypeLoc::castAs<clang::SubstTemplateTypeParmTypeLoc>() const
Line
Count
Source
75
28.9M
  T castAs() const {
76
28.9M
    assert(T::isKind(*this));
77
28.9M
    T t;
78
28.9M
    TypeLoc& tl = t;
79
28.9M
    tl = *this;
80
28.9M
    return t;
81
28.9M
  }
clang::SubstTemplateTypeParmPackTypeLoc clang::TypeLoc::castAs<clang::SubstTemplateTypeParmPackTypeLoc>() const
Line
Count
Source
75
46.6k
  T castAs() const {
76
46.6k
    assert(T::isKind(*this));
77
46.6k
    T t;
78
46.6k
    TypeLoc& tl = t;
79
46.6k
    tl = *this;
80
46.6k
    return t;
81
46.6k
  }
clang::TemplateSpecializationTypeLoc clang::TypeLoc::castAs<clang::TemplateSpecializationTypeLoc>() const
Line
Count
Source
75
112M
  T castAs() const {
76
112M
    assert(T::isKind(*this));
77
112M
    T t;
78
112M
    TypeLoc& tl = t;
79
112M
    tl = *this;
80
112M
    return t;
81
112M
  }
clang::AutoTypeLoc clang::TypeLoc::castAs<clang::AutoTypeLoc>() const
Line
Count
Source
75
493k
  T castAs() const {
76
493k
    assert(T::isKind(*this));
77
493k
    T t;
78
493k
    TypeLoc& tl = t;
79
493k
    tl = *this;
80
493k
    return t;
81
493k
  }
clang::DeducedTemplateSpecializationTypeLoc clang::TypeLoc::castAs<clang::DeducedTemplateSpecializationTypeLoc>() const
Line
Count
Source
75
15.0k
  T castAs() const {
76
15.0k
    assert(T::isKind(*this));
77
15.0k
    T t;
78
15.0k
    TypeLoc& tl = t;
79
15.0k
    tl = *this;
80
15.0k
    return t;
81
15.0k
  }
clang::InjectedClassNameTypeLoc clang::TypeLoc::castAs<clang::InjectedClassNameTypeLoc>() const
Line
Count
Source
75
10.4M
  T castAs() const {
76
10.4M
    assert(T::isKind(*this));
77
10.4M
    T t;
78
10.4M
    TypeLoc& tl = t;
79
10.4M
    tl = *this;
80
10.4M
    return t;
81
10.4M
  }
clang::DependentNameTypeLoc clang::TypeLoc::castAs<clang::DependentNameTypeLoc>() const
Line
Count
Source
75
22.3M
  T castAs() const {
76
22.3M
    assert(T::isKind(*this));
77
22.3M
    T t;
78
22.3M
    TypeLoc& tl = t;
79
22.3M
    tl = *this;
80
22.3M
    return t;
81
22.3M
  }
clang::DependentTemplateSpecializationTypeLoc clang::TypeLoc::castAs<clang::DependentTemplateSpecializationTypeLoc>() const
Line
Count
Source
75
221k
  T castAs() const {
76
221k
    assert(T::isKind(*this));
77
221k
    T t;
78
221k
    TypeLoc& tl = t;
79
221k
    tl = *this;
80
221k
    return t;
81
221k
  }
clang::PackExpansionTypeLoc clang::TypeLoc::castAs<clang::PackExpansionTypeLoc>() const
Line
Count
Source
75
1.50M
  T castAs() const {
76
1.50M
    assert(T::isKind(*this));
77
1.50M
    T t;
78
1.50M
    TypeLoc& tl = t;
79
1.50M
    tl = *this;
80
1.50M
    return t;
81
1.50M
  }
clang::ObjCTypeParamTypeLoc clang::TypeLoc::castAs<clang::ObjCTypeParamTypeLoc>() const
Line
Count
Source
75
49.8k
  T castAs() const {
76
49.8k
    assert(T::isKind(*this));
77
49.8k
    T t;
78
49.8k
    TypeLoc& tl = t;
79
49.8k
    tl = *this;
80
49.8k
    return t;
81
49.8k
  }
clang::ObjCObjectTypeLoc clang::TypeLoc::castAs<clang::ObjCObjectTypeLoc>() const
Line
Count
Source
75
239k
  T castAs() const {
76
239k
    assert(T::isKind(*this));
77
239k
    T t;
78
239k
    TypeLoc& tl = t;
79
239k
    tl = *this;
80
239k
    return t;
81
239k
  }
clang::ObjCInterfaceTypeLoc clang::TypeLoc::castAs<clang::ObjCInterfaceTypeLoc>() const
Line
Count
Source
75
785k
  T castAs() const {
76
785k
    assert(T::isKind(*this));
77
785k
    T t;
78
785k
    TypeLoc& tl = t;
79
785k
    tl = *this;
80
785k
    return t;
81
785k
  }
clang::ObjCObjectPointerTypeLoc clang::TypeLoc::castAs<clang::ObjCObjectPointerTypeLoc>() const
Line
Count
Source
75
660k
  T castAs() const {
76
660k
    assert(T::isKind(*this));
77
660k
    T t;
78
660k
    TypeLoc& tl = t;
79
660k
    tl = *this;
80
660k
    return t;
81
660k
  }
clang::PipeTypeLoc clang::TypeLoc::castAs<clang::PipeTypeLoc>() const
Line
Count
Source
75
553
  T castAs() const {
76
553
    assert(T::isKind(*this));
77
553
    T t;
78
553
    TypeLoc& tl = t;
79
553
    tl = *this;
80
553
    return t;
81
553
  }
clang::AtomicTypeLoc clang::TypeLoc::castAs<clang::AtomicTypeLoc>() const
Line
Count
Source
75
40.4k
  T castAs() const {
76
40.4k
    assert(T::isKind(*this));
77
40.4k
    T t;
78
40.4k
    TypeLoc& tl = t;
79
40.4k
    tl = *this;
80
40.4k
    return t;
81
40.4k
  }
clang::TypeSpecTypeLoc clang::TypeLoc::castAs<clang::TypeSpecTypeLoc>() const
Line
Count
Source
75
2.14M
  T castAs() const {
76
2.14M
    assert(T::isKind(*this));
77
2.14M
    T t;
78
2.14M
    TypeLoc& tl = t;
79
2.14M
    tl = *this;
80
2.14M
    return t;
81
2.14M
  }
clang::ArrayTypeLoc clang::TypeLoc::castAs<clang::ArrayTypeLoc>() const
Line
Count
Source
75
366k
  T castAs() const {
76
366k
    assert(T::isKind(*this));
77
366k
    T t;
78
366k
    TypeLoc& tl = t;
79
366k
    tl = *this;
80
366k
    return t;
81
366k
  }
clang::ReferenceTypeLoc clang::TypeLoc::castAs<clang::ReferenceTypeLoc>() const
Line
Count
Source
75
102
  T castAs() const {
76
102
    assert(T::isKind(*this));
77
102
    T t;
78
102
    TypeLoc& tl = t;
79
102
    tl = *this;
80
102
    return t;
81
102
  }
clang::TypeLoc clang::TypeLoc::castAs<clang::TypeLoc>() const
Line
Count
Source
75
4.47M
  T castAs() const {
76
4.47M
    assert(T::isKind(*this));
77
4.47M
    T t;
78
4.47M
    TypeLoc& tl = t;
79
4.47M
    tl = *this;
80
4.47M
    return t;
81
4.47M
  }
clang::TagTypeLoc clang::TypeLoc::castAs<clang::TagTypeLoc>() const
Line
Count
Source
75
1.43M
  T castAs() const {
76
1.43M
    assert(T::isKind(*this));
77
1.43M
    T t;
78
1.43M
    TypeLoc& tl = t;
79
1.43M
    tl = *this;
80
1.43M
    return t;
81
1.43M
  }
clang::DeducedTypeLoc clang::TypeLoc::castAs<clang::DeducedTypeLoc>() const
Line
Count
Source
75
13.3k
  T castAs() const {
76
13.3k
    assert(T::isKind(*this));
77
13.3k
    T t;
78
13.3k
    TypeLoc& tl = t;
79
13.3k
    tl = *this;
80
13.3k
    return t;
81
13.3k
  }
82
83
  /// Convert to the specified TypeLoc type, returning a null TypeLoc if
84
  /// this TypeLoc is not of the desired type.
85
  template<typename T>
86
125M
  T getAs() const {
87
125M
    if (!T::isKind(*this))
88
117M
      return {};
89
7.74M
    T t;
90
7.74M
    TypeLoc& tl = t;
91
7.74M
    tl = *this;
92
7.74M
    return t;
93
7.74M
  }
clang::ParenTypeLoc clang::TypeLoc::getAs<clang::ParenTypeLoc>() const
Line
Count
Source
86
5.69M
  T getAs() const {
87
5.69M
    if (!T::isKind(*this))
88
5.69M
      return {};
89
2.74k
    T t;
90
2.74k
    TypeLoc& tl = t;
91
2.74k
    tl = *this;
92
2.74k
    return t;
93
2.74k
  }
clang::AttributedTypeLoc clang::TypeLoc::getAs<clang::AttributedTypeLoc>() const
Line
Count
Source
86
23.4M
  T getAs() const {
87
23.4M
    if (!T::isKind(*this))
88
23.2M
      return {};
89
202k
    T t;
90
202k
    TypeLoc& tl = t;
91
202k
    tl = *this;
92
202k
    return t;
93
202k
  }
clang::ElaboratedTypeLoc clang::TypeLoc::getAs<clang::ElaboratedTypeLoc>() const
Line
Count
Source
86
5.70M
  T getAs() const {
87
5.70M
    if (!T::isKind(*this))
88
5.70M
      return {};
89
430
    T t;
90
430
    TypeLoc& tl = t;
91
430
    tl = *this;
92
430
    return t;
93
430
  }
clang::AdjustedTypeLoc clang::TypeLoc::getAs<clang::AdjustedTypeLoc>() const
Line
Count
Source
86
17.5M
  T getAs() const {
87
17.5M
    if (!T::isKind(*this))
88
17.5M
      return {};
89
4
    T t;
90
4
    TypeLoc& tl = t;
91
4
    tl = *this;
92
4
    return t;
93
4
  }
clang::FunctionProtoTypeLoc clang::TypeLoc::getAs<clang::FunctionProtoTypeLoc>() const
Line
Count
Source
86
4.35M
  T getAs() const {
87
4.35M
    if (!T::isKind(*this))
88
1.17k
      return {};
89
4.35M
    T t;
90
4.35M
    TypeLoc& tl = t;
91
4.35M
    tl = *this;
92
4.35M
    return t;
93
4.35M
  }
clang::QualifiedTypeLoc clang::TypeLoc::getAs<clang::QualifiedTypeLoc>() const
Line
Count
Source
86
42.1M
  T getAs() const {
87
42.1M
    if (!T::isKind(*this))
88
39.1M
      return {};
89
3.01M
    T t;
90
3.01M
    TypeLoc& tl = t;
91
3.01M
    tl = *this;
92
3.01M
    return t;
93
3.01M
  }
clang::ArrayTypeLoc clang::TypeLoc::getAs<clang::ArrayTypeLoc>() const
Line
Count
Source
86
516
  T getAs() const {
87
516
    if (!T::isKind(*this))
88
507
      return {};
89
9
    T t;
90
9
    TypeLoc& tl = t;
91
9
    tl = *this;
92
9
    return t;
93
9
  }
clang::PointerTypeLoc clang::TypeLoc::getAs<clang::PointerTypeLoc>() const
Line
Count
Source
86
5.96k
  T getAs() const {
87
5.96k
    if (!T::isKind(*this))
88
882
      return {};
89
5.08k
    T t;
90
5.08k
    TypeLoc& tl = t;
91
5.08k
    tl = *this;
92
5.08k
    return t;
93
5.08k
  }
clang::ReferenceTypeLoc clang::TypeLoc::getAs<clang::ReferenceTypeLoc>() const
Line
Count
Source
86
863
  T getAs() const {
87
863
    if (!T::isKind(*this))
88
855
      return {};
89
8
    T t;
90
8
    TypeLoc& tl = t;
91
8
    tl = *this;
92
8
    return t;
93
8
  }
clang::TypedefTypeLoc clang::TypeLoc::getAs<clang::TypedefTypeLoc>() const
Line
Count
Source
86
688
  T getAs() const {
87
688
    if (!T::isKind(*this))
88
658
      return {};
89
30
    T t;
90
30
    TypeLoc& tl = t;
91
30
    tl = *this;
92
30
    return t;
93
30
  }
clang::ConstantArrayTypeLoc clang::TypeLoc::getAs<clang::ConstantArrayTypeLoc>() const
Line
Count
Source
86
17
  T getAs() const {
87
17
    if (!T::isKind(*this))
88
1
      return {};
89
16
    T t;
90
16
    TypeLoc& tl = t;
91
16
    tl = *this;
92
16
    return t;
93
16
  }
clang::BlockPointerTypeLoc clang::TypeLoc::getAs<clang::BlockPointerTypeLoc>() const
Line
Count
Source
86
504
  T getAs() const {
87
504
    if (!T::isKind(*this))
88
417
      return {};
89
87
    T t;
90
87
    TypeLoc& tl = t;
91
87
    tl = *this;
92
87
    return t;
93
87
  }
clang::FunctionTypeLoc clang::TypeLoc::getAs<clang::FunctionTypeLoc>() const
Line
Count
Source
86
6.21k
  T getAs() const {
87
6.21k
    if (!T::isKind(*this))
88
269
      return {};
89
5.94k
    T t;
90
5.94k
    TypeLoc& tl = t;
91
5.94k
    tl = *this;
92
5.94k
    return t;
93
5.94k
  }
clang::FunctionNoProtoTypeLoc clang::TypeLoc::getAs<clang::FunctionNoProtoTypeLoc>() const
Line
Count
Source
86
389
  T getAs() const {
87
389
    if (!T::isKind(*this))
88
3
      return {};
89
386
    T t;
90
386
    TypeLoc& tl = t;
91
386
    tl = *this;
92
386
    return t;
93
386
  }
clang::TemplateSpecializationTypeLoc clang::TypeLoc::getAs<clang::TemplateSpecializationTypeLoc>() const
Line
Count
Source
86
105k
  T getAs() const {
87
105k
    if (!T::isKind(*this))
88
245
      return {};
89
105k
    T t;
90
105k
    TypeLoc& tl = t;
91
105k
    tl = *this;
92
105k
    return t;
93
105k
  }
clang::DecayedTypeLoc clang::TypeLoc::getAs<clang::DecayedTypeLoc>() const
Line
Count
Source
86
5
  T getAs() const {
87
5
    if (!T::isKind(*this))
88
5
      return {};
89
0
    T t;
90
0
    TypeLoc& tl = t;
91
0
    tl = *this;
92
0
    return t;
93
0
  }
clang::PackExpansionTypeLoc clang::TypeLoc::getAs<clang::PackExpansionTypeLoc>() const
Line
Count
Source
86
2.52M
  T getAs() const {
87
2.52M
    if (!T::isKind(*this))
88
2.46M
      return {};
89
53.6k
    T t;
90
53.6k
    TypeLoc& tl = t;
91
53.6k
    tl = *this;
92
53.6k
    return t;
93
53.6k
  }
clang::IncompleteArrayTypeLoc clang::TypeLoc::getAs<clang::IncompleteArrayTypeLoc>() const
Line
Count
Source
86
51
  T getAs() const {
87
51
    if (!T::isKind(*this))
88
2
      return {};
89
49
    T t;
90
49
    TypeLoc& tl = t;
91
49
    tl = *this;
92
49
    return t;
93
49
  }
clang::InjectedClassNameTypeLoc clang::TypeLoc::getAs<clang::InjectedClassNameTypeLoc>() const
Line
Count
Source
86
29
  T getAs() const {
87
29
    if (!T::isKind(*this))
88
28
      return {};
89
1
    T t;
90
1
    TypeLoc& tl = t;
91
1
    tl = *this;
92
1
    return t;
93
1
  }
clang::RecordTypeLoc clang::TypeLoc::getAs<clang::RecordTypeLoc>() const
Line
Count
Source
86
28
  T getAs() const {
87
28
    if (!T::isKind(*this))
88
4
      return {};
89
24
    T t;
90
24
    TypeLoc& tl = t;
91
24
    tl = *this;
92
24
    return t;
93
24
  }
clang::DeducedTemplateSpecializationTypeLoc clang::TypeLoc::getAs<clang::DeducedTemplateSpecializationTypeLoc>() const
Line
Count
Source
86
5.48k
  T getAs() const {
87
5.48k
    if (!T::isKind(*this))
88
5.35k
      return {};
89
125
    T t;
90
125
    TypeLoc& tl = t;
91
125
    tl = *this;
92
125
    return t;
93
125
  }
clang::AtomicTypeLoc clang::TypeLoc::getAs<clang::AtomicTypeLoc>() const
Line
Count
Source
86
11.8M
  T getAs() const {
87
11.8M
    if (!T::isKind(*this))
88
11.8M
      return {};
89
8
    T t;
90
8
    TypeLoc& tl = t;
91
8
    tl = *this;
92
8
    return t;
93
8
  }
clang::DependentAddressSpaceTypeLoc clang::TypeLoc::getAs<clang::DependentAddressSpaceTypeLoc>() const
Line
Count
Source
86
11.8M
  T getAs() const {
87
11.8M
    if (!T::isKind(*this))
88
11.8M
      return {};
89
0
    T t;
90
0
    TypeLoc& tl = t;
91
0
    tl = *this;
92
0
    return t;
93
0
  }
clang::ObjCObjectPointerTypeLoc clang::TypeLoc::getAs<clang::ObjCObjectPointerTypeLoc>() const
Line
Count
Source
86
9.85k
  T getAs() const {
87
9.85k
    if (!T::isKind(*this))
88
8.19k
      return {};
89
1.65k
    T t;
90
1.65k
    TypeLoc& tl = t;
91
1.65k
    tl = *this;
92
1.65k
    return t;
93
1.65k
  }
clang::ObjCTypeParamTypeLoc clang::TypeLoc::getAs<clang::ObjCTypeParamTypeLoc>() const
Line
Count
Source
86
9.85k
  T getAs() const {
87
9.85k
    if (!T::isKind(*this))
88
9.72k
      return {};
89
133
    T t;
90
133
    TypeLoc& tl = t;
91
133
    tl = *this;
92
133
    return t;
93
133
  }
clang::MemberPointerTypeLoc clang::TypeLoc::getAs<clang::MemberPointerTypeLoc>() const
Line
Count
Source
86
412
  T getAs() const {
87
412
    if (!T::isKind(*this))
88
408
      return {};
89
4
    T t;
90
4
    TypeLoc& tl = t;
91
4
    tl = *this;
92
4
    return t;
93
4
  }
94
95
  /// Convert to the specified TypeLoc type, returning a null TypeLoc if
96
  /// this TypeLoc is not of the desired type. It will consider type
97
  /// adjustments from a type that was written as a T to another type that is
98
  /// still canonically a T (ignores parens, attributes, elaborated types, etc).
99
  template <typename T>
100
  T getAsAdjusted() const;
101
102
  /// The kinds of TypeLocs.  Equivalent to the Type::TypeClass enum,
103
  /// except it also defines a Qualified enum that corresponds to the
104
  /// QualifiedLoc class.
105
  enum TypeLocClass {
106
#define ABSTRACT_TYPE(Class, Base)
107
#define TYPE(Class, Base) \
108
    Class = Type::Class,
109
#include "clang/AST/TypeNodes.def"
110
    Qualified
111
  };
112
113
658M
  TypeLocClass getTypeLocClass() const {
114
658M
    if (getType().hasLocalQualifiers()) 
return Qualified23.5M
;
115
634M
    return (TypeLocClass) getType()->getTypeClass();
116
634M
  }
117
118
363M
  bool isNull() const { return !Ty; }
119
154M
  explicit operator bool() const { return Ty; }
120
121
  /// Returns the size of type source info data block for the given type.
122
  static unsigned getFullDataSizeForType(QualType Ty);
123
124
  /// Returns the alignment of type source info data block for
125
  /// the given type.
126
  static unsigned getLocalAlignmentForType(QualType Ty);
127
128
  /// Get the type for which this source info wrapper provides
129
  /// information.
130
1.53G
  QualType getType() const {
131
1.53G
    return QualType::getFromOpaquePtr(Ty);
132
1.53G
  }
133
134
119M
  const Type *getTypePtr() const {
135
119M
    return QualType::getFromOpaquePtr(Ty).getTypePtr();
136
119M
  }
137
138
  /// Get the pointer where source information is stored.
139
21.6M
  void *getOpaqueData() const {
140
21.6M
    return Data;
141
21.6M
  }
142
143
  /// Get the begin source location.
144
  SourceLocation getBeginLoc() const;
145
146
  /// Get the end source location.
147
  SourceLocation getEndLoc() const;
148
149
  /// Get the full source range.
150
14.3M
  SourceRange getSourceRange() const LLVM_READONLY {
151
14.3M
    return SourceRange(getBeginLoc(), getEndLoc());
152
14.3M
  }
153
154
155
  /// Get the local source range.
156
165M
  SourceRange getLocalSourceRange() const {
157
165M
    return getLocalSourceRangeImpl(*this);
158
165M
  }
159
160
  /// Returns the size of the type source info data block.
161
13.3M
  unsigned getFullDataSize() const {
162
13.3M
    return getFullDataSizeForType(getType());
163
13.3M
  }
164
165
  /// Get the next TypeLoc pointed by this TypeLoc, e.g for "int*" the
166
  /// TypeLoc is a PointerLoc and next TypeLoc is for "int".
167
168M
  TypeLoc getNextTypeLoc() const {
168
168M
    return getNextTypeLocImpl(*this);
169
168M
  }
170
171
  /// Skips past any qualifiers, if this is qualified.
172
  UnqualTypeLoc getUnqualifiedLoc() const; // implemented in this header
173
174
  TypeLoc IgnoreParens() const;
175
176
  /// Find a type with the location of an explicit type qualifier.
177
  ///
178
  /// The result, if non-null, will be one of:
179
  ///   QualifiedTypeLoc
180
  ///   AtomicTypeLoc
181
  ///   AttributedTypeLoc, for those type attributes that behave as qualifiers
182
  TypeLoc findExplicitQualifierLoc() const;
183
184
  /// Initializes this to state that every location in this
185
  /// type is the given location.
186
  ///
187
  /// This method exists to provide a simple transition for code that
188
  /// relies on location-less types.
189
8.60M
  void initialize(ASTContext &Context, SourceLocation Loc) const {
190
8.60M
    initializeImpl(Context, *this, Loc);
191
8.60M
  }
192
193
  /// Initializes this by copying its information from another
194
  /// TypeLoc of the same type.
195
41.6k
  void initializeFullCopy(TypeLoc Other) {
196
41.6k
    assert(getType() == Other.getType());
197
41.6k
    copy(Other);
198
41.6k
  }
199
200
  /// Initializes this by copying its information from another
201
  /// TypeLoc of the same type.  The given size must be the full data
202
  /// size.
203
570
  void initializeFullCopy(TypeLoc Other, unsigned Size) {
204
570
    assert(getType() == Other.getType());
205
570
    assert(getFullDataSize() == Size);
206
570
    copy(Other);
207
570
  }
208
209
  /// Copies the other type loc into this one.
210
  void copy(TypeLoc other);
211
212
16.8k
  friend bool operator==(const TypeLoc &LHS, const TypeLoc &RHS) {
213
16.8k
    return LHS.Ty == RHS.Ty && 
LHS.Data == RHS.Data6.61k
;
214
16.8k
  }
215
216
795
  friend bool operator!=(const TypeLoc &LHS, const TypeLoc &RHS) {
217
795
    return !(LHS == RHS);
218
795
  }
219
220
  /// Find the location of the nullability specifier (__nonnull,
221
  /// __nullable, or __null_unspecifier), if there is one.
222
  SourceLocation findNullabilityLoc() const;
223
224
private:
225
0
  static bool isKind(const TypeLoc&) {
226
0
    return true;
227
0
  }
228
229
  static void initializeImpl(ASTContext &Context, TypeLoc TL,
230
                             SourceLocation Loc);
231
  static TypeLoc getNextTypeLocImpl(TypeLoc TL);
232
  static TypeLoc IgnoreParensImpl(TypeLoc TL);
233
  static SourceRange getLocalSourceRangeImpl(TypeLoc TL);
234
};
235
236
/// Return the TypeLoc for a type source info.
237
114M
inline TypeLoc TypeSourceInfo::getTypeLoc() const {
238
114M
  // TODO: is this alignment already sufficient?
239
114M
  return TypeLoc(Ty, const_cast<void*>(static_cast<const void*>(this + 1)));
240
114M
}
241
242
/// Wrapper of type source information for a type with
243
/// no direct qualifiers.
244
class UnqualTypeLoc : public TypeLoc {
245
public:
246
769M
  UnqualTypeLoc() = default;
247
10.1M
  UnqualTypeLoc(const Type *Ty, void *Data) : TypeLoc(Ty, Data) {}
248
249
383M
  const Type *getTypePtr() const {
250
383M
    return reinterpret_cast<const Type*>(Ty);
251
383M
  }
252
253
41.8M
  TypeLocClass getTypeLocClass() const {
254
41.8M
    return (TypeLocClass) getTypePtr()->getTypeClass();
255
41.8M
  }
256
257
private:
258
  friend class TypeLoc;
259
260
0
  static bool isKind(const TypeLoc &TL) {
261
0
    return !TL.getType().hasLocalQualifiers();
262
0
  }
263
};
264
265
/// Wrapper of type source information for a type with
266
/// non-trivial direct qualifiers.
267
///
268
/// Currently, we intentionally do not provide source location for
269
/// type qualifiers.
270
class QualifiedTypeLoc : public TypeLoc {
271
public:
272
20.0k
  SourceRange getLocalSourceRange() const { return {}; }
273
274
10.1M
  UnqualTypeLoc getUnqualifiedLoc() const {
275
10.1M
    unsigned align =
276
10.1M
        TypeLoc::getLocalAlignmentForType(QualType(getTypePtr(), 0));
277
10.1M
    auto dataInt = reinterpret_cast<uintptr_t>(Data);
278
10.1M
    dataInt = llvm::alignTo(dataInt, align);
279
10.1M
    return UnqualTypeLoc(getTypePtr(), reinterpret_cast<void*>(dataInt));
280
10.1M
  }
281
282
  /// Initializes the local data of this type source info block to
283
  /// provide no information.
284
147k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
285
147k
    // do nothing
286
147k
  }
287
288
4
  void copyLocal(TypeLoc other) {
289
4
    // do nothing
290
4
  }
291
292
6.38M
  TypeLoc getNextTypeLoc() const {
293
6.38M
    return getUnqualifiedLoc();
294
6.38M
  }
295
296
  /// Returns the size of the type source info data block that is
297
  /// specific to this type.
298
3.84M
  unsigned getLocalDataSize() const {
299
3.84M
    // In fact, we don't currently preserve any location information
300
3.84M
    // for qualifiers.
301
3.84M
    return 0;
302
3.84M
  }
303
304
  /// Returns the alignment of the type source info data block that is
305
  /// specific to this type.
306
10.2M
  unsigned getLocalDataAlignment() const {
307
10.2M
    // We don't preserve any location information.
308
10.2M
    return 1;
309
10.2M
  }
310
311
private:
312
  friend class TypeLoc;
313
314
42.1M
  static bool isKind(const TypeLoc &TL) {
315
42.1M
    return TL.getType().hasLocalQualifiers();
316
42.1M
  }
317
};
318
319
42.1M
inline UnqualTypeLoc TypeLoc::getUnqualifiedLoc() const {
320
42.1M
  if (QualifiedTypeLoc Loc = getAs<QualifiedTypeLoc>())
321
3.01M
    return Loc.getUnqualifiedLoc();
322
39.1M
  return castAs<UnqualTypeLoc>();
323
39.1M
}
324
325
/// A metaprogramming base class for TypeLoc classes which correspond
326
/// to a particular Type subclass.  It is accepted for a single
327
/// TypeLoc class to correspond to multiple Type classes.
328
///
329
/// \tparam Base a class from which to derive
330
/// \tparam Derived the class deriving from this one
331
/// \tparam TypeClass the concrete Type subclass associated with this
332
///   location type
333
/// \tparam LocalData the structure type of local location data for
334
///   this type
335
///
336
/// TypeLocs with non-constant amounts of local data should override
337
/// getExtraLocalDataSize(); getExtraLocalData() will then point to
338
/// this extra memory.
339
///
340
/// TypeLocs with an inner type should define
341
///   QualType getInnerType() const
342
/// and getInnerTypeLoc() will then point to this inner type's
343
/// location data.
344
///
345
/// A word about hierarchies: this template is not designed to be
346
/// derived from multiple times in a hierarchy.  It is also not
347
/// designed to be used for classes where subtypes might provide
348
/// different amounts of source information.  It should be subclassed
349
/// only at the deepest portion of the hierarchy where all children
350
/// have identical source information; if that's an abstract type,
351
/// then further descendents should inherit from
352
/// InheritingConcreteTypeLoc instead.
353
template <class Base, class Derived, class TypeClass, class LocalData>
354
class ConcreteTypeLoc : public Base {
355
  friend class TypeLoc;
356
357
724M
  const Derived *asDerived() const {
358
724M
    return static_cast<const Derived*>(this);
359
724M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::asDerived() const
Line
Count
Source
357
142M
  const Derived *asDerived() const {
358
142M
    return static_cast<const Derived*>(this);
359
142M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::asDerived() const
Line
Count
Source
357
82.5M
  const Derived *asDerived() const {
358
82.5M
    return static_cast<const Derived*>(this);
359
82.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::asDerived() const
Line
Count
Source
357
287k
  const Derived *asDerived() const {
358
287k
    return static_cast<const Derived*>(this);
359
287k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::asDerived() const
Line
Count
Source
357
54.5M
  const Derived *asDerived() const {
358
54.5M
    return static_cast<const Derived*>(this);
359
54.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::asDerived() const
Line
Count
Source
357
1.34M
  const Derived *asDerived() const {
358
1.34M
    return static_cast<const Derived*>(this);
359
1.34M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::asDerived() const
Line
Count
Source
357
6.56M
  const Derived *asDerived() const {
358
6.56M
    return static_cast<const Derived*>(this);
359
6.56M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::asDerived() const
Line
Count
Source
357
4.08M
  const Derived *asDerived() const {
358
4.08M
    return static_cast<const Derived*>(this);
359
4.08M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::asDerived() const
Line
Count
Source
357
8.16k
  const Derived *asDerived() const {
358
8.16k
    return static_cast<const Derived*>(this);
359
8.16k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::asDerived() const
Line
Count
Source
357
26.0M
  const Derived *asDerived() const {
358
26.0M
    return static_cast<const Derived*>(this);
359
26.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::asDerived() const
Line
Count
Source
357
3.69M
  const Derived *asDerived() const {
358
3.69M
    return static_cast<const Derived*>(this);
359
3.69M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::asDerived() const
Line
Count
Source
357
76.0M
  const Derived *asDerived() const {
358
76.0M
    return static_cast<const Derived*>(this);
359
76.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::asDerived() const
Line
Count
Source
357
208k
  const Derived *asDerived() const {
358
208k
    return static_cast<const Derived*>(this);
359
208k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::asDerived() const
Line
Count
Source
357
4.37M
  const Derived *asDerived() const {
358
4.37M
    return static_cast<const Derived*>(this);
359
4.37M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::asDerived() const
Line
Count
Source
357
590k
  const Derived *asDerived() const {
358
590k
    return static_cast<const Derived*>(this);
359
590k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::asDerived() const
Line
Count
Source
357
1.56M
  const Derived *asDerived() const {
358
1.56M
    return static_cast<const Derived*>(this);
359
1.56M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::asDerived() const
Line
Count
Source
357
1.26k
  const Derived *asDerived() const {
358
1.26k
    return static_cast<const Derived*>(this);
359
1.26k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::asDerived() const
Line
Count
Source
357
129k
  const Derived *asDerived() const {
358
129k
    return static_cast<const Derived*>(this);
359
129k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::asDerived() const
Line
Count
Source
357
79.8M
  const Derived *asDerived() const {
358
79.8M
    return static_cast<const Derived*>(this);
359
79.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::asDerived() const
Line
Count
Source
357
50.5k
  const Derived *asDerived() const {
358
50.5k
    return static_cast<const Derived*>(this);
359
50.5k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::asDerived() const
Line
Count
Source
357
1.33k
  const Derived *asDerived() const {
358
1.33k
    return static_cast<const Derived*>(this);
359
1.33k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::asDerived() const
Line
Count
Source
357
220M
  const Derived *asDerived() const {
358
220M
    return static_cast<const Derived*>(this);
359
220M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::asDerived() const
Line
Count
Source
357
18.3M
  const Derived *asDerived() const {
358
18.3M
    return static_cast<const Derived*>(this);
359
18.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::asDerived() const
Line
Count
Source
357
20.8k
  const Derived *asDerived() const {
358
20.8k
    return static_cast<const Derived*>(this);
359
20.8k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::asDerived() const
Line
Count
Source
357
473
  const Derived *asDerived() const {
358
473
    return static_cast<const Derived*>(this);
359
473
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::asDerived() const
Line
Count
Source
357
2.85k
  const Derived *asDerived() const {
358
2.85k
    return static_cast<const Derived*>(this);
359
2.85k
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::asDerived() const
Line
Count
Source
357
698k
  const Derived *asDerived() const {
358
698k
    return static_cast<const Derived*>(this);
359
698k
  }
360
361
89.4M
  static bool isKind(const TypeLoc &TL) {
362
89.4M
    return !TL.getType().hasLocalQualifiers() &&
363
89.4M
           
Derived::classofType(TL.getTypePtr())89.4M
;
364
89.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
361
10.6M
  static bool isKind(const TypeLoc &TL) {
362
10.6M
    return !TL.getType().hasLocalQualifiers() &&
363
10.6M
           Derived::classofType(TL.getTypePtr());
364
10.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
361
29.1M
  static bool isKind(const TypeLoc &TL) {
362
29.1M
    return !TL.getType().hasLocalQualifiers() &&
363
29.1M
           
Derived::classofType(TL.getTypePtr())29.1M
;
364
29.1M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
361
5.70M
  static bool isKind(const TypeLoc &TL) {
362
5.70M
    return !TL.getType().hasLocalQualifiers() &&
363
5.70M
           
Derived::classofType(TL.getTypePtr())5.70M
;
364
5.70M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
361
17.5M
  static bool isKind(const TypeLoc &TL) {
362
17.5M
    return !TL.getType().hasLocalQualifiers() &&
363
17.5M
           Derived::classofType(TL.getTypePtr());
364
17.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
361
516
  static bool isKind(const TypeLoc &TL) {
362
516
    return !TL.getType().hasLocalQualifiers() &&
363
516
           Derived::classofType(TL.getTypePtr());
364
516
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
361
5.96k
  static bool isKind(const TypeLoc &TL) {
362
5.96k
    return !TL.getType().hasLocalQualifiers() &&
363
5.96k
           Derived::classofType(TL.getTypePtr());
364
5.96k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
361
863
  static bool isKind(const TypeLoc &TL) {
362
863
    return !TL.getType().hasLocalQualifiers() &&
363
863
           Derived::classofType(TL.getTypePtr());
364
863
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
361
504
  static bool isKind(const TypeLoc &TL) {
362
504
    return !TL.getType().hasLocalQualifiers() &&
363
504
           Derived::classofType(TL.getTypePtr());
364
504
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
361
6.85k
  static bool isKind(const TypeLoc &TL) {
362
6.85k
    return !TL.getType().hasLocalQualifiers() &&
363
6.85k
           Derived::classofType(TL.getTypePtr());
364
6.85k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
361
105k
  static bool isKind(const TypeLoc &TL) {
362
105k
    return !TL.getType().hasLocalQualifiers() &&
363
105k
           
Derived::classofType(TL.getTypePtr())105k
;
364
105k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
361
2.52M
  static bool isKind(const TypeLoc &TL) {
362
2.52M
    return !TL.getType().hasLocalQualifiers() &&
363
2.52M
           
Derived::classofType(TL.getTypePtr())2.52M
;
364
2.52M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
361
11.8M
  static bool isKind(const TypeLoc &TL) {
362
11.8M
    return !TL.getType().hasLocalQualifiers() &&
363
11.8M
           Derived::classofType(TL.getTypePtr());
364
11.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
361
11.8M
  static bool isKind(const TypeLoc &TL) {
362
11.8M
    return !TL.getType().hasLocalQualifiers() &&
363
11.8M
           Derived::classofType(TL.getTypePtr());
364
11.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
361
9.85k
  static bool isKind(const TypeLoc &TL) {
362
9.85k
    return !TL.getType().hasLocalQualifiers() &&
363
9.85k
           Derived::classofType(TL.getTypePtr());
364
9.85k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
361
9.85k
  static bool isKind(const TypeLoc &TL) {
362
9.85k
    return !TL.getType().hasLocalQualifiers() &&
363
9.85k
           Derived::classofType(TL.getTypePtr());
364
9.85k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::isKind(clang::TypeLoc const&)
Line
Count
Source
361
412
  static bool isKind(const TypeLoc &TL) {
362
412
    return !TL.getType().hasLocalQualifiers() &&
363
412
           Derived::classofType(TL.getTypePtr());
364
412
  }
365
366
89.4M
  static bool classofType(const Type *Ty) {
367
89.4M
    return TypeClass::classof(Ty);
368
89.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::classofType(clang::Type const*)
Line
Count
Source
366
10.6M
  static bool classofType(const Type *Ty) {
367
10.6M
    return TypeClass::classof(Ty);
368
10.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::classofType(clang::Type const*)
Line
Count
Source
366
29.1M
  static bool classofType(const Type *Ty) {
367
29.1M
    return TypeClass::classof(Ty);
368
29.1M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::classofType(clang::Type const*)
Line
Count
Source
366
5.70M
  static bool classofType(const Type *Ty) {
367
5.70M
    return TypeClass::classof(Ty);
368
5.70M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::classofType(clang::Type const*)
Line
Count
Source
366
17.5M
  static bool classofType(const Type *Ty) {
367
17.5M
    return TypeClass::classof(Ty);
368
17.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::classofType(clang::Type const*)
Line
Count
Source
366
516
  static bool classofType(const Type *Ty) {
367
516
    return TypeClass::classof(Ty);
368
516
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
366
5.96k
  static bool classofType(const Type *Ty) {
367
5.96k
    return TypeClass::classof(Ty);
368
5.96k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
366
863
  static bool classofType(const Type *Ty) {
367
863
    return TypeClass::classof(Ty);
368
863
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
366
504
  static bool classofType(const Type *Ty) {
367
504
    return TypeClass::classof(Ty);
368
504
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::classofType(clang::Type const*)
Line
Count
Source
366
6.85k
  static bool classofType(const Type *Ty) {
367
6.85k
    return TypeClass::classof(Ty);
368
6.85k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::classofType(clang::Type const*)
Line
Count
Source
366
105k
  static bool classofType(const Type *Ty) {
367
105k
    return TypeClass::classof(Ty);
368
105k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
366
2.52M
  static bool classofType(const Type *Ty) {
367
2.52M
    return TypeClass::classof(Ty);
368
2.52M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
366
11.8M
  static bool classofType(const Type *Ty) {
367
11.8M
    return TypeClass::classof(Ty);
368
11.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::classofType(clang::Type const*)
Line
Count
Source
366
11.8M
  static bool classofType(const Type *Ty) {
367
11.8M
    return TypeClass::classof(Ty);
368
11.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
366
9.85k
  static bool classofType(const Type *Ty) {
367
9.85k
    return TypeClass::classof(Ty);
368
9.85k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::classofType(clang::Type const*)
Line
Count
Source
366
9.85k
  static bool classofType(const Type *Ty) {
367
9.85k
    return TypeClass::classof(Ty);
368
9.85k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::classofType(clang::Type const*)
Line
Count
Source
366
412
  static bool classofType(const Type *Ty) {
367
412
    return TypeClass::classof(Ty);
368
412
  }
369
370
public:
371
137M
  unsigned getLocalDataAlignment() const {
372
137M
    return std::max(unsigned(alignof(LocalData)),
373
137M
                    asDerived()->getExtraLocalDataAlignment());
374
137M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
64.5M
  unsigned getLocalDataAlignment() const {
372
64.5M
    return std::max(unsigned(alignof(LocalData)),
373
64.5M
                    asDerived()->getExtraLocalDataAlignment());
374
64.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
51.0k
  unsigned getLocalDataAlignment() const {
372
51.0k
    return std::max(unsigned(alignof(LocalData)),
373
51.0k
                    asDerived()->getExtraLocalDataAlignment());
374
51.0k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
10.6M
  unsigned getLocalDataAlignment() const {
372
10.6M
    return std::max(unsigned(alignof(LocalData)),
373
10.6M
                    asDerived()->getExtraLocalDataAlignment());
374
10.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
5.14M
  unsigned getLocalDataAlignment() const {
372
5.14M
    return std::max(unsigned(alignof(LocalData)),
373
5.14M
                    asDerived()->getExtraLocalDataAlignment());
374
5.14M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
3.95M
  unsigned getLocalDataAlignment() const {
372
3.95M
    return std::max(unsigned(alignof(LocalData)),
373
3.95M
                    asDerived()->getExtraLocalDataAlignment());
374
3.95M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
235k
  unsigned getLocalDataAlignment() const {
372
235k
    return std::max(unsigned(alignof(LocalData)),
373
235k
                    asDerived()->getExtraLocalDataAlignment());
374
235k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
26.5M
  unsigned getLocalDataAlignment() const {
372
26.5M
    return std::max(unsigned(alignof(LocalData)),
373
26.5M
                    asDerived()->getExtraLocalDataAlignment());
374
26.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
8.17M
  unsigned getLocalDataAlignment() const {
372
8.17M
    return std::max(unsigned(alignof(LocalData)),
373
8.17M
                    asDerived()->getExtraLocalDataAlignment());
374
8.17M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
50.5k
  unsigned getLocalDataAlignment() const {
372
50.5k
    return std::max(unsigned(alignof(LocalData)),
373
50.5k
                    asDerived()->getExtraLocalDataAlignment());
374
50.5k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
5.74M
  unsigned getLocalDataAlignment() const {
372
5.74M
    return std::max(unsigned(alignof(LocalData)),
373
5.74M
                    asDerived()->getExtraLocalDataAlignment());
374
5.74M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
1.42k
  unsigned getLocalDataAlignment() const {
372
1.42k
    return std::max(unsigned(alignof(LocalData)),
373
1.42k
                    asDerived()->getExtraLocalDataAlignment());
374
1.42k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
62.0k
  unsigned getLocalDataAlignment() const {
372
62.0k
    return std::max(unsigned(alignof(LocalData)),
373
62.0k
                    asDerived()->getExtraLocalDataAlignment());
374
62.0k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
598k
  unsigned getLocalDataAlignment() const {
372
598k
    return std::max(unsigned(alignof(LocalData)),
373
598k
                    asDerived()->getExtraLocalDataAlignment());
374
598k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
237
  unsigned getLocalDataAlignment() const {
372
237
    return std::max(unsigned(alignof(LocalData)),
373
237
                    asDerived()->getExtraLocalDataAlignment());
374
237
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
269k
  unsigned getLocalDataAlignment() const {
372
269k
    return std::max(unsigned(alignof(LocalData)),
373
269k
                    asDerived()->getExtraLocalDataAlignment());
374
269k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
9.48M
  unsigned getLocalDataAlignment() const {
372
9.48M
    return std::max(unsigned(alignof(LocalData)),
373
9.48M
                    asDerived()->getExtraLocalDataAlignment());
374
9.48M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
762k
  unsigned getLocalDataAlignment() const {
372
762k
    return std::max(unsigned(alignof(LocalData)),
373
762k
                    asDerived()->getExtraLocalDataAlignment());
374
762k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
9.15k
  unsigned getLocalDataAlignment() const {
372
9.15k
    return std::max(unsigned(alignof(LocalData)),
373
9.15k
                    asDerived()->getExtraLocalDataAlignment());
374
9.15k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
110
  unsigned getLocalDataAlignment() const {
372
110
    return std::max(unsigned(alignof(LocalData)),
373
110
                    asDerived()->getExtraLocalDataAlignment());
374
110
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
710
  unsigned getLocalDataAlignment() const {
372
710
    return std::max(unsigned(alignof(LocalData)),
373
710
                    asDerived()->getExtraLocalDataAlignment());
374
710
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
303k
  unsigned getLocalDataAlignment() const {
372
303k
    return std::max(unsigned(alignof(LocalData)),
373
303k
                    asDerived()->getExtraLocalDataAlignment());
374
303k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
14.2k
  unsigned getLocalDataAlignment() const {
372
14.2k
    return std::max(unsigned(alignof(LocalData)),
373
14.2k
                    asDerived()->getExtraLocalDataAlignment());
374
14.2k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
105k
  unsigned getLocalDataAlignment() const {
372
105k
    return std::max(unsigned(alignof(LocalData)),
373
105k
                    asDerived()->getExtraLocalDataAlignment());
374
105k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
194
  unsigned getLocalDataAlignment() const {
372
194
    return std::max(unsigned(alignof(LocalData)),
373
194
                    asDerived()->getExtraLocalDataAlignment());
374
194
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
10.4k
  unsigned getLocalDataAlignment() const {
372
10.4k
    return std::max(unsigned(alignof(LocalData)),
373
10.4k
                    asDerived()->getExtraLocalDataAlignment());
374
10.4k
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getLocalDataAlignment() const
Line
Count
Source
371
308k
  unsigned getLocalDataAlignment() const {
372
308k
    return std::max(unsigned(alignof(LocalData)),
373
308k
                    asDerived()->getExtraLocalDataAlignment());
374
308k
  }
375
376
133M
  unsigned getLocalDataSize() const {
377
133M
    unsigned size = sizeof(LocalData);
378
133M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
133M
    size = llvm::alignTo(size, extraAlign);
380
133M
    size += asDerived()->getExtraLocalDataSize();
381
133M
    return size;
382
133M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getLocalDataSize() const
Line
Count
Source
376
28.0M
  unsigned getLocalDataSize() const {
377
28.0M
    unsigned size = sizeof(LocalData);
378
28.0M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
28.0M
    size = llvm::alignTo(size, extraAlign);
380
28.0M
    size += asDerived()->getExtraLocalDataSize();
381
28.0M
    return size;
382
28.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getLocalDataSize() const
Line
Count
Source
376
18.2M
  unsigned getLocalDataSize() const {
377
18.2M
    unsigned size = sizeof(LocalData);
378
18.2M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
18.2M
    size = llvm::alignTo(size, extraAlign);
380
18.2M
    size += asDerived()->getExtraLocalDataSize();
381
18.2M
    return size;
382
18.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getLocalDataSize() const
Line
Count
Source
376
58.5k
  unsigned getLocalDataSize() const {
377
58.5k
    unsigned size = sizeof(LocalData);
378
58.5k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
58.5k
    size = llvm::alignTo(size, extraAlign);
380
58.5k
    size += asDerived()->getExtraLocalDataSize();
381
58.5k
    return size;
382
58.5k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getLocalDataSize() const
Line
Count
Source
376
12.2M
  unsigned getLocalDataSize() const {
377
12.2M
    unsigned size = sizeof(LocalData);
378
12.2M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
12.2M
    size = llvm::alignTo(size, extraAlign);
380
12.2M
    size += asDerived()->getExtraLocalDataSize();
381
12.2M
    return size;
382
12.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getLocalDataSize() const
Line
Count
Source
376
292k
  unsigned getLocalDataSize() const {
377
292k
    unsigned size = sizeof(LocalData);
378
292k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
292k
    size = llvm::alignTo(size, extraAlign);
380
292k
    size += asDerived()->getExtraLocalDataSize();
381
292k
    return size;
382
292k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getLocalDataSize() const
Line
Count
Source
376
1.46M
  unsigned getLocalDataSize() const {
377
1.46M
    unsigned size = sizeof(LocalData);
378
1.46M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
1.46M
    size = llvm::alignTo(size, extraAlign);
380
1.46M
    size += asDerived()->getExtraLocalDataSize();
381
1.46M
    return size;
382
1.46M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getLocalDataSize() const
Line
Count
Source
376
805k
  unsigned getLocalDataSize() const {
377
805k
    unsigned size = sizeof(LocalData);
378
805k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
805k
    size = llvm::alignTo(size, extraAlign);
380
805k
    size += asDerived()->getExtraLocalDataSize();
381
805k
    return size;
382
805k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getLocalDataSize() const
Line
Count
Source
376
6.41M
  unsigned getLocalDataSize() const {
377
6.41M
    unsigned size = sizeof(LocalData);
378
6.41M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
6.41M
    size = llvm::alignTo(size, extraAlign);
380
6.41M
    size += asDerived()->getExtraLocalDataSize();
381
6.41M
    return size;
382
6.41M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getLocalDataSize() const
Line
Count
Source
376
837k
  unsigned getLocalDataSize() const {
377
837k
    unsigned size = sizeof(LocalData);
378
837k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
837k
    size = llvm::alignTo(size, extraAlign);
380
837k
    size += asDerived()->getExtraLocalDataSize();
381
837k
    return size;
382
837k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
376
983k
  unsigned getLocalDataSize() const {
377
983k
    unsigned size = sizeof(LocalData);
378
983k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
983k
    size = llvm::alignTo(size, extraAlign);
380
983k
    size += asDerived()->getExtraLocalDataSize();
381
983k
    return size;
382
983k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
376
121k
  unsigned getLocalDataSize() const {
377
121k
    unsigned size = sizeof(LocalData);
378
121k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
121k
    size = llvm::alignTo(size, extraAlign);
380
121k
    size += asDerived()->getExtraLocalDataSize();
381
121k
    return size;
382
121k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getLocalDataSize() const
Line
Count
Source
376
321k
  unsigned getLocalDataSize() const {
377
321k
    unsigned size = sizeof(LocalData);
378
321k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
321k
    size = llvm::alignTo(size, extraAlign);
380
321k
    size += asDerived()->getExtraLocalDataSize();
381
321k
    return size;
382
321k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
376
264
  unsigned getLocalDataSize() const {
377
264
    unsigned size = sizeof(LocalData);
378
264
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
264
    size = llvm::alignTo(size, extraAlign);
380
264
    size += asDerived()->getExtraLocalDataSize();
381
264
    return size;
382
264
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
376
29.7k
  unsigned getLocalDataSize() const {
377
29.7k
    unsigned size = sizeof(LocalData);
378
29.7k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
29.7k
    size = llvm::alignTo(size, extraAlign);
380
29.7k
    size += asDerived()->getExtraLocalDataSize();
381
29.7k
    return size;
382
29.7k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getLocalDataSize() const
Line
Count
Source
376
266
  unsigned getLocalDataSize() const {
377
266
    unsigned size = sizeof(LocalData);
378
266
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
266
    size = llvm::alignTo(size, extraAlign);
380
266
    size += asDerived()->getExtraLocalDataSize();
381
266
    return size;
382
266
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getLocalDataSize() const
Line
Count
Source
376
39.3M
  unsigned getLocalDataSize() const {
377
39.3M
    unsigned size = sizeof(LocalData);
378
39.3M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
39.3M
    size = llvm::alignTo(size, extraAlign);
380
39.3M
    size += asDerived()->getExtraLocalDataSize();
381
39.3M
    return size;
382
39.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getLocalDataSize() const
Line
Count
Source
376
36.1k
  unsigned getLocalDataSize() const {
377
36.1k
    unsigned size = sizeof(LocalData);
378
36.1k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
36.1k
    size = llvm::alignTo(size, extraAlign);
380
36.1k
    size += asDerived()->getExtraLocalDataSize();
381
36.1k
    return size;
382
36.1k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getLocalDataSize() const
Line
Count
Source
376
9.15M
  unsigned getLocalDataSize() const {
377
9.15M
    unsigned size = sizeof(LocalData);
378
9.15M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
9.15M
    size = llvm::alignTo(size, extraAlign);
380
9.15M
    size += asDerived()->getExtraLocalDataSize();
381
9.15M
    return size;
382
9.15M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getLocalDataSize() const
Line
Count
Source
376
3.75M
  unsigned getLocalDataSize() const {
377
3.75M
    unsigned size = sizeof(LocalData);
378
3.75M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
3.75M
    size = llvm::alignTo(size, extraAlign);
380
3.75M
    size += asDerived()->getExtraLocalDataSize();
381
3.75M
    return size;
382
3.75M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getLocalDataSize() const
Line
Count
Source
376
11.4M
  unsigned getLocalDataSize() const {
377
11.4M
    unsigned size = sizeof(LocalData);
378
11.4M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
11.4M
    size = llvm::alignTo(size, extraAlign);
380
11.4M
    size += asDerived()->getExtraLocalDataSize();
381
11.4M
    return size;
382
11.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
376
3.11k
  unsigned getLocalDataSize() const {
377
3.11k
    unsigned size = sizeof(LocalData);
378
3.11k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
3.11k
    size = llvm::alignTo(size, extraAlign);
380
3.11k
    size += asDerived()->getExtraLocalDataSize();
381
3.11k
    return size;
382
3.11k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
376
102
  unsigned getLocalDataSize() const {
377
102
    unsigned size = sizeof(LocalData);
378
102
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
102
    size = llvm::alignTo(size, extraAlign);
380
102
    size += asDerived()->getExtraLocalDataSize();
381
102
    return size;
382
102
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
376
701
  unsigned getLocalDataSize() const {
377
701
    unsigned size = sizeof(LocalData);
378
701
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
701
    size = llvm::alignTo(size, extraAlign);
380
701
    size += asDerived()->getExtraLocalDataSize();
381
701
    return size;
382
701
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getLocalDataSize() const
Line
Count
Source
376
8.47k
  unsigned getLocalDataSize() const {
377
8.47k
    unsigned size = sizeof(LocalData);
378
8.47k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
8.47k
    size = llvm::alignTo(size, extraAlign);
380
8.47k
    size += asDerived()->getExtraLocalDataSize();
381
8.47k
    return size;
382
8.47k
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getLocalDataSize() const
Line
Count
Source
376
106k
  unsigned getLocalDataSize() const {
377
106k
    unsigned size = sizeof(LocalData);
378
106k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
379
106k
    size = llvm::alignTo(size, extraAlign);
380
106k
    size += asDerived()->getExtraLocalDataSize();
381
106k
    return size;
382
106k
  }
383
384
7.61k
  void copyLocal(Derived other) {
385
7.61k
    // Some subclasses have no data to copy.
386
7.61k
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
387
7.61k
388
7.61k
    // Copy the fixed-sized local data.
389
7.61k
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
390
7.61k
391
7.61k
    // Copy the variable-sized local data. We need to do this
392
7.61k
    // separately because the padding in the source and the padding in
393
7.61k
    // the destination might be different.
394
7.61k
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
395
7.61k
           asDerived()->getExtraLocalDataSize());
396
7.61k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::copyLocal(clang::BuiltinTypeLoc)
Line
Count
Source
384
2.62k
  void copyLocal(Derived other) {
385
2.62k
    // Some subclasses have no data to copy.
386
2.62k
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
387
2.62k
388
2.62k
    // Copy the fixed-sized local data.
389
2.62k
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
390
2.62k
391
2.62k
    // Copy the variable-sized local data. We need to do this
392
2.62k
    // separately because the padding in the source and the padding in
393
2.62k
    // the destination might be different.
394
2.62k
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
395
2.62k
           asDerived()->getExtraLocalDataSize());
396
2.62k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::copyLocal(clang::TypeSpecTypeLoc)
Line
Count
Source
384
4.92k
  void copyLocal(Derived other) {
385
4.92k
    // Some subclasses have no data to copy.
386
4.92k
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
387
4.92k
388
4.92k
    // Copy the fixed-sized local data.
389
4.92k
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
390
4.92k
391
4.92k
    // Copy the variable-sized local data. We need to do this
392
4.92k
    // separately because the padding in the source and the padding in
393
4.92k
    // the destination might be different.
394
4.92k
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
395
4.92k
           asDerived()->getExtraLocalDataSize());
396
4.92k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::copyLocal(clang::PointerTypeLoc)
Line
Count
Source
384
21
  void copyLocal(Derived other) {
385
21
    // Some subclasses have no data to copy.
386
21
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
387
21
388
21
    // Copy the fixed-sized local data.
389
21
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
390
21
391
21
    // Copy the variable-sized local data. We need to do this
392
21
    // separately because the padding in the source and the padding in
393
21
    // the destination might be different.
394
21
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
395
21
           asDerived()->getExtraLocalDataSize());
396
21
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::copyLocal(clang::BlockPointerTypeLoc)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::copyLocal(clang::ReferenceTypeLoc)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::copyLocal(clang::MemberPointerTypeLoc)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::copyLocal(clang::ArrayTypeLoc)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::copyLocal(clang::DependentAddressSpaceTypeLoc)
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::copyLocal(clang::FunctionTypeLoc)
Line
Count
Source
384
3
  void copyLocal(Derived other) {
385
3
    // Some subclasses have no data to copy.
386
3
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
387
3
388
3
    // Copy the fixed-sized local data.
389
3
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
390
3
391
3
    // Copy the variable-sized local data. We need to do this
392
3
    // separately because the padding in the source and the padding in
393
3
    // the destination might be different.
394
3
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
395
3
           asDerived()->getExtraLocalDataSize());
396
3
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::copyLocal(clang::ParenTypeLoc)
Line
Count
Source
384
3
  void copyLocal(Derived other) {
385
3
    // Some subclasses have no data to copy.
386
3
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
387
3
388
3
    // Copy the fixed-sized local data.
389
3
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
390
3
391
3
    // Copy the variable-sized local data. We need to do this
392
3
    // separately because the padding in the source and the padding in
393
3
    // the destination might be different.
394
3
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
395
3
           asDerived()->getExtraLocalDataSize());
396
3
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::copyLocal(clang::AdjustedTypeLoc)
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::copyLocal(clang::TypeOfExprTypeLoc)
Line
Count
Source
384
1
  void copyLocal(Derived other) {
385
1
    // Some subclasses have no data to copy.
386
1
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
387
1
388
1
    // Copy the fixed-sized local data.
389
1
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
390
1
391
1
    // Copy the variable-sized local data. We need to do this
392
1
    // separately because the padding in the source and the padding in
393
1
    // the destination might be different.
394
1
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
395
1
           asDerived()->getExtraLocalDataSize());
396
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)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::copyLocal(clang::ElaboratedTypeLoc)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::copyLocal(clang::AttributedTypeLoc)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::copyLocal(clang::TemplateSpecializationTypeLoc)
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::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::copyLocal(clang::PackExpansionTypeLoc)
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::copyLocal(clang::ObjCTypeParamTypeLoc)
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::copyLocal(clang::ObjCObjectTypeLoc)
Line
Count
Source
384
18
  void copyLocal(Derived other) {
385
18
    // Some subclasses have no data to copy.
386
18
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
387
18
388
18
    // Copy the fixed-sized local data.
389
18
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
390
18
391
18
    // Copy the variable-sized local data. We need to do this
392
18
    // separately because the padding in the source and the padding in
393
18
    // the destination might be different.
394
18
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
395
18
           asDerived()->getExtraLocalDataSize());
396
18
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::copyLocal(clang::ObjCInterfaceTypeLoc)
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::copyLocal(clang::ObjCObjectPointerTypeLoc)
Line
Count
Source
384
18
  void copyLocal(Derived other) {
385
18
    // Some subclasses have no data to copy.
386
18
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
387
18
388
18
    // Copy the fixed-sized local data.
389
18
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
390
18
391
18
    // Copy the variable-sized local data. We need to do this
392
18
    // separately because the padding in the source and the padding in
393
18
    // the destination might be different.
394
18
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
395
18
           asDerived()->getExtraLocalDataSize());
396
18
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::copyLocal(clang::PipeTypeLoc)
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::copyLocal(clang::AtomicTypeLoc)
Line
Count
Source
384
1
  void copyLocal(Derived other) {
385
1
    // Some subclasses have no data to copy.
386
1
    if (asDerived()->getLocalDataSize() == 0) 
return0
;
387
1
388
1
    // Copy the fixed-sized local data.
389
1
    memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData));
390
1
391
1
    // Copy the variable-sized local data. We need to do this
392
1
    // separately because the padding in the source and the padding in
393
1
    // the destination might be different.
394
1
    memcpy(getExtraLocalData(), other.getExtraLocalData(),
395
1
           asDerived()->getExtraLocalDataSize());
396
1
  }
397
398
172M
  TypeLoc getNextTypeLoc() const {
399
172M
    return getNextTypeLoc(asDerived()->getInnerType());
400
172M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
11.3M
  TypeLoc getNextTypeLoc() const {
399
11.3M
    return getNextTypeLoc(asDerived()->getInnerType());
400
11.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
39.5k
  TypeLoc getNextTypeLoc() const {
399
39.5k
    return getNextTypeLoc(asDerived()->getInnerType());
400
39.5k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
6.82M
  TypeLoc getNextTypeLoc() const {
399
6.82M
    return getNextTypeLoc(asDerived()->getInnerType());
400
6.82M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
232k
  TypeLoc getNextTypeLoc() const {
399
232k
    return getNextTypeLoc(asDerived()->getInnerType());
400
232k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
12.0k
  TypeLoc getNextTypeLoc() const {
399
12.0k
    return getNextTypeLoc(asDerived()->getInnerType());
400
12.0k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
503k
  TypeLoc getNextTypeLoc() const {
399
503k
    return getNextTypeLoc(asDerived()->getInnerType());
400
503k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
2.22k
  TypeLoc getNextTypeLoc() const {
399
2.22k
    return getNextTypeLoc(asDerived()->getInnerType());
400
2.22k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
3.02M
  TypeLoc getNextTypeLoc() const {
399
3.02M
    return getNextTypeLoc(asDerived()->getInnerType());
400
3.02M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
16.1M
  TypeLoc getNextTypeLoc() const {
399
16.1M
    return getNextTypeLoc(asDerived()->getInnerType());
400
16.1M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
77.1M
  TypeLoc getNextTypeLoc() const {
399
77.1M
    return getNextTypeLoc(asDerived()->getInnerType());
400
77.1M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
983k
  TypeLoc getNextTypeLoc() const {
399
983k
    return getNextTypeLoc(asDerived()->getInnerType());
400
983k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
186
  TypeLoc getNextTypeLoc() const {
399
186
    return getNextTypeLoc(asDerived()->getInnerType());
400
186
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
17.5M
  TypeLoc getNextTypeLoc() const {
399
17.5M
    return getNextTypeLoc(asDerived()->getInnerType());
400
17.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
553k
  TypeLoc getNextTypeLoc() const {
399
553k
    return getNextTypeLoc(asDerived()->getInnerType());
400
553k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
5.44k
  TypeLoc getNextTypeLoc() const {
399
5.44k
    return getNextTypeLoc(asDerived()->getInnerType());
400
5.44k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
159
  TypeLoc getNextTypeLoc() const {
399
159
    return getNextTypeLoc(asDerived()->getInnerType());
400
159
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
740
  TypeLoc getNextTypeLoc() const {
399
740
    return getNextTypeLoc(asDerived()->getInnerType());
400
740
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
31.4M
  TypeLoc getNextTypeLoc() const {
399
31.4M
    return getNextTypeLoc(asDerived()->getInnerType());
400
31.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
5.74M
  TypeLoc getNextTypeLoc() const {
399
5.74M
    return getNextTypeLoc(asDerived()->getInnerType());
400
5.74M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
53.8k
  TypeLoc getNextTypeLoc() const {
399
53.8k
    return getNextTypeLoc(asDerived()->getInnerType());
400
53.8k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
455k
  TypeLoc getNextTypeLoc() const {
399
455k
    return getNextTypeLoc(asDerived()->getInnerType());
400
455k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
18.4k
  TypeLoc getNextTypeLoc() const {
399
18.4k
    return getNextTypeLoc(asDerived()->getInnerType());
400
18.4k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
65.8k
  TypeLoc getNextTypeLoc() const {
399
65.8k
    return getNextTypeLoc(asDerived()->getInnerType());
400
65.8k
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
175k
  TypeLoc getNextTypeLoc() const {
399
175k
    return getNextTypeLoc(asDerived()->getInnerType());
400
175k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
213k
  TypeLoc getNextTypeLoc() const {
399
213k
    return getNextTypeLoc(asDerived()->getInnerType());
400
213k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNextTypeLoc() const
Line
Count
Source
398
179
  TypeLoc getNextTypeLoc() const {
399
179
    return getNextTypeLoc(asDerived()->getInnerType());
400
179
  }
401
402
342M
  const TypeClass *getTypePtr() const {
403
342M
    return cast<TypeClass>(Base::getTypePtr());
404
342M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getTypePtr() const
Line
Count
Source
402
164M
  const TypeClass *getTypePtr() const {
403
164M
    return cast<TypeClass>(Base::getTypePtr());
404
164M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getTypePtr() const
Line
Count
Source
402
83.8M
  const TypeClass *getTypePtr() const {
403
83.8M
    return cast<TypeClass>(Base::getTypePtr());
404
83.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getTypePtr() const
Line
Count
Source
402
8.11M
  const TypeClass *getTypePtr() const {
403
8.11M
    return cast<TypeClass>(Base::getTypePtr());
404
8.11M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getTypePtr() const
Line
Count
Source
402
25.2M
  const TypeClass *getTypePtr() const {
403
25.2M
    return cast<TypeClass>(Base::getTypePtr());
404
25.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getTypePtr() const
Line
Count
Source
402
80.3k
  const TypeClass *getTypePtr() const {
403
80.3k
    return cast<TypeClass>(Base::getTypePtr());
404
80.3k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getTypePtr() const
Line
Count
Source
402
17.4M
  const TypeClass *getTypePtr() const {
403
17.4M
    return cast<TypeClass>(Base::getTypePtr());
404
17.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getTypePtr() const
Line
Count
Source
402
501k
  const TypeClass *getTypePtr() const {
403
501k
    return cast<TypeClass>(Base::getTypePtr());
404
501k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getTypePtr() const
Line
Count
Source
402
2.05M
  const TypeClass *getTypePtr() const {
403
2.05M
    return cast<TypeClass>(Base::getTypePtr());
404
2.05M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getTypePtr() const
Line
Count
Source
402
448
  const TypeClass *getTypePtr() const {
403
448
    return cast<TypeClass>(Base::getTypePtr());
404
448
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getTypePtr() const
Line
Count
Source
402
1.14M
  const TypeClass *getTypePtr() const {
403
1.14M
    return cast<TypeClass>(Base::getTypePtr());
404
1.14M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getTypePtr() const
Line
Count
Source
402
4.49k
  const TypeClass *getTypePtr() const {
403
4.49k
    return cast<TypeClass>(Base::getTypePtr());
404
4.49k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getTypePtr() const
Line
Count
Source
402
3.04k
  const TypeClass *getTypePtr() const {
403
3.04k
    return cast<TypeClass>(Base::getTypePtr());
404
3.04k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getTypePtr() const
Line
Count
Source
402
3
  const TypeClass *getTypePtr() const {
403
3
    return cast<TypeClass>(Base::getTypePtr());
404
3
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getTypePtr() const
Line
Count
Source
402
19
  const TypeClass *getTypePtr() const {
403
19
    return cast<TypeClass>(Base::getTypePtr());
404
19
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getTypePtr() const
Line
Count
Source
402
7.72M
  const TypeClass *getTypePtr() const {
403
7.72M
    return cast<TypeClass>(Base::getTypePtr());
404
7.72M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getTypePtr() const
Line
Count
Source
402
1.41M
  const TypeClass *getTypePtr() const {
403
1.41M
    return cast<TypeClass>(Base::getTypePtr());
404
1.41M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getTypePtr() const
Line
Count
Source
402
24.4M
  const TypeClass *getTypePtr() const {
403
24.4M
    return cast<TypeClass>(Base::getTypePtr());
404
24.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getTypePtr() const
Line
Count
Source
402
3.12M
  const TypeClass *getTypePtr() const {
403
3.12M
    return cast<TypeClass>(Base::getTypePtr());
404
3.12M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getTypePtr() const
Line
Count
Source
402
166k
  const TypeClass *getTypePtr() const {
403
166k
    return cast<TypeClass>(Base::getTypePtr());
404
166k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getTypePtr() const
Line
Count
Source
402
1.62M
  const TypeClass *getTypePtr() const {
403
1.62M
    return cast<TypeClass>(Base::getTypePtr());
404
1.62M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getTypePtr() const
Line
Count
Source
402
20.7k
  const TypeClass *getTypePtr() const {
403
20.7k
    return cast<TypeClass>(Base::getTypePtr());
404
20.7k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getTypePtr() const
Line
Count
Source
402
461k
  const TypeClass *getTypePtr() const {
403
461k
    return cast<TypeClass>(Base::getTypePtr());
404
461k
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getTypePtr() const
Line
Count
Source
402
7.11k
  const TypeClass *getTypePtr() const {
403
7.11k
    return cast<TypeClass>(Base::getTypePtr());
404
7.11k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getTypePtr() const
Line
Count
Source
402
459k
  const TypeClass *getTypePtr() const {
403
459k
    return cast<TypeClass>(Base::getTypePtr());
404
459k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getTypePtr() const
Line
Count
Source
402
362
  const TypeClass *getTypePtr() const {
403
362
    return cast<TypeClass>(Base::getTypePtr());
404
362
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getTypePtr() const
Line
Count
Source
402
39.8k
  const TypeClass *getTypePtr() const {
403
39.8k
    return cast<TypeClass>(Base::getTypePtr());
404
39.8k
  }
405
406
protected:
407
84.9M
  unsigned getExtraLocalDataSize() const {
408
84.9M
    return 0;
409
84.9M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
407
18.2M
  unsigned getExtraLocalDataSize() const {
408
18.2M
    return 0;
409
18.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
407
58.5k
  unsigned getExtraLocalDataSize() const {
408
58.5k
    return 0;
409
58.5k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
407
12.2M
  unsigned getExtraLocalDataSize() const {
408
12.2M
    return 0;
409
12.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
407
292k
  unsigned getExtraLocalDataSize() const {
408
292k
    return 0;
409
292k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
407
1.46M
  unsigned getExtraLocalDataSize() const {
408
1.46M
    return 0;
409
1.46M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
407
805k
  unsigned getExtraLocalDataSize() const {
408
805k
    return 0;
409
805k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
407
6.41M
  unsigned getExtraLocalDataSize() const {
408
6.41M
    return 0;
409
6.41M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
407
837k
  unsigned getExtraLocalDataSize() const {
408
837k
    return 0;
409
837k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
407
983k
  unsigned getExtraLocalDataSize() const {
408
983k
    return 0;
409
983k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
407
321k
  unsigned getExtraLocalDataSize() const {
408
321k
    return 0;
409
321k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
407
264
  unsigned getExtraLocalDataSize() const {
408
264
    return 0;
409
264
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
407
29.7k
  unsigned getExtraLocalDataSize() const {
408
29.7k
    return 0;
409
29.7k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
407
266
  unsigned getExtraLocalDataSize() const {
408
266
    return 0;
409
266
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
407
39.3M
  unsigned getExtraLocalDataSize() const {
408
39.3M
    return 0;
409
39.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
407
3.75M
  unsigned getExtraLocalDataSize() const {
408
3.75M
    return 0;
409
3.75M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
407
3.11k
  unsigned getExtraLocalDataSize() const {
408
3.11k
    return 0;
409
3.11k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
407
102
  unsigned getExtraLocalDataSize() const {
408
102
    return 0;
409
102
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
407
701
  unsigned getExtraLocalDataSize() const {
408
701
    return 0;
409
701
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getExtraLocalDataSize() const
Line
Count
Source
407
106k
  unsigned getExtraLocalDataSize() const {
408
106k
    return 0;
409
106k
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getExtraLocalDataSize() const
410
411
175M
  unsigned getExtraLocalDataAlignment() const {
412
175M
    return 1;
413
175M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
411
26.4M
  unsigned getExtraLocalDataAlignment() const {
412
26.4M
    return 1;
413
26.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
411
109k
  unsigned getExtraLocalDataAlignment() const {
412
109k
    return 1;
413
109k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
411
18.0M
  unsigned getExtraLocalDataAlignment() const {
412
18.0M
    return 1;
413
18.0M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
411
354k
  unsigned getExtraLocalDataAlignment() const {
412
354k
    return 1;
413
354k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
411
2.06M
  unsigned getExtraLocalDataAlignment() const {
412
2.06M
    return 1;
413
2.06M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
411
1.56M
  unsigned getExtraLocalDataAlignment() const {
412
1.56M
    return 1;
413
1.56M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
411
10.3M
  unsigned getExtraLocalDataAlignment() const {
412
10.3M
    return 1;
413
10.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
411
1.14M
  unsigned getExtraLocalDataAlignment() const {
412
1.14M
    return 1;
413
1.14M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
411
1.25M
  unsigned getExtraLocalDataAlignment() const {
412
1.25M
    return 1;
413
1.25M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
411
556k
  unsigned getExtraLocalDataAlignment() const {
412
556k
    return 1;
413
556k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
411
458
  unsigned getExtraLocalDataAlignment() const {
412
458
    return 1;
413
458
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
411
40.1k
  unsigned getExtraLocalDataAlignment() const {
412
40.1k
    return 1;
413
40.1k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
411
503
  unsigned getExtraLocalDataAlignment() const {
412
503
    return 1;
413
503
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
411
103M
  unsigned getExtraLocalDataAlignment() const {
412
103M
    return 1;
413
103M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
411
8.90M
  unsigned getExtraLocalDataAlignment() const {
412
8.90M
    return 1;
413
8.90M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
411
1.42k
  unsigned getExtraLocalDataAlignment() const {
412
1.42k
    return 1;
413
1.42k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
411
12.2k
  unsigned getExtraLocalDataAlignment() const {
412
12.2k
    return 1;
413
12.2k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
411
212
  unsigned getExtraLocalDataAlignment() const {
412
212
    return 1;
413
212
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
411
1.41k
  unsigned getExtraLocalDataAlignment() const {
412
1.41k
    return 1;
413
1.41k
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getExtraLocalDataAlignment() const
Line
Count
Source
411
415k
  unsigned getExtraLocalDataAlignment() const {
412
415k
    return 1;
413
415k
  }
414
415
560M
  LocalData *getLocalData() const {
416
560M
    return static_cast<LocalData*>(Base::Data);
417
560M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getLocalData() const
Line
Count
Source
415
1.53M
  LocalData *getLocalData() const {
416
1.53M
    return static_cast<LocalData*>(Base::Data);
417
1.53M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getLocalData() const
Line
Count
Source
415
588
  LocalData *getLocalData() const {
416
588
    return static_cast<LocalData*>(Base::Data);
417
588
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getLocalData() const
Line
Count
Source
415
2.97k
  LocalData *getLocalData() const {
416
2.97k
    return static_cast<LocalData*>(Base::Data);
417
2.97k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getLocalData() const
Line
Count
Source
415
7.19M
  LocalData *getLocalData() const {
416
7.19M
    return static_cast<LocalData*>(Base::Data);
417
7.19M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getLocalData() const
Line
Count
Source
415
24.3M
  LocalData *getLocalData() const {
416
24.3M
    return static_cast<LocalData*>(Base::Data);
417
24.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getLocalData() const
Line
Count
Source
415
509k
  LocalData *getLocalData() const {
416
509k
    return static_cast<LocalData*>(Base::Data);
417
509k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getLocalData() const
Line
Count
Source
415
21.7M
  LocalData *getLocalData() const {
416
21.7M
    return static_cast<LocalData*>(Base::Data);
417
21.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getLocalData() const
Line
Count
Source
415
222M
  LocalData *getLocalData() const {
416
222M
    return static_cast<LocalData*>(Base::Data);
417
222M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getLocalData() const
Line
Count
Source
415
9.80M
  LocalData *getLocalData() const {
416
9.80M
    return static_cast<LocalData*>(Base::Data);
417
9.80M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getLocalData() const
Line
Count
Source
415
23.2k
  LocalData *getLocalData() const {
416
23.2k
    return static_cast<LocalData*>(Base::Data);
417
23.2k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getLocalData() const
Line
Count
Source
415
9.62M
  LocalData *getLocalData() const {
416
9.62M
    return static_cast<LocalData*>(Base::Data);
417
9.62M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getLocalData() const
Line
Count
Source
415
273k
  LocalData *getLocalData() const {
416
273k
    return static_cast<LocalData*>(Base::Data);
417
273k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getLocalData() const
Line
Count
Source
415
280
  LocalData *getLocalData() const {
416
280
    return static_cast<LocalData*>(Base::Data);
417
280
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getLocalData() const
Line
Count
Source
415
37.4M
  LocalData *getLocalData() const {
416
37.4M
    return static_cast<LocalData*>(Base::Data);
417
37.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getLocalData() const
Line
Count
Source
415
348k
  LocalData *getLocalData() const {
416
348k
    return static_cast<LocalData*>(Base::Data);
417
348k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getLocalData() const
Line
Count
Source
415
222M
  LocalData *getLocalData() const {
416
222M
    return static_cast<LocalData*>(Base::Data);
417
222M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getLocalData() const
Line
Count
Source
415
611k
  LocalData *getLocalData() const {
416
611k
    return static_cast<LocalData*>(Base::Data);
417
611k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getLocalData() const
Line
Count
Source
415
953k
  LocalData *getLocalData() const {
416
953k
    return static_cast<LocalData*>(Base::Data);
417
953k
  }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getLocalData() const
Line
Count
Source
415
400k
  LocalData *getLocalData() const {
416
400k
    return static_cast<LocalData*>(Base::Data);
417
400k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getLocalData() const
Line
Count
Source
415
143k
  LocalData *getLocalData() const {
416
143k
    return static_cast<LocalData*>(Base::Data);
417
143k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getLocalData() const
Line
Count
Source
415
154k
  LocalData *getLocalData() const {
416
154k
    return static_cast<LocalData*>(Base::Data);
417
154k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getLocalData() const
Line
Count
Source
415
30.2k
  LocalData *getLocalData() const {
416
30.2k
    return static_cast<LocalData*>(Base::Data);
417
30.2k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getLocalData() const
Line
Count
Source
415
96
  LocalData *getLocalData() const {
416
96
    return static_cast<LocalData*>(Base::Data);
417
96
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getLocalData() const
Line
Count
Source
415
25.7k
  LocalData *getLocalData() const {
416
25.7k
    return static_cast<LocalData*>(Base::Data);
417
25.7k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getLocalData() const
Line
Count
Source
415
11.6k
  LocalData *getLocalData() const {
416
11.6k
    return static_cast<LocalData*>(Base::Data);
417
11.6k
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getLocalData() const
418
419
  /// Gets a pointer past the Info structure; useful for classes with
420
  /// local data that can't be captured in the Info (e.g. because it's
421
  /// of variable size).
422
49.5M
  void *getExtraLocalData() const {
423
49.5M
    unsigned size = sizeof(LocalData);
424
49.5M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
425
49.5M
    size = llvm::alignTo(size, extraAlign);
426
49.5M
    return reinterpret_cast<char*>(Base::Data) + size;
427
49.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getExtraLocalData() const
Line
Count
Source
422
19.4M
  void *getExtraLocalData() const {
423
19.4M
    unsigned size = sizeof(LocalData);
424
19.4M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
425
19.4M
    size = llvm::alignTo(size, extraAlign);
426
19.4M
    return reinterpret_cast<char*>(Base::Data) + size;
427
19.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getExtraLocalData() const
Line
Count
Source
422
15.7M
  void *getExtraLocalData() const {
423
15.7M
    unsigned size = sizeof(LocalData);
424
15.7M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
425
15.7M
    size = llvm::alignTo(size, extraAlign);
426
15.7M
    return reinterpret_cast<char*>(Base::Data) + size;
427
15.7M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getExtraLocalData() const
Line
Count
Source
422
31.0k
  void *getExtraLocalData() const {
423
31.0k
    unsigned size = sizeof(LocalData);
424
31.0k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
425
31.0k
    size = llvm::alignTo(size, extraAlign);
426
31.0k
    return reinterpret_cast<char*>(Base::Data) + size;
427
31.0k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getExtraLocalData() const
Line
Count
Source
422
12.5k
  void *getExtraLocalData() const {
423
12.5k
    unsigned size = sizeof(LocalData);
424
12.5k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
425
12.5k
    size = llvm::alignTo(size, extraAlign);
426
12.5k
    return reinterpret_cast<char*>(Base::Data) + size;
427
12.5k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getExtraLocalData() const
Line
Count
Source
422
14.3M
  void *getExtraLocalData() const {
423
14.3M
    unsigned size = sizeof(LocalData);
424
14.3M
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
425
14.3M
    size = llvm::alignTo(size, extraAlign);
426
14.3M
    return reinterpret_cast<char*>(Base::Data) + size;
427
14.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getExtraLocalData() const
Line
Count
Source
422
992
  void *getExtraLocalData() const {
423
992
    unsigned size = sizeof(LocalData);
424
992
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
425
992
    size = llvm::alignTo(size, extraAlign);
426
992
    return reinterpret_cast<char*>(Base::Data) + size;
427
992
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getExtraLocalData() const
Line
Count
Source
422
9.85k
  void *getExtraLocalData() const {
423
9.85k
    unsigned size = sizeof(LocalData);
424
9.85k
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
425
9.85k
    size = llvm::alignTo(size, extraAlign);
426
9.85k
    return reinterpret_cast<char*>(Base::Data) + size;
427
9.85k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getExtraLocalData() const
Line
Count
Source
422
42
  void *getExtraLocalData() const {
423
42
    unsigned size = sizeof(LocalData);
424
42
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
425
42
    size = llvm::alignTo(size, extraAlign);
426
42
    return reinterpret_cast<char*>(Base::Data) + size;
427
42
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getExtraLocalData() const
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getExtraLocalData() const
Line
Count
Source
422
6
  void *getExtraLocalData() const {
423
6
    unsigned size = sizeof(LocalData);
424
6
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
425
6
    size = llvm::alignTo(size, extraAlign);
426
6
    return reinterpret_cast<char*>(Base::Data) + size;
427
6
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getExtraLocalData() const
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getExtraLocalData() const
Line
Count
Source
422
2
  void *getExtraLocalData() const {
423
2
    unsigned size = sizeof(LocalData);
424
2
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
425
2
    size = llvm::alignTo(size, extraAlign);
426
2
    return reinterpret_cast<char*>(Base::Data) + size;
427
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
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getExtraLocalData() const
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getExtraLocalData() const
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getExtraLocalData() const
Line
Count
Source
422
36
  void *getExtraLocalData() const {
423
36
    unsigned size = sizeof(LocalData);
424
36
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
425
36
    size = llvm::alignTo(size, extraAlign);
426
36
    return reinterpret_cast<char*>(Base::Data) + size;
427
36
  }
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getExtraLocalData() const
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getExtraLocalData() const
Line
Count
Source
422
2
  void *getExtraLocalData() const {
423
2
    unsigned size = sizeof(LocalData);
424
2
    unsigned extraAlign = asDerived()->getExtraLocalDataAlignment();
425
2
    size = llvm::alignTo(size, extraAlign);
426
2
    return reinterpret_cast<char*>(Base::Data) + size;
427
2
  }
428
429
46.4M
  void *getNonLocalData() const {
430
46.4M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
431
46.4M
    data += asDerived()->getLocalDataSize();
432
46.4M
    data = llvm::alignTo(data, getNextTypeAlign());
433
46.4M
    return reinterpret_cast<void*>(data);
434
46.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNonLocalData() const
Line
Count
Source
429
19.2M
  void *getNonLocalData() const {
430
19.2M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
431
19.2M
    data += asDerived()->getLocalDataSize();
432
19.2M
    data = llvm::alignTo(data, getNextTypeAlign());
433
19.2M
    return reinterpret_cast<void*>(data);
434
19.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNonLocalData() const
Line
Count
Source
429
12.6M
  void *getNonLocalData() const {
430
12.6M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
431
12.6M
    data += asDerived()->getLocalDataSize();
432
12.6M
    data = llvm::alignTo(data, getNextTypeAlign());
433
12.6M
    return reinterpret_cast<void*>(data);
434
12.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNonLocalData() const
Line
Count
Source
429
40.0k
  void *getNonLocalData() const {
430
40.0k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
431
40.0k
    data += asDerived()->getLocalDataSize();
432
40.0k
    data = llvm::alignTo(data, getNextTypeAlign());
433
40.0k
    return reinterpret_cast<void*>(data);
434
40.0k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNonLocalData() const
Line
Count
Source
429
8.10M
  void *getNonLocalData() const {
430
8.10M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
431
8.10M
    data += asDerived()->getLocalDataSize();
432
8.10M
    data = llvm::alignTo(data, getNextTypeAlign());
433
8.10M
    return reinterpret_cast<void*>(data);
434
8.10M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNonLocalData() const
Line
Count
Source
429
233k
  void *getNonLocalData() const {
430
233k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
431
233k
    data += asDerived()->getLocalDataSize();
432
233k
    data = llvm::alignTo(data, getNextTypeAlign());
433
233k
    return reinterpret_cast<void*>(data);
434
233k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNonLocalData() const
Line
Count
Source
429
1.01M
  void *getNonLocalData() const {
430
1.01M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
431
1.01M
    data += asDerived()->getLocalDataSize();
432
1.01M
    data = llvm::alignTo(data, getNextTypeAlign());
433
1.01M
    return reinterpret_cast<void*>(data);
434
1.01M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNonLocalData() const
Line
Count
Source
429
570k
  void *getNonLocalData() const {
430
570k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
431
570k
    data += asDerived()->getLocalDataSize();
432
570k
    data = llvm::alignTo(data, getNextTypeAlign());
433
570k
    return reinterpret_cast<void*>(data);
434
570k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNonLocalData() const
Line
Count
Source
429
2.24k
  void *getNonLocalData() const {
430
2.24k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
431
2.24k
    data += asDerived()->getLocalDataSize();
432
2.24k
    data = llvm::alignTo(data, getNextTypeAlign());
433
2.24k
    return reinterpret_cast<void*>(data);
434
2.24k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNonLocalData() const
Line
Count
Source
429
3.07M
  void *getNonLocalData() const {
430
3.07M
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
431
3.07M
    data += asDerived()->getLocalDataSize();
432
3.07M
    data = llvm::alignTo(data, getNextTypeAlign());
433
3.07M
    return reinterpret_cast<void*>(data);
434
3.07M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNonLocalData() const
Line
Count
Source
429
573k
  void *getNonLocalData() const {
430
573k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
431
573k
    data += asDerived()->getLocalDataSize();
432
573k
    data = llvm::alignTo(data, getNextTypeAlign());
433
573k
    return reinterpret_cast<void*>(data);
434
573k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNonLocalData() const
Line
Count
Source
429
713k
  void *getNonLocalData() const {
430
713k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
431
713k
    data += asDerived()->getLocalDataSize();
432
713k
    data = llvm::alignTo(data, getNextTypeAlign());
433
713k
    return reinterpret_cast<void*>(data);
434
713k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNonLocalData() const
Line
Count
Source
429
76.3k
  void *getNonLocalData() const {
430
76.3k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
431
76.3k
    data += asDerived()->getLocalDataSize();
432
76.3k
    data = llvm::alignTo(data, getNextTypeAlign());
433
76.3k
    return reinterpret_cast<void*>(data);
434
76.3k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNonLocalData() const
Line
Count
Source
429
227k
  void *getNonLocalData() const {
430
227k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
431
227k
    data += asDerived()->getLocalDataSize();
432
227k
    data = llvm::alignTo(data, getNextTypeAlign());
433
227k
    return reinterpret_cast<void*>(data);
434
227k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNonLocalData() const
Line
Count
Source
429
181
  void *getNonLocalData() const {
430
181
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
431
181
    data += asDerived()->getLocalDataSize();
432
181
    data = llvm::alignTo(data, getNextTypeAlign());
433
181
    return reinterpret_cast<void*>(data);
434
181
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNonLocalData() const
Line
Count
Source
429
19.9k
  void *getNonLocalData() const {
430
19.9k
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
431
19.9k
    data += asDerived()->getLocalDataSize();
432
19.9k
    data = llvm::alignTo(data, getNextTypeAlign());
433
19.9k
    return reinterpret_cast<void*>(data);
434
19.9k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNonLocalData() const
Line
Count
Source
429
187
  void *getNonLocalData() const {
430
187
    auto data = reinterpret_cast<uintptr_t>(Base::Data);
431
187
    data += asDerived()->getLocalDataSize();
432
187
    data = llvm::alignTo(data, getNextTypeAlign());
433
187
    return reinterpret_cast<void*>(data);
434
187
  }
435
436
  struct HasNoInnerType {};
437
130M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getInnerType() const
Line
Count
Source
437
16.1M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getInnerType() const
Line
Count
Source
437
77.1M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getInnerType() const
Line
Count
Source
437
5.44k
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getInnerType() const
Line
Count
Source
437
159
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getInnerType() const
Line
Count
Source
437
740
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getInnerType() const
Line
Count
Source
437
31.4M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getInnerType() const
Line
Count
Source
437
5.74M
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getInnerType() const
Line
Count
Source
437
53.8k
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getInnerType() const
Line
Count
Source
437
18.4k
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getInnerType() const
Line
Count
Source
437
175k
  HasNoInnerType getInnerType() const { return HasNoInnerType(); }
438
439
4.64M
  TypeLoc getInnerTypeLoc() const {
440
4.64M
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
441
4.64M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getInnerTypeLoc() const
Line
Count
Source
439
1.65M
  TypeLoc getInnerTypeLoc() const {
440
1.65M
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
441
1.65M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
439
1.25M
  TypeLoc getInnerTypeLoc() const {
440
1.25M
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
441
1.25M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
439
579
  TypeLoc getInnerTypeLoc() const {
440
579
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
441
579
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
439
1.27M
  TypeLoc getInnerTypeLoc() const {
440
1.27M
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
441
1.27M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getInnerTypeLoc() const
Line
Count
Source
439
1.08k
  TypeLoc getInnerTypeLoc() const {
440
1.08k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
441
1.08k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getInnerTypeLoc() const
Line
Count
Source
439
27.1k
  TypeLoc getInnerTypeLoc() const {
440
27.1k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
441
27.1k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getInnerTypeLoc() const
Line
Count
Source
439
16.7k
  TypeLoc getInnerTypeLoc() const {
440
16.7k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
441
16.7k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getInnerTypeLoc() const
Line
Count
Source
439
20
  TypeLoc getInnerTypeLoc() const {
440
20
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
441
20
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getInnerTypeLoc() const
Line
Count
Source
439
50.8k
  TypeLoc getInnerTypeLoc() const {
440
50.8k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
441
50.8k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getInnerTypeLoc() const
Line
Count
Source
439
70.7k
  TypeLoc getInnerTypeLoc() const {
440
70.7k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
441
70.7k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
439
258k
  TypeLoc getInnerTypeLoc() const {
440
258k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
441
258k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
439
10.4k
  TypeLoc getInnerTypeLoc() const {
440
10.4k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
441
10.4k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
439
13.7k
  TypeLoc getInnerTypeLoc() const {
440
13.7k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
441
13.7k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
439
2
  TypeLoc getInnerTypeLoc() const {
440
2
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
441
2
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getInnerTypeLoc() const
Line
Count
Source
439
7.86k
  TypeLoc getInnerTypeLoc() const {
440
7.86k
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
441
7.86k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getInnerTypeLoc() const
Line
Count
Source
439
1
  TypeLoc getInnerTypeLoc() const {
440
1
    return TypeLoc(asDerived()->getInnerType(), getNonLocalData());
441
1
  }
442
443
private:
444
  unsigned getInnerTypeSize() const {
445
    return getInnerTypeSize(asDerived()->getInnerType());
446
  }
447
448
  unsigned getInnerTypeSize(HasNoInnerType _) const {
449
    return 0;
450
  }
451
452
  unsigned getInnerTypeSize(QualType _) const {
453
    return getInnerTypeLoc().getFullDataSize();
454
  }
455
456
46.4M
  unsigned getNextTypeAlign() const {
457
46.4M
    return getNextTypeAlign(asDerived()->getInnerType());
458
46.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNextTypeAlign() const
Line
Count
Source
456
19.2M
  unsigned getNextTypeAlign() const {
457
19.2M
    return getNextTypeAlign(asDerived()->getInnerType());
458
19.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNextTypeAlign() const
Line
Count
Source
456
12.6M
  unsigned getNextTypeAlign() const {
457
12.6M
    return getNextTypeAlign(asDerived()->getInnerType());
458
12.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNextTypeAlign() const
Line
Count
Source
456
40.0k
  unsigned getNextTypeAlign() const {
457
40.0k
    return getNextTypeAlign(asDerived()->getInnerType());
458
40.0k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNextTypeAlign() const
Line
Count
Source
456
8.10M
  unsigned getNextTypeAlign() const {
457
8.10M
    return getNextTypeAlign(asDerived()->getInnerType());
458
8.10M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNextTypeAlign() const
Line
Count
Source
456
233k
  unsigned getNextTypeAlign() const {
457
233k
    return getNextTypeAlign(asDerived()->getInnerType());
458
233k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNextTypeAlign() const
Line
Count
Source
456
1.01M
  unsigned getNextTypeAlign() const {
457
1.01M
    return getNextTypeAlign(asDerived()->getInnerType());
458
1.01M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNextTypeAlign() const
Line
Count
Source
456
570k
  unsigned getNextTypeAlign() const {
457
570k
    return getNextTypeAlign(asDerived()->getInnerType());
458
570k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNextTypeAlign() const
Line
Count
Source
456
2.24k
  unsigned getNextTypeAlign() const {
457
2.24k
    return getNextTypeAlign(asDerived()->getInnerType());
458
2.24k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNextTypeAlign() const
Line
Count
Source
456
3.07M
  unsigned getNextTypeAlign() const {
457
3.07M
    return getNextTypeAlign(asDerived()->getInnerType());
458
3.07M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNextTypeAlign() const
Line
Count
Source
456
573k
  unsigned getNextTypeAlign() const {
457
573k
    return getNextTypeAlign(asDerived()->getInnerType());
458
573k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNextTypeAlign() const
Line
Count
Source
456
713k
  unsigned getNextTypeAlign() const {
457
713k
    return getNextTypeAlign(asDerived()->getInnerType());
458
713k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNextTypeAlign() const
Line
Count
Source
456
76.3k
  unsigned getNextTypeAlign() const {
457
76.3k
    return getNextTypeAlign(asDerived()->getInnerType());
458
76.3k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNextTypeAlign() const
Line
Count
Source
456
227k
  unsigned getNextTypeAlign() const {
457
227k
    return getNextTypeAlign(asDerived()->getInnerType());
458
227k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNextTypeAlign() const
Line
Count
Source
456
181
  unsigned getNextTypeAlign() const {
457
181
    return getNextTypeAlign(asDerived()->getInnerType());
458
181
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNextTypeAlign() const
Line
Count
Source
456
19.9k
  unsigned getNextTypeAlign() const {
457
19.9k
    return getNextTypeAlign(asDerived()->getInnerType());
458
19.9k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNextTypeAlign() const
Line
Count
Source
456
187
  unsigned getNextTypeAlign() const {
457
187
    return getNextTypeAlign(asDerived()->getInnerType());
458
187
  }
459
460
  unsigned getNextTypeAlign(HasNoInnerType _) const {
461
    return 1;
462
  }
463
464
46.4M
  unsigned getNextTypeAlign(QualType T) const {
465
46.4M
    return TypeLoc::getLocalAlignmentForType(T);
466
46.4M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
464
19.2M
  unsigned getNextTypeAlign(QualType T) const {
465
19.2M
    return TypeLoc::getLocalAlignmentForType(T);
466
19.2M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
464
12.6M
  unsigned getNextTypeAlign(QualType T) const {
465
12.6M
    return TypeLoc::getLocalAlignmentForType(T);
466
12.6M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
464
40.0k
  unsigned getNextTypeAlign(QualType T) const {
465
40.0k
    return TypeLoc::getLocalAlignmentForType(T);
466
40.0k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
464
8.10M
  unsigned getNextTypeAlign(QualType T) const {
465
8.10M
    return TypeLoc::getLocalAlignmentForType(T);
466
8.10M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
464
233k
  unsigned getNextTypeAlign(QualType T) const {
465
233k
    return TypeLoc::getLocalAlignmentForType(T);
466
233k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
464
1.01M
  unsigned getNextTypeAlign(QualType T) const {
465
1.01M
    return TypeLoc::getLocalAlignmentForType(T);
466
1.01M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
464
570k
  unsigned getNextTypeAlign(QualType T) const {
465
570k
    return TypeLoc::getLocalAlignmentForType(T);
466
570k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
464
2.24k
  unsigned getNextTypeAlign(QualType T) const {
465
2.24k
    return TypeLoc::getLocalAlignmentForType(T);
466
2.24k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
464
3.07M
  unsigned getNextTypeAlign(QualType T) const {
465
3.07M
    return TypeLoc::getLocalAlignmentForType(T);
466
3.07M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
464
573k
  unsigned getNextTypeAlign(QualType T) const {
465
573k
    return TypeLoc::getLocalAlignmentForType(T);
466
573k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
464
713k
  unsigned getNextTypeAlign(QualType T) const {
465
713k
    return TypeLoc::getLocalAlignmentForType(T);
466
713k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
464
76.3k
  unsigned getNextTypeAlign(QualType T) const {
465
76.3k
    return TypeLoc::getLocalAlignmentForType(T);
466
76.3k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
464
227k
  unsigned getNextTypeAlign(QualType T) const {
465
227k
    return TypeLoc::getLocalAlignmentForType(T);
466
227k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
464
181
  unsigned getNextTypeAlign(QualType T) const {
465
181
    return TypeLoc::getLocalAlignmentForType(T);
466
181
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
464
19.9k
  unsigned getNextTypeAlign(QualType T) const {
465
19.9k
    return TypeLoc::getLocalAlignmentForType(T);
466
19.9k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNextTypeAlign(clang::QualType) const
Line
Count
Source
464
187
  unsigned getNextTypeAlign(QualType T) const {
465
187
    return TypeLoc::getLocalAlignmentForType(T);
466
187
  }
467
468
130M
  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
468
16.1M
  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
468
77.1M
  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
468
5.44k
  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
468
159
  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
468
740
  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
468
31.4M
  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
468
5.74M
  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
468
53.8k
  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
468
18.4k
  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
468
175k
  TypeLoc getNextTypeLoc(HasNoInnerType _) const { return {}; }
469
470
41.8M
  TypeLoc getNextTypeLoc(QualType T) const {
471
41.8M
    return TypeLoc(T, getNonLocalData());
472
41.8M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
470
11.3M
  TypeLoc getNextTypeLoc(QualType T) const {
471
11.3M
    return TypeLoc(T, getNonLocalData());
472
11.3M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
470
39.5k
  TypeLoc getNextTypeLoc(QualType T) const {
471
39.5k
    return TypeLoc(T, getNonLocalData());
472
39.5k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
470
6.82M
  TypeLoc getNextTypeLoc(QualType T) const {
471
6.82M
    return TypeLoc(T, getNonLocalData());
472
6.82M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
470
232k
  TypeLoc getNextTypeLoc(QualType T) const {
471
232k
    return TypeLoc(T, getNonLocalData());
472
232k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
470
12.0k
  TypeLoc getNextTypeLoc(QualType T) const {
471
12.0k
    return TypeLoc(T, getNonLocalData());
472
12.0k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
470
503k
  TypeLoc getNextTypeLoc(QualType T) const {
471
503k
    return TypeLoc(T, getNonLocalData());
472
503k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
470
2.22k
  TypeLoc getNextTypeLoc(QualType T) const {
471
2.22k
    return TypeLoc(T, getNonLocalData());
472
2.22k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
470
3.02M
  TypeLoc getNextTypeLoc(QualType T) const {
471
3.02M
    return TypeLoc(T, getNonLocalData());
472
3.02M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
470
983k
  TypeLoc getNextTypeLoc(QualType T) const {
471
983k
    return TypeLoc(T, getNonLocalData());
472
983k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
470
186
  TypeLoc getNextTypeLoc(QualType T) const {
471
186
    return TypeLoc(T, getNonLocalData());
472
186
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
470
17.5M
  TypeLoc getNextTypeLoc(QualType T) const {
471
17.5M
    return TypeLoc(T, getNonLocalData());
472
17.5M
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
470
553k
  TypeLoc getNextTypeLoc(QualType T) const {
471
553k
    return TypeLoc(T, getNonLocalData());
472
553k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
470
455k
  TypeLoc getNextTypeLoc(QualType T) const {
471
455k
    return TypeLoc(T, getNonLocalData());
472
455k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
470
65.8k
  TypeLoc getNextTypeLoc(QualType T) const {
471
65.8k
    return TypeLoc(T, getNonLocalData());
472
65.8k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
470
213k
  TypeLoc getNextTypeLoc(QualType T) const {
471
213k
    return TypeLoc(T, getNonLocalData());
472
213k
  }
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNextTypeLoc(clang::QualType) const
Line
Count
Source
470
179
  TypeLoc getNextTypeLoc(QualType T) const {
471
179
    return TypeLoc(T, getNonLocalData());
472
179
  }
473
};
474
475
/// A metaprogramming class designed for concrete subtypes of abstract
476
/// types where all subtypes share equivalently-structured source
477
/// information.  See the note on ConcreteTypeLoc.
478
template <class Base, class Derived, class TypeClass>
479
class InheritingConcreteTypeLoc : public Base {
480
  friend class TypeLoc;
481
482
4.36M
  static bool classofType(const Type *Ty) {
483
4.36M
    return TypeClass::classof(Ty);
484
4.36M
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionProtoTypeLoc, clang::FunctionProtoType>::classofType(clang::Type const*)
Line
Count
Source
482
4.35M
  static bool classofType(const Type *Ty) {
483
4.35M
    return TypeClass::classof(Ty);
484
4.35M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TypedefTypeLoc, clang::TypedefType>::classofType(clang::Type const*)
Line
Count
Source
482
688
  static bool classofType(const Type *Ty) {
483
688
    return TypeClass::classof(Ty);
484
688
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::ConstantArrayTypeLoc, clang::ConstantArrayType>::classofType(clang::Type const*)
Line
Count
Source
482
17
  static bool classofType(const Type *Ty) {
483
17
    return TypeClass::classof(Ty);
484
17
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionNoProtoTypeLoc, clang::FunctionNoProtoType>::classofType(clang::Type const*)
Line
Count
Source
482
389
  static bool classofType(const Type *Ty) {
483
389
    return TypeClass::classof(Ty);
484
389
  }
clang::InheritingConcreteTypeLoc<clang::AdjustedTypeLoc, clang::DecayedTypeLoc, clang::DecayedType>::classofType(clang::Type const*)
Line
Count
Source
482
5
  static bool classofType(const Type *Ty) {
483
5
    return TypeClass::classof(Ty);
484
5
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::IncompleteArrayTypeLoc, clang::IncompleteArrayType>::classofType(clang::Type const*)
Line
Count
Source
482
49
  static bool classofType(const Type *Ty) {
483
49
    return TypeClass::classof(Ty);
484
49
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::InjectedClassNameTypeLoc, clang::InjectedClassNameType>::classofType(clang::Type const*)
Line
Count
Source
482
29
  static bool classofType(const Type *Ty) {
483
29
    return TypeClass::classof(Ty);
484
29
  }
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::RecordTypeLoc, clang::RecordType>::classofType(clang::Type const*)
Line
Count
Source
482
28
  static bool classofType(const Type *Ty) {
483
28
    return TypeClass::classof(Ty);
484
28
  }
clang::InheritingConcreteTypeLoc<clang::DeducedTypeLoc, clang::DeducedTemplateSpecializationTypeLoc, clang::DeducedTemplateSpecializationType>::classofType(clang::Type const*)
Line
Count
Source
482
5.39k
  static bool classofType(const Type *Ty) {
483
5.39k
    return TypeClass::classof(Ty);
484
5.39k
  }
485
486
4.36M
  static bool isKind(const TypeLoc &TL) {
487
4.36M
    return !TL.getType().hasLocalQualifiers() &&
488
4.36M
           
Derived::classofType(TL.getTypePtr())4.36M
;
489
4.36M
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionProtoTypeLoc, clang::FunctionProtoType>::isKind(clang::TypeLoc const&)
Line
Count
Source
486
4.35M
  static bool isKind(const TypeLoc &TL) {
487
4.35M
    return !TL.getType().hasLocalQualifiers() &&
488
4.35M
           Derived::classofType(TL.getTypePtr());
489
4.35M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TypedefTypeLoc, clang::TypedefType>::isKind(clang::TypeLoc const&)
Line
Count
Source
486
688
  static bool isKind(const TypeLoc &TL) {
487
688
    return !TL.getType().hasLocalQualifiers() &&
488
688
           Derived::classofType(TL.getTypePtr());
489
688
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::ConstantArrayTypeLoc, clang::ConstantArrayType>::isKind(clang::TypeLoc const&)
Line
Count
Source
486
17
  static bool isKind(const TypeLoc &TL) {
487
17
    return !TL.getType().hasLocalQualifiers() &&
488
17
           Derived::classofType(TL.getTypePtr());
489
17
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionNoProtoTypeLoc, clang::FunctionNoProtoType>::isKind(clang::TypeLoc const&)
Line
Count
Source
486
389
  static bool isKind(const TypeLoc &TL) {
487
389
    return !TL.getType().hasLocalQualifiers() &&
488
389
           Derived::classofType(TL.getTypePtr());
489
389
  }
clang::InheritingConcreteTypeLoc<clang::AdjustedTypeLoc, clang::DecayedTypeLoc, clang::DecayedType>::isKind(clang::TypeLoc const&)
Line
Count
Source
486
5
  static bool isKind(const TypeLoc &TL) {
487
5
    return !TL.getType().hasLocalQualifiers() &&
488
5
           Derived::classofType(TL.getTypePtr());
489
5
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::IncompleteArrayTypeLoc, clang::IncompleteArrayType>::isKind(clang::TypeLoc const&)
Line
Count
Source
486
51
  static bool isKind(const TypeLoc &TL) {
487
51
    return !TL.getType().hasLocalQualifiers() &&
488
51
           
Derived::classofType(TL.getTypePtr())49
;
489
51
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::InjectedClassNameTypeLoc, clang::InjectedClassNameType>::isKind(clang::TypeLoc const&)
Line
Count
Source
486
29
  static bool isKind(const TypeLoc &TL) {
487
29
    return !TL.getType().hasLocalQualifiers() &&
488
29
           Derived::classofType(TL.getTypePtr());
489
29
  }
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::RecordTypeLoc, clang::RecordType>::isKind(clang::TypeLoc const&)
Line
Count
Source
486
28
  static bool isKind(const TypeLoc &TL) {
487
28
    return !TL.getType().hasLocalQualifiers() &&
488
28
           Derived::classofType(TL.getTypePtr());
489
28
  }
clang::InheritingConcreteTypeLoc<clang::DeducedTypeLoc, clang::DeducedTemplateSpecializationTypeLoc, clang::DeducedTemplateSpecializationType>::isKind(clang::TypeLoc const&)
Line
Count
Source
486
5.48k
  static bool isKind(const TypeLoc &TL) {
487
5.48k
    return !TL.getType().hasLocalQualifiers() &&
488
5.48k
           
Derived::classofType(TL.getTypePtr())5.39k
;
489
5.48k
  }
490
  static bool isKind(const UnqualTypeLoc &TL) {
491
    return Derived::classofType(TL.getTypePtr());
492
  }
493
494
public:
495
16.3M
  const TypeClass *getTypePtr() const {
496
16.3M
    return cast<TypeClass>(Base::getTypePtr());
497
16.3M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::ComplexTypeLoc, clang::ComplexType>::getTypePtr() const
Line
Count
Source
495
57
  const TypeClass *getTypePtr() const {
496
57
    return cast<TypeClass>(Base::getTypePtr());
497
57
  }
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::LValueReferenceTypeLoc, clang::LValueReferenceType>::getTypePtr() const
Line
Count
Source
495
2.80k
  const TypeClass *getTypePtr() const {
496
2.80k
    return cast<TypeClass>(Base::getTypePtr());
497
2.80k
  }
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::RValueReferenceTypeLoc, clang::RValueReferenceType>::getTypePtr() const
Line
Count
Source
495
1.05k
  const TypeClass *getTypePtr() const {
496
1.05k
    return cast<TypeClass>(Base::getTypePtr());
497
1.05k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::ConstantArrayTypeLoc, clang::ConstantArrayType>::getTypePtr() const
Line
Count
Source
495
8.73k
  const TypeClass *getTypePtr() const {
496
8.73k
    return cast<TypeClass>(Base::getTypePtr());
497
8.73k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::IncompleteArrayTypeLoc, clang::IncompleteArrayType>::getTypePtr() const
Line
Count
Source
495
3.01k
  const TypeClass *getTypePtr() const {
496
3.01k
    return cast<TypeClass>(Base::getTypePtr());
497
3.01k
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::VariableArrayTypeLoc, clang::VariableArrayType>::getTypePtr() const
Line
Count
Source
495
190
  const TypeClass *getTypePtr() const {
496
190
    return cast<TypeClass>(Base::getTypePtr());
497
190
  }
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::DependentSizedArrayTypeLoc, clang::DependentSizedArrayType>::getTypePtr() const
Line
Count
Source
495
17.7k
  const TypeClass *getTypePtr() const {
496
17.7k
    return cast<TypeClass>(Base::getTypePtr());
497
17.7k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType>::getTypePtr() const
Line
Count
Source
495
19
  const TypeClass *getTypePtr() const {
496
19
    return cast<TypeClass>(Base::getTypePtr());
497
19
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::VectorTypeLoc, clang::VectorType>::getTypePtr() const
Line
Count
Source
495
43
  const TypeClass *getTypePtr() const {
496
43
    return cast<TypeClass>(Base::getTypePtr());
497
43
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType>::getTypePtr() const
Line
Count
Source
495
39
  const TypeClass *getTypePtr() const {
496
39
    return cast<TypeClass>(Base::getTypePtr());
497
39
  }
clang::InheritingConcreteTypeLoc<clang::VectorTypeLoc, clang::ExtVectorTypeLoc, clang::ExtVectorType>::getTypePtr() const
Line
Count
Source
495
19
  const TypeClass *getTypePtr() const {
496
19
    return cast<TypeClass>(Base::getTypePtr());
497
19
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionProtoTypeLoc, clang::FunctionProtoType>::getTypePtr() const
Line
Count
Source
495
8.12M
  const TypeClass *getTypePtr() const {
496
8.12M
    return cast<TypeClass>(Base::getTypePtr());
497
8.12M
  }
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionNoProtoTypeLoc, clang::FunctionNoProtoType>::getTypePtr() const
Line
Count
Source
495
1.64k
  const TypeClass *getTypePtr() const {
496
1.64k
    return cast<TypeClass>(Base::getTypePtr());
497
1.64k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::UnresolvedUsingTypeLoc, clang::UnresolvedUsingType>::getTypePtr() const
Line
Count
Source
495
22
  const TypeClass *getTypePtr() const {
496
22
    return cast<TypeClass>(Base::getTypePtr());
497
22
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TypedefTypeLoc, clang::TypedefType>::getTypePtr() const
Line
Count
Source
495
1.60M
  const TypeClass *getTypePtr() const {
496
1.60M
    return cast<TypeClass>(Base::getTypePtr());
497
1.60M
  }
Unexecuted instantiation: clang::InheritingConcreteTypeLoc<clang::AdjustedTypeLoc, clang::DecayedTypeLoc, clang::DecayedType>::getTypePtr() const
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType>::getTypePtr() const
Line
Count
Source
495
112k
  const TypeClass *getTypePtr() const {
496
112k
    return cast<TypeClass>(Base::getTypePtr());
497
112k
  }
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::RecordTypeLoc, clang::RecordType>::getTypePtr() const
Line
Count
Source
495
83.9k
  const TypeClass *getTypePtr() const {
496
83.9k
    return cast<TypeClass>(Base::getTypePtr());
497
83.9k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TagTypeLoc, clang::TagType>::getTypePtr() const
Line
Count
Source
495
85.8k
  const TypeClass *getTypePtr() const {
496
85.8k
    return cast<TypeClass>(Base::getTypePtr());
497
85.8k
  }
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::EnumTypeLoc, clang::EnumType>::getTypePtr() const
Line
Count
Source
495
409
  const TypeClass *getTypePtr() const {
496
409
    return cast<TypeClass>(Base::getTypePtr());
497
409
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TemplateTypeParmTypeLoc, clang::TemplateTypeParmType>::getTypePtr() const
Line
Count
Source
495
5.59M
  const TypeClass *getTypePtr() const {
496
5.59M
    return cast<TypeClass>(Base::getTypePtr());
497
5.59M
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmTypeLoc, clang::SubstTemplateTypeParmType>::getTypePtr() const
Line
Count
Source
495
15.0k
  const TypeClass *getTypePtr() const {
496
15.0k
    return cast<TypeClass>(Base::getTypePtr());
497
15.0k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmPackTypeLoc, clang::SubstTemplateTypeParmPackType>::getTypePtr() const
Line
Count
Source
495
106
  const TypeClass *getTypePtr() const {
496
106
    return cast<TypeClass>(Base::getTypePtr());
497
106
  }
clang::InheritingConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType>::getTypePtr() const
Line
Count
Source
495
31.9k
  const TypeClass *getTypePtr() const {
496
31.9k
    return cast<TypeClass>(Base::getTypePtr());
497
31.9k
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DeducedTypeLoc, clang::DeducedType>::getTypePtr() const
Line
Count
Source
495
32.2k
  const TypeClass *getTypePtr() const {
496
32.2k
    return cast<TypeClass>(Base::getTypePtr());
497
32.2k
  }
clang::InheritingConcreteTypeLoc<clang::DeducedTypeLoc, clang::DeducedTemplateSpecializationTypeLoc, clang::DeducedTemplateSpecializationType>::getTypePtr() const
Line
Count
Source
495
310
  const TypeClass *getTypePtr() const {
496
310
    return cast<TypeClass>(Base::getTypePtr());
497
310
  }
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::InjectedClassNameTypeLoc, clang::InjectedClassNameType>::getTypePtr() const
Line
Count
Source
495
668k
  const TypeClass *getTypePtr() const {
496
668k
    return cast<TypeClass>(Base::getTypePtr());
497
668k
  }
498
};
499
500
struct TypeSpecLocInfo {
501
  SourceLocation NameLoc;
502
};
503
504
/// A reasonable base class for TypeLocs that correspond to
505
/// types that are written as a type-specifier.
506
class TypeSpecTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
507
                                               TypeSpecTypeLoc,
508
                                               Type,
509
                                               TypeSpecLocInfo> {
510
public:
511
  enum {
512
    LocalDataSize = sizeof(TypeSpecLocInfo),
513
    LocalDataAlignment = alignof(TypeSpecLocInfo)
514
  };
515
516
191M
  SourceLocation getNameLoc() const {
517
191M
    return this->getLocalData()->NameLoc;
518
191M
  }
519
520
31.3M
  void setNameLoc(SourceLocation Loc) {
521
31.3M
    this->getLocalData()->NameLoc = Loc;
522
31.3M
  }
523
524
89.8M
  SourceRange getLocalSourceRange() const {
525
89.8M
    return SourceRange(getNameLoc(), getNameLoc());
526
89.8M
  }
527
528
6.85M
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
529
6.85M
    setNameLoc(Loc);
530
6.85M
  }
531
532
private:
533
  friend class TypeLoc;
534
535
  static bool isKind(const TypeLoc &TL);
536
};
537
538
struct BuiltinLocInfo {
539
  SourceRange BuiltinRange;
540
};
541
542
/// Wrapper for source info for builtin types.
543
class BuiltinTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
544
                                              BuiltinTypeLoc,
545
                                              BuiltinType,
546
                                              BuiltinLocInfo> {
547
public:
548
720k
  SourceLocation getBuiltinLoc() const {
549
720k
    return getLocalData()->BuiltinRange.getBegin();
550
720k
  }
551
552
10.7M
  void setBuiltinLoc(SourceLocation Loc) {
553
10.7M
    getLocalData()->BuiltinRange = Loc;
554
10.7M
  }
555
556
1.49M
  void expandBuiltinRange(SourceRange Range) {
557
1.49M
    SourceRange &BuiltinRange = getLocalData()->BuiltinRange;
558
1.49M
    if (!BuiltinRange.getBegin().isValid()) {
559
711k
      BuiltinRange = Range;
560
783k
    } else {
561
783k
      BuiltinRange.setBegin(std::min(Range.getBegin(), BuiltinRange.getBegin()));
562
783k
      BuiltinRange.setEnd(std::max(Range.getEnd(), BuiltinRange.getEnd()));
563
783k
    }
564
1.49M
  }
565
566
0
  SourceLocation getNameLoc() const { return getBuiltinLoc(); }
567
568
5.46M
  WrittenBuiltinSpecs& getWrittenBuiltinSpecs() {
569
5.46M
    return *(static_cast<WrittenBuiltinSpecs*>(getExtraLocalData()));
570
5.46M
  }
571
8.86M
  const WrittenBuiltinSpecs& getWrittenBuiltinSpecs() const {
572
8.86M
    return *(static_cast<WrittenBuiltinSpecs*>(getExtraLocalData()));
573
8.86M
  }
574
575
83.8M
  bool needsExtraLocalData() const {
576
83.8M
    BuiltinType::Kind bk = getTypePtr()->getKind();
577
83.8M
    return (bk >= BuiltinType::UShort && 
bk <= BuiltinType::UInt12856.9M
)
578
83.8M
      || 
(78.2M
bk >= BuiltinType::Short78.2M
&&
bk <= BuiltinType::Float12841.9M
)
579
83.8M
      || 
bk == BuiltinType::UChar36.5M
580
83.8M
      || 
bk == BuiltinType::SChar35.4M
;
581
83.8M
  }
582
583
11.4M
  unsigned getExtraLocalDataSize() const {
584
11.4M
    return needsExtraLocalData() ? 
sizeof(WrittenBuiltinSpecs)5.26M
:
06.14M
;
585
11.4M
  }
586
587
52.3M
  unsigned getExtraLocalDataAlignment() const {
588
52.3M
    return needsExtraLocalData() ? 
alignof(WrittenBuiltinSpecs)28.8M
:
123.4M
;
589
52.3M
  }
590
591
8.71M
  SourceRange getLocalSourceRange() const {
592
8.71M
    return getLocalData()->BuiltinRange;
593
8.71M
  }
594
595
4.32M
  TypeSpecifierSign getWrittenSignSpec() const {
596
4.32M
    if (needsExtraLocalData())
597
4.32M
      return static_cast<TypeSpecifierSign>(getWrittenBuiltinSpecs().Sign);
598
0
    else
599
0
      return TSS_unspecified;
600
4.32M
  }
601
602
0
  bool hasWrittenSignSpec() const {
603
0
    return getWrittenSignSpec() != TSS_unspecified;
604
0
  }
605
606
70.6k
  void setWrittenSignSpec(TypeSpecifierSign written) {
607
70.6k
    if (needsExtraLocalData())
608
70.6k
      getWrittenBuiltinSpecs().Sign = written;
609
70.6k
  }
610
611
4.32M
  TypeSpecifierWidth getWrittenWidthSpec() const {
612
4.32M
    if (needsExtraLocalData())
613
4.32M
      return static_cast<TypeSpecifierWidth>(getWrittenBuiltinSpecs().Width);
614
0
    else
615
0
      return TSW_unspecified;
616
4.32M
  }
617
618
0
  bool hasWrittenWidthSpec() const {
619
0
    return getWrittenWidthSpec() != TSW_unspecified;
620
0
  }
621
622
70.6k
  void setWrittenWidthSpec(TypeSpecifierWidth written) {
623
70.6k
    if (needsExtraLocalData())
624
70.6k
      getWrittenBuiltinSpecs().Width = written;
625
70.6k
  }
626
627
  TypeSpecifierType getWrittenTypeSpec() const;
628
629
0
  bool hasWrittenTypeSpec() const {
630
0
    return getWrittenTypeSpec() != TST_unspecified;
631
0
  }
632
633
70.6k
  void setWrittenTypeSpec(TypeSpecifierType written) {
634
70.6k
    if (needsExtraLocalData())
635
70.6k
      getWrittenBuiltinSpecs().Type = written;
636
70.6k
  }
637
638
104k
  bool hasModeAttr() const {
639
104k
    if (needsExtraLocalData())
640
104k
      return getWrittenBuiltinSpecs().ModeAttr;
641
0
    else
642
0
      return false;
643
104k
  }
644
645
70.6k
  void setModeAttr(bool written) {
646
70.6k
    if (needsExtraLocalData())
647
70.6k
      getWrittenBuiltinSpecs().ModeAttr = written;
648
70.6k
  }
649
650
1.17M
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
651
1.17M
    setBuiltinLoc(Loc);
652
1.17M
    if (needsExtraLocalData()) {
653
904k
      WrittenBuiltinSpecs &wbs = getWrittenBuiltinSpecs();
654
904k
      wbs.Sign = TSS_unspecified;
655
904k
      wbs.Width = TSW_unspecified;
656
904k
      wbs.Type = TST_unspecified;
657
904k
      wbs.ModeAttr = false;
658
904k
    }
659
1.17M
  }
660
};
661
662
/// Wrapper for source info for typedefs.
663
class TypedefTypeLoc : public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
664
                                                        TypedefTypeLoc,
665
                                                        TypedefType> {
666
public:
667
493
  TypedefNameDecl *getTypedefNameDecl() const {
668
493
    return getTypePtr()->getDecl();
669
493
  }
670
};
671
672
/// Wrapper for source info for injected class names of class
673
/// templates.
674
class InjectedClassNameTypeLoc :
675
    public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
676
                                     InjectedClassNameTypeLoc,
677
                                     InjectedClassNameType> {
678
public:
679
  CXXRecordDecl *getDecl() const {
680
    return getTypePtr()->getDecl();
681
  }
682
};
683
684
/// Wrapper for source info for unresolved typename using decls.
685
class UnresolvedUsingTypeLoc :
686
    public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
687
                                     UnresolvedUsingTypeLoc,
688
                                     UnresolvedUsingType> {
689
public:
690
0
  UnresolvedUsingTypenameDecl *getDecl() const {
691
0
    return getTypePtr()->getDecl();
692
0
  }
693
};
694
695
/// Wrapper for source info for tag types.  Note that this only
696
/// records source info for the name itself; a type written 'struct foo'
697
/// should be represented as an ElaboratedTypeLoc.  We currently
698
/// only do that when C++ is enabled because of the expense of
699
/// creating an ElaboratedType node for so many type references in C.
700
class TagTypeLoc : public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
701
                                                    TagTypeLoc,
702
                                                    TagType> {
703
public:
704
1.49k
  TagDecl *getDecl() const { return getTypePtr()->getDecl(); }
705
706
  /// True if the tag was defined in this type specifier.
707
  bool isDefinition() const {
708
    TagDecl *D = getDecl();
709
    return D->isCompleteDefinition() &&
710
           (D->getIdentifier() == nullptr || D->getLocation() == getNameLoc());
711
  }
712
};
713
714
/// Wrapper for source info for record types.
715
class RecordTypeLoc : public InheritingConcreteTypeLoc<TagTypeLoc,
716
                                                       RecordTypeLoc,
717
                                                       RecordType> {
718
public:
719
38
  RecordDecl *getDecl() const { return getTypePtr()->getDecl(); }
720
};
721
722
/// Wrapper for source info for enum types.
723
class EnumTypeLoc : public InheritingConcreteTypeLoc<TagTypeLoc,
724
                                                     EnumTypeLoc,
725
                                                     EnumType> {
726
public:
727
0
  EnumDecl *getDecl() const { return getTypePtr()->getDecl(); }
728
};
729
730
/// Wrapper for template type parameters.
731
class TemplateTypeParmTypeLoc :
732
    public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
733
                                     TemplateTypeParmTypeLoc,
734
                                     TemplateTypeParmType> {
735
public:
736
  TemplateTypeParmDecl *getDecl() const { return getTypePtr()->getDecl(); }
737
};
738
739
struct ObjCTypeParamTypeLocInfo {
740
  SourceLocation NameLoc;
741
};
742
743
/// ProtocolLAngleLoc, ProtocolRAngleLoc, and the source locations for
744
/// protocol qualifiers are stored after Info.
745
class ObjCTypeParamTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
746
                                     ObjCTypeParamTypeLoc,
747
                                     ObjCTypeParamType,
748
                                     ObjCTypeParamTypeLocInfo> {
749
  // SourceLocations are stored after Info, one for each protocol qualifier.
750
284
  SourceLocation *getProtocolLocArray() const {
751
284
    return (SourceLocation*)this->getExtraLocalData() + 2;
752
284
  }
753
754
public:
755
  ObjCTypeParamDecl *getDecl() const { return getTypePtr()->getDecl(); }
756
757
3.30k
  SourceLocation getNameLoc() const {
758
3.30k
    return this->getLocalData()->NameLoc;
759
3.30k
  }
760
761
8.33k
  void setNameLoc(SourceLocation Loc) {
762
8.33k
    this->getLocalData()->NameLoc = Loc;
763
8.33k
  }
764
765
6
  SourceLocation getProtocolLAngleLoc() const {
766
6
    return getNumProtocols()  ?
767
6
      *((SourceLocation*)this->getExtraLocalData()) :
768
6
      
SourceLocation()0
;
769
6
  }
770
771
272
  void setProtocolLAngleLoc(SourceLocation Loc) {
772
272
    *((SourceLocation*)this->getExtraLocalData()) = Loc;
773
272
  }
774
775
3.30k
  SourceLocation getProtocolRAngleLoc() const {
776
3.30k
    return getNumProtocols()  ?
777
158
      *((SourceLocation*)this->getExtraLocalData() + 1) :
778
3.30k
      
SourceLocation()3.14k
;
779
3.30k
  }
780
781
272
  void setProtocolRAngleLoc(SourceLocation Loc) {
782
272
    *((SourceLocation*)this->getExtraLocalData() + 1) = Loc;
783
272
  }
784
785
20.7k
  unsigned getNumProtocols() const {
786
20.7k
    return this->getTypePtr()->getNumProtocols();
787
20.7k
  }
788
789
7
  SourceLocation getProtocolLoc(unsigned i) const {
790
7
    assert(i < getNumProtocols() && "Index is out of bounds!");
791
7
    return getProtocolLocArray()[i];
792
7
  }
793
794
277
  void setProtocolLoc(unsigned i, SourceLocation Loc) {
795
277
    assert(i < getNumProtocols() && "Index is out of bounds!");
796
277
    getProtocolLocArray()[i] = Loc;
797
277
  }
798
799
0
  ObjCProtocolDecl *getProtocol(unsigned i) const {
800
0
    assert(i < getNumProtocols() && "Index is out of bounds!");
801
0
    return *(this->getTypePtr()->qual_begin() + i);
802
0
  }
803
804
0
  ArrayRef<SourceLocation> getProtocolLocs() const {
805
0
    return llvm::makeArrayRef(getProtocolLocArray(), getNumProtocols());
806
0
  }
807
808
  void initializeLocal(ASTContext &Context, SourceLocation Loc);
809
810
8.47k
  unsigned getExtraLocalDataSize() const {
811
8.47k
    if (!this->getNumProtocols()) 
return 08.20k
;
812
272
    // When there are protocol qualifers, we have LAngleLoc and RAngleLoc
813
272
    // as well.
814
272
    return (this->getNumProtocols() + 2) * sizeof(SourceLocation) ;
815
272
  }
816
817
23.6k
  unsigned getExtraLocalDataAlignment() const {
818
23.6k
    return alignof(SourceLocation);
819
23.6k
  }
820
821
3.30k
  SourceRange getLocalSourceRange() const {
822
3.30k
    SourceLocation start = getNameLoc();
823
3.30k
    SourceLocation end = getProtocolRAngleLoc();
824
3.30k
    if (end.isInvalid()) 
return SourceRange(start, start)3.14k
;
825
152
    return SourceRange(start, end);
826
152
  }
827
};
828
829
/// Wrapper for substituted template type parameters.
830
class SubstTemplateTypeParmTypeLoc :
831
    public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
832
                                     SubstTemplateTypeParmTypeLoc,
833
                                     SubstTemplateTypeParmType> {
834
};
835
836
  /// Wrapper for substituted template type parameters.
837
class SubstTemplateTypeParmPackTypeLoc :
838
    public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
839
                                     SubstTemplateTypeParmPackTypeLoc,
840
                                     SubstTemplateTypeParmPackType> {
841
};
842
843
struct AttributedLocInfo {
844
  const Attr *TypeAttr;
845
};
846
847
/// Type source information for an attributed type.
848
class AttributedTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
849
                                                 AttributedTypeLoc,
850
                                                 AttributedType,
851
                                                 AttributedLocInfo> {
852
public:
853
116
  attr::Kind getAttrKind() const {
854
116
    return getTypePtr()->getAttrKind();
855
116
  }
856
857
23
  bool isQualifier() const {
858
23
    return getTypePtr()->isQualifier();
859
23
  }
860
861
  /// The modified type, which is generally canonically different from
862
  /// the attribute type.
863
  ///    int main(int, char**) __attribute__((noreturn))
864
  ///    ~~~     ~~~~~~~~~~~~~
865
70.7k
  TypeLoc getModifiedLoc() const {
866
70.7k
    return getInnerTypeLoc();
867
70.7k
  }
868
869
  /// The type attribute.
870
86.0k
  const Attr *getAttr() const {
871
86.0k
    return getLocalData()->TypeAttr;
872
86.0k
  }
873
262k
  void setAttr(const Attr *A) {
874
262k
    getLocalData()->TypeAttr = A;
875
262k
  }
876
877
3.32k
  template<typename T> const T *getAttrAs() {
878
3.32k
    return dyn_cast_or_null<T>(getAttr());
879
3.32k
  }
clang::ObjCOwnershipAttr const* clang::AttributedTypeLoc::getAttrAs<clang::ObjCOwnershipAttr>()
Line
Count
Source
877
340
  template<typename T> const T *getAttrAs() {
878
340
    return dyn_cast_or_null<T>(getAttr());
879
340
  }
clang::LifetimeBoundAttr const* clang::AttributedTypeLoc::getAttrAs<clang::LifetimeBoundAttr>()
Line
Count
Source
877
2.98k
  template<typename T> const T *getAttrAs() {
878
2.98k
    return dyn_cast_or_null<T>(getAttr());
879
2.98k
  }
880
881
41.2k
  SourceRange getLocalSourceRange() const {
882
41.2k
    // Note that this does *not* include the range of the attribute
883
41.2k
    // enclosure, e.g.:
884
41.2k
    //    __attribute__((foo(bar)))
885
41.2k
    //    ^~~~~~~~~~~~~~~        ~~
886
41.2k
    // or
887
41.2k
    //    [[foo(bar)]]
888
41.2k
    //    ^~        ~~
889
41.2k
    // That enclosure doesn't necessarily belong to a single attribute
890
41.2k
    // anyway.
891
41.2k
    return getAttr() ? 
getAttr()->getRange()41.1k
:
SourceRange()73
;
892
41.2k
  }
893
894
83
  void initializeLocal(ASTContext &Context, SourceLocation loc) {
895
83
    setAttr(nullptr);
896
83
  }
897
898
1.14M
  QualType getInnerType() const {
899
1.14M
    return getTypePtr()->getModifiedType();
900
1.14M
  }
901
};
902
903
struct ObjCObjectTypeLocInfo {
904
  SourceLocation TypeArgsLAngleLoc;
905
  SourceLocation TypeArgsRAngleLoc;
906
  SourceLocation ProtocolLAngleLoc;
907
  SourceLocation ProtocolRAngleLoc;
908
  bool HasBaseTypeAsWritten;
909
};
910
911
// A helper class for defining ObjC TypeLocs that can qualified with
912
// protocols.
913
//
914
// TypeClass basically has to be either ObjCInterfaceType or
915
// ObjCObjectPointerType.
916
class ObjCObjectTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
917
                                                 ObjCObjectTypeLoc,
918
                                                 ObjCObjectType,
919
                                                 ObjCObjectTypeLocInfo> {
920
  // TypeSourceInfo*'s are stored after Info, one for each type argument.
921
12.5k
  TypeSourceInfo **getTypeArgLocArray() const {
922
12.5k
    return (TypeSourceInfo**)this->getExtraLocalData();
923
12.5k
  }
924
925
  // SourceLocations are stored after the type argument information, one for
926
  // each Protocol.
927
2.86k
  SourceLocation *getProtocolLocArray() const {
928
2.86k
    return (SourceLocation*)(getTypeArgLocArray() + getNumTypeArgs());
929
2.86k
  }
930
931
public:
932
3.99k
  SourceLocation getTypeArgsLAngleLoc() const {
933
3.99k
    return this->getLocalData()->TypeArgsLAngleLoc;
934
3.99k
  }
935
936
26.3k
  void setTypeArgsLAngleLoc(SourceLocation Loc) {
937
26.3k
    this->getLocalData()->TypeArgsLAngleLoc = Loc;
938
26.3k
  }
939
940
3.06k
  SourceLocation getTypeArgsRAngleLoc() const {
941
3.06k
    return this->getLocalData()->TypeArgsRAngleLoc;
942
3.06k
  }
943
944
26.3k
  void setTypeArgsRAngleLoc(SourceLocation Loc) {
945
26.3k
    this->getLocalData()->TypeArgsRAngleLoc = Loc;
946
26.3k
  }
947
948
151k
  unsigned getNumTypeArgs() const {
949
151k
    return this->getTypePtr()->getTypeArgsAsWritten().size();
950
151k
  }
951
952
335
  TypeSourceInfo *getTypeArgTInfo(unsigned i) const {
953
335
    assert(i < getNumTypeArgs() && "Index is out of bounds!");
954
335
    return getTypeArgLocArray()[i];
955
335
  }
956
957
9.29k
  void setTypeArgTInfo(unsigned i, TypeSourceInfo *TInfo) {
958
9.29k
    assert(i < getNumTypeArgs() && "Index is out of bounds!");
959
9.29k
    getTypeArgLocArray()[i] = TInfo;
960
9.29k
  }
961
962
833
  SourceLocation getProtocolLAngleLoc() const {
963
833
    return this->getLocalData()->ProtocolLAngleLoc;
964
833
  }
965
966
26.3k
  void setProtocolLAngleLoc(SourceLocation Loc) {
967
26.3k
    this->getLocalData()->ProtocolLAngleLoc = Loc;
968
26.3k
  }
969
970
3.99k
  SourceLocation getProtocolRAngleLoc() const {
971
3.99k
    return this->getLocalData()->ProtocolRAngleLoc;
972
3.99k
  }
973
974
26.3k
  void setProtocolRAngleLoc(SourceLocation Loc) {
975
26.3k
    this->getLocalData()->ProtocolRAngleLoc = Loc;
976
26.3k
  }
977
978
148k
  unsigned getNumProtocols() const {
979
148k
    return this->getTypePtr()->getNumProtocols();
980
148k
  }
981
982
89
  SourceLocation getProtocolLoc(unsigned i) const {
983
89
    assert(i < getNumProtocols() && "Index is out of bounds!");
984
89
    return getProtocolLocArray()[i];
985
89
  }
986
987
2.76k
  void setProtocolLoc(unsigned i, SourceLocation Loc) {
988
2.76k
    assert(i < getNumProtocols() && "Index is out of bounds!");
989
2.76k
    getProtocolLocArray()[i] = Loc;
990
2.76k
  }
991
992
  ObjCProtocolDecl *getProtocol(unsigned i) const {
993
    assert(i < getNumProtocols() && "Index is out of bounds!");
994
    return *(this->getTypePtr()->qual_begin() + i);
995
  }
996
997
998
17
  ArrayRef<SourceLocation> getProtocolLocs() const {
999
17
    return llvm::makeArrayRef(getProtocolLocArray(), getNumProtocols());
1000
17
  }
1001
1002
81
  bool hasBaseTypeAsWritten() const {
1003
81
    return getLocalData()->HasBaseTypeAsWritten;
1004
81
  }
1005
1006
26.3k
  void setHasBaseTypeAsWritten(bool HasBaseType) {
1007
26.3k
    getLocalData()->HasBaseTypeAsWritten = HasBaseType;
1008
26.3k
  }
1009
1010
10.4k
  TypeLoc getBaseLoc() const {
1011
10.4k
    return getInnerTypeLoc();
1012
10.4k
  }
1013
1014
3.93k
  SourceRange getLocalSourceRange() const {
1015
3.93k
    SourceLocation start = getTypeArgsLAngleLoc();
1016
3.93k
    if (start.isInvalid())
1017
776
      start = getProtocolLAngleLoc();
1018
3.93k
    SourceLocation end = getProtocolRAngleLoc();
1019
3.93k
    if (end.isInvalid())
1020
3.00k
      end = getTypeArgsRAngleLoc();
1021
3.93k
    return SourceRange(start, end);
1022
3.93k
  }
1023
1024
  void initializeLocal(ASTContext &Context, SourceLocation Loc);
1025
1026
121k
  unsigned getExtraLocalDataSize() const {
1027
121k
    return this->getNumTypeArgs() * sizeof(TypeSourceInfo *)
1028
121k
         + this->getNumProtocols() * sizeof(SourceLocation);
1029
121k
  }
1030
1031
239k
  unsigned getExtraLocalDataAlignment() const {
1032
239k
    static_assert(alignof(ObjCObjectTypeLoc) >= alignof(TypeSourceInfo *),
1033
239k
                  "not enough alignment for tail-allocated data");
1034
239k
    return alignof(TypeSourceInfo *);
1035
239k
  }
1036
1037
152k
  QualType getInnerType() const {
1038
152k
    return getTypePtr()->getBaseType();
1039
152k
  }
1040
};
1041
1042
struct ObjCInterfaceLocInfo {
1043
  SourceLocation NameLoc;
1044
  SourceLocation NameEndLoc;
1045
};
1046
1047
/// Wrapper for source info for ObjC interfaces.
1048
class ObjCInterfaceTypeLoc : public ConcreteTypeLoc<ObjCObjectTypeLoc,
1049
                                                    ObjCInterfaceTypeLoc,
1050
                                                    ObjCInterfaceType,
1051
                                                    ObjCInterfaceLocInfo> {
1052
public:
1053
  ObjCInterfaceDecl *getIFaceDecl() const {
1054
    return getTypePtr()->getDecl();
1055
  }
1056
1057
110k
  SourceLocation getNameLoc() const {
1058
110k
    return getLocalData()->NameLoc;
1059
110k
  }
1060
1061
90.6k
  void setNameLoc(SourceLocation Loc) {
1062
90.6k
    getLocalData()->NameLoc = Loc;
1063
90.6k
  }
1064
1065
109k
  SourceRange getLocalSourceRange() const {
1066
109k
    return SourceRange(getNameLoc(), getNameEndLoc());
1067
109k
  }
1068
1069
109k
  SourceLocation getNameEndLoc() const {
1070
109k
    return getLocalData()->NameEndLoc;
1071
109k
  }
1072
1073
90.5k
  void setNameEndLoc(SourceLocation Loc) {
1074
90.5k
    getLocalData()->NameEndLoc = Loc;
1075
90.5k
  }
1076
1077
24.7k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1078
24.7k
    setNameLoc(Loc);
1079
24.7k
    setNameEndLoc(Loc);
1080
24.7k
  }
1081
};
1082
1083
struct ParenLocInfo {
1084
  SourceLocation LParenLoc;
1085
  SourceLocation RParenLoc;
1086
};
1087
1088
class ParenTypeLoc
1089
  : public ConcreteTypeLoc<UnqualTypeLoc, ParenTypeLoc, ParenType,
1090
                           ParenLocInfo> {
1091
public:
1092
77.7k
  SourceLocation getLParenLoc() const {
1093
77.7k
    return this->getLocalData()->LParenLoc;
1094
77.7k
  }
1095
1096
77.7k
  SourceLocation getRParenLoc() const {
1097
77.7k
    return this->getLocalData()->RParenLoc;
1098
77.7k
  }
1099
1100
228k
  void setLParenLoc(SourceLocation Loc) {
1101
228k
    this->getLocalData()->LParenLoc = Loc;
1102
228k
  }
1103
1104
228k
  void setRParenLoc(SourceLocation Loc) {
1105
228k
    this->getLocalData()->RParenLoc = Loc;
1106
228k
  }
1107
1108
71.1k
  SourceRange getLocalSourceRange() const {
1109
71.1k
    return SourceRange(getLParenLoc(), getRParenLoc());
1110
71.1k
  }
1111
1112
1.03k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1113
1.03k
    setLParenLoc(Loc);
1114
1.03k
    setRParenLoc(Loc);
1115
1.03k
  }
1116
1117
16.7k
  TypeLoc getInnerLoc() const {
1118
16.7k
    return getInnerTypeLoc();
1119
16.7k
  }
1120
1121
1.14M
  QualType getInnerType() const {
1122
1.14M
    return this->getTypePtr()->getInnerType();
1123
1.14M
  }
1124
};
1125
1126
4.92M
inline TypeLoc TypeLoc::IgnoreParens() const {
1127
4.92M
  if (ParenTypeLoc::isKind(*this))
1128
139
    return IgnoreParensImpl(*this);
1129
4.92M
  return *this;
1130
4.92M
}
1131
1132
struct AdjustedLocInfo {}; // Nothing.
1133
1134
class AdjustedTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, AdjustedTypeLoc,
1135
                                               AdjustedType, AdjustedLocInfo> {
1136
public:
1137
20
  TypeLoc getOriginalLoc() const {
1138
20
    return getInnerTypeLoc();
1139
20
  }
1140
1141
931
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1142
931
    // do nothing
1143
931
  }
1144
1145
4.49k
  QualType getInnerType() const {
1146
4.49k
    // The inner type is the undecayed type, since that's what we have source
1147
4.49k
    // location information for.
1148
4.49k
    return getTypePtr()->getOriginalType();
1149
4.49k
  }
1150
1151
11
  SourceRange getLocalSourceRange() const { return {}; }
1152
1153
3.30k
  unsigned getLocalDataSize() const {
1154
3.30k
    // sizeof(AdjustedLocInfo) is 1, but we don't need its address to be unique
1155
3.30k
    // anyway.  TypeLocBuilder can't handle data sizes of 1.
1156
3.30k
    return 0;  // No data.
1157
3.30k
  }
1158
};
1159
1160
/// Wrapper for source info for pointers decayed from arrays and
1161
/// functions.
1162
class DecayedTypeLoc : public InheritingConcreteTypeLoc<
1163
                           AdjustedTypeLoc, DecayedTypeLoc, DecayedType> {
1164
};
1165
1166
struct PointerLikeLocInfo {
1167
  SourceLocation StarLoc;
1168
};
1169
1170
/// A base class for
1171
template <class Derived, class TypeClass, class LocalData = PointerLikeLocInfo>
1172
class PointerLikeTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, Derived,
1173
                                                  TypeClass, LocalData> {
1174
public:
1175
11.6M
  SourceLocation getSigilLoc() const {
1176
11.6M
    return this->getLocalData()->StarLoc;
1177
11.6M
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getSigilLoc() const
Line
Count
Source
1175
4.77M
  SourceLocation getSigilLoc() const {
1176
4.77M
    return this->getLocalData()->StarLoc;
1177
4.77M
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getSigilLoc() const
Line
Count
Source
1175
4.84k
  SourceLocation getSigilLoc() const {
1176
4.84k
    return this->getLocalData()->StarLoc;
1177
4.84k
  }
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getSigilLoc() const
Line
Count
Source
1175
6.76M
  SourceLocation getSigilLoc() const {
1176
6.76M
    return this->getLocalData()->StarLoc;
1177
6.76M
  }
clang::PointerLikeTypeLoc<clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getSigilLoc() const
Line
Count
Source
1175
79.7k
  SourceLocation getSigilLoc() const {
1176
79.7k
    return this->getLocalData()->StarLoc;
1177
79.7k
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getSigilLoc() const
Line
Count
Source
1175
63.8k
  SourceLocation getSigilLoc() const {
1176
63.8k
    return this->getLocalData()->StarLoc;
1177
63.8k
  }
1178
1179
8.05M
  void setSigilLoc(SourceLocation Loc) {
1180
8.05M
    this->getLocalData()->StarLoc = Loc;
1181
8.05M
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::setSigilLoc(clang::SourceLocation)
Line
Count
Source
1179
5.03M
  void setSigilLoc(SourceLocation Loc) {
1180
5.03M
    this->getLocalData()->StarLoc = Loc;
1181
5.03M
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::setSigilLoc(clang::SourceLocation)
Line
Count
Source
1179
18.4k
  void setSigilLoc(SourceLocation Loc) {
1180
18.4k
    this->getLocalData()->StarLoc = Loc;
1181
18.4k
  }
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::setSigilLoc(clang::SourceLocation)
Line
Count
Source
1179
2.85M
  void setSigilLoc(SourceLocation Loc) {
1180
2.85M
    this->getLocalData()->StarLoc = Loc;
1181
2.85M
  }
clang::PointerLikeTypeLoc<clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::setSigilLoc(clang::SourceLocation)
Line
Count
Source
1179
57.5k
  void setSigilLoc(SourceLocation Loc) {
1180
57.5k
    this->getLocalData()->StarLoc = Loc;
1181
57.5k
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::setSigilLoc(clang::SourceLocation)
Line
Count
Source
1179
90.7k
  void setSigilLoc(SourceLocation Loc) {
1180
90.7k
    this->getLocalData()->StarLoc = Loc;
1181
90.7k
  }
1182
1183
2.54M
  TypeLoc getPointeeLoc() const {
1184
2.54M
    return this->getInnerTypeLoc();
1185
2.54M
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getPointeeLoc() const
Line
Count
Source
1183
1.25M
  TypeLoc getPointeeLoc() const {
1184
1.25M
    return this->getInnerTypeLoc();
1185
1.25M
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getPointeeLoc() const
Line
Count
Source
1183
579
  TypeLoc getPointeeLoc() const {
1184
579
    return this->getInnerTypeLoc();
1185
579
  }
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getPointeeLoc() const
Line
Count
Source
1183
1.27M
  TypeLoc getPointeeLoc() const {
1184
1.27M
    return this->getInnerTypeLoc();
1185
1.27M
  }
clang::PointerLikeTypeLoc<clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getPointeeLoc() const
Line
Count
Source
1183
1.08k
  TypeLoc getPointeeLoc() const {
1184
1.08k
    return this->getInnerTypeLoc();
1185
1.08k
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getPointeeLoc() const
Line
Count
Source
1183
13.7k
  TypeLoc getPointeeLoc() const {
1184
13.7k
    return this->getInnerTypeLoc();
1185
13.7k
  }
1186
1187
4.01M
  SourceRange getLocalSourceRange() const {
1188
4.01M
    return SourceRange(getSigilLoc(), getSigilLoc());
1189
4.01M
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getLocalSourceRange() const
Line
Count
Source
1187
1.80M
  SourceRange getLocalSourceRange() const {
1188
1.80M
    return SourceRange(getSigilLoc(), getSigilLoc());
1189
1.80M
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getLocalSourceRange() const
Line
Count
Source
1187
2.38k
  SourceRange getLocalSourceRange() const {
1188
2.38k
    return SourceRange(getSigilLoc(), getSigilLoc());
1189
2.38k
  }
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getLocalSourceRange() const
Line
Count
Source
1187
2.17M
  SourceRange getLocalSourceRange() const {
1188
2.17M
    return SourceRange(getSigilLoc(), getSigilLoc());
1189
2.17M
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getLocalSourceRange() const
Line
Count
Source
1187
31.8k
  SourceRange getLocalSourceRange() const {
1188
31.8k
    return SourceRange(getSigilLoc(), getSigilLoc());
1189
31.8k
  }
1190
1191
772k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1192
772k
    setSigilLoc(Loc);
1193
772k
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation)
Line
Count
Source
1191
391k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1192
391k
    setSigilLoc(Loc);
1193
391k
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation)
Line
Count
Source
1191
265
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1192
265
    setSigilLoc(Loc);
1193
265
  }
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation)
Line
Count
Source
1191
363k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1192
363k
    setSigilLoc(Loc);
1193
363k
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation)
Line
Count
Source
1191
16.9k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1192
16.9k
    setSigilLoc(Loc);
1193
16.9k
  }
1194
1195
26.2M
  QualType getInnerType() const {
1196
26.2M
    return this->getTypePtr()->getPointeeType();
1197
26.2M
  }
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getInnerType() const
Line
Count
Source
1195
25.2M
  QualType getInnerType() const {
1196
25.2M
    return this->getTypePtr()->getPointeeType();
1197
25.2M
  }
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getInnerType() const
Line
Count
Source
1195
80.1k
  QualType getInnerType() const {
1196
80.1k
    return this->getTypePtr()->getPointeeType();
1197
80.1k
  }
clang::PointerLikeTypeLoc<clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getInnerType() const
Line
Count
Source
1195
466k
  QualType getInnerType() const {
1196
466k
    return this->getTypePtr()->getPointeeType();
1197
466k
  }
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getInnerType() const
Line
Count
Source
1195
454k
  QualType getInnerType() const {
1196
454k
    return this->getTypePtr()->getPointeeType();
1197
454k
  }
1198
};
1199
1200
/// Wrapper for source info for pointers.
1201
class PointerTypeLoc : public PointerLikeTypeLoc<PointerTypeLoc,
1202
                                                 PointerType> {
1203
public:
1204
21.4k
  SourceLocation getStarLoc() const {
1205
21.4k
    return getSigilLoc();
1206
21.4k
  }
1207
1208
4.06M
  void setStarLoc(SourceLocation Loc) {
1209
4.06M
    setSigilLoc(Loc);
1210
4.06M
  }
1211
};
1212
1213
/// Wrapper for source info for block pointers.
1214
class BlockPointerTypeLoc : public PointerLikeTypeLoc<BlockPointerTypeLoc,
1215
                                                      BlockPointerType> {
1216
public:
1217
55
  SourceLocation getCaretLoc() const {
1218
55
    return getSigilLoc();
1219
55
  }
1220
1221
18.1k
  void setCaretLoc(SourceLocation Loc) {
1222
18.1k
    setSigilLoc(Loc);
1223
18.1k
  }
1224
};
1225
1226
struct MemberPointerLocInfo : public PointerLikeLocInfo {
1227
  TypeSourceInfo *ClassTInfo;
1228
};
1229
1230
/// Wrapper for source info for member pointers.
1231
class MemberPointerTypeLoc : public PointerLikeTypeLoc<MemberPointerTypeLoc,
1232
                                                       MemberPointerType,
1233
                                                       MemberPointerLocInfo> {
1234
public:
1235
78.7k
  SourceLocation getStarLoc() const {
1236
78.7k
    return getSigilLoc();
1237
78.7k
  }
1238
1239
34.0k
  void setStarLoc(SourceLocation Loc) {
1240
34.0k
    setSigilLoc(Loc);
1241
34.0k
  }
1242
1243
33.9k
  const Type *getClass() const {
1244
33.9k
    return getTypePtr()->getClass();
1245
33.9k
  }
1246
1247
78.7k
  TypeSourceInfo *getClassTInfo() const {
1248
78.7k
    return getLocalData()->ClassTInfo;
1249
78.7k
  }
1250
1251
57.5k
  void setClassTInfo(TypeSourceInfo* TI) {
1252
57.5k
    getLocalData()->ClassTInfo = TI;
1253
57.5k
  }
1254
1255
22.5k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1256
22.5k
    setSigilLoc(Loc);
1257
22.5k
    setClassTInfo(nullptr);
1258
22.5k
  }
1259
1260
77.7k
  SourceRange getLocalSourceRange() const {
1261
77.7k
    if (TypeSourceInfo *TI = getClassTInfo())
1262
52.2k
      return SourceRange(TI->getTypeLoc().getBeginLoc(), getStarLoc());
1263
25.4k
    else
1264
25.4k
      return SourceRange(getStarLoc());
1265
77.7k
  }
1266
};
1267
1268
/// Wraps an ObjCPointerType with source location information.
1269
class ObjCObjectPointerTypeLoc :
1270
    public PointerLikeTypeLoc<ObjCObjectPointerTypeLoc,
1271
                              ObjCObjectPointerType> {
1272
public:
1273
164
  SourceLocation getStarLoc() const {
1274
164
    return getSigilLoc();
1275
164
  }
1276
1277
73.8k
  void setStarLoc(SourceLocation Loc) {
1278
73.8k
    setSigilLoc(Loc);
1279
73.8k
  }
1280
};
1281
1282
class ReferenceTypeLoc : public PointerLikeTypeLoc<ReferenceTypeLoc,
1283
                                                   ReferenceType> {
1284
public:
1285
16.2M
  QualType getInnerType() const {
1286
16.2M
    return getTypePtr()->getPointeeTypeAsWritten();
1287
16.2M
  }
1288
};
1289
1290
class LValueReferenceTypeLoc :
1291
    public InheritingConcreteTypeLoc<ReferenceTypeLoc,
1292
                                     LValueReferenceTypeLoc,
1293
                                     LValueReferenceType> {
1294
public:
1295
13.3k
  SourceLocation getAmpLoc() const {
1296
13.3k
    return getSigilLoc();
1297
13.3k
  }
1298
1299
1.13M
  void setAmpLoc(SourceLocation Loc) {
1300
1.13M
    setSigilLoc(Loc);
1301
1.13M
  }
1302
};
1303
1304
class RValueReferenceTypeLoc :
1305
    public InheritingConcreteTypeLoc<ReferenceTypeLoc,
1306
                                     RValueReferenceTypeLoc,
1307
                                     RValueReferenceType> {
1308
public:
1309
155
  SourceLocation getAmpAmpLoc() const {
1310
155
    return getSigilLoc();
1311
155
  }
1312
1313
162k
  void setAmpAmpLoc(SourceLocation Loc) {
1314
162k
    setSigilLoc(Loc);
1315
162k
  }
1316
};
1317
1318
struct FunctionLocInfo {
1319
  SourceLocation LocalRangeBegin;
1320
  SourceLocation LParenLoc;
1321
  SourceLocation RParenLoc;
1322
  SourceLocation LocalRangeEnd;
1323
};
1324
1325
/// Wrapper for source info for functions.
1326
class FunctionTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
1327
                                               FunctionTypeLoc,
1328
                                               FunctionType,
1329
                                               FunctionLocInfo> {
1330
36.8M
  bool hasExceptionSpec() const {
1331
36.8M
    if (auto *FPT = dyn_cast<FunctionProtoType>(getTypePtr())) {
1332
36.7M
      return FPT->hasExceptionSpec();
1333
36.7M
    }
1334
153k
    return false;
1335
153k
  }
1336
1337
1.37M
  SourceRange *getExceptionSpecRangePtr() const {
1338
1.37M
    assert(hasExceptionSpec() && "No exception spec range");
1339
1.37M
    // After the Info comes the ParmVarDecl array, and after that comes the
1340
1.37M
    // exception specification information.
1341
1.37M
    return (SourceRange *)(getParmArray() + getNumParams());
1342
1.37M
  }
1343
1344
public:
1345
2.57M
  SourceLocation getLocalRangeBegin() const {
1346
2.57M
    return getLocalData()->LocalRangeBegin;
1347
2.57M
  }
1348
1349
7.32M
  void setLocalRangeBegin(SourceLocation L) {
1350
7.32M
    getLocalData()->LocalRangeBegin = L;
1351
7.32M
  }
1352
1353
2.57M
  SourceLocation getLocalRangeEnd() const {
1354
2.57M
    return getLocalData()->LocalRangeEnd;
1355
2.57M
  }
1356
1357
7.32M
  void setLocalRangeEnd(SourceLocation L) {
1358
7.32M
    getLocalData()->LocalRangeEnd = L;
1359
7.32M
  }
1360
1361
1.51M
  SourceLocation getLParenLoc() const {
1362
1.51M
    return this->getLocalData()->LParenLoc;
1363
1.51M
  }
1364
1365
7.32M
  void setLParenLoc(SourceLocation Loc) {
1366
7.32M
    this->getLocalData()->LParenLoc = Loc;
1367
7.32M
  }
1368
1369
1.51M
  SourceLocation getRParenLoc() const {
1370
1.51M
    return this->getLocalData()->RParenLoc;
1371
1.51M
  }
1372
1373
7.32M
  void setRParenLoc(SourceLocation Loc) {
1374
7.32M
    this->getLocalData()->RParenLoc = Loc;
1375
7.32M
  }
1376
1377
0
  SourceRange getParensRange() const {
1378
0
    return SourceRange(getLParenLoc(), getRParenLoc());
1379
0
  }
1380
1381
1.51M
  SourceRange getExceptionSpecRange() const {
1382
1.51M
    if (hasExceptionSpec())
1383
386k
      return *getExceptionSpecRangePtr();
1384
1.12M
    return {};
1385
1.12M
  }
1386
1387
7.28M
  void setExceptionSpecRange(SourceRange R) {
1388
7.28M
    if (hasExceptionSpec())
1389
987k
      *getExceptionSpecRangePtr() = R;
1390
7.28M
  }
1391
1392
1.81M
  ArrayRef<ParmVarDecl *> getParams() const {
1393
1.81M
    return llvm::makeArrayRef(getParmArray(), getNumParams());
1394
1.81M
  }
1395
1396
  // ParmVarDecls* are stored after Info, one for each parameter.
1397
19.4M
  ParmVarDecl **getParmArray() const {
1398
19.4M
    return (ParmVarDecl**) getExtraLocalData();
1399
19.4M
  }
1400
1401
40.4M
  unsigned getNumParams() const {
1402
40.4M
    if (isa<FunctionNoProtoType>(getTypePtr()))
1403
153k
      return 0;
1404
40.3M
    return cast<FunctionProtoType>(getTypePtr())->getNumParams();
1405
40.3M
  }
1406
1407
4.46M
  ParmVarDecl *getParam(unsigned i) const { return getParmArray()[i]; }
1408
11.7M
  void setParam(unsigned i, ParmVarDecl *VD) { getParmArray()[i] = VD; }
1409
1410
1.65M
  TypeLoc getReturnLoc() const {
1411
1.65M
    return getInnerTypeLoc();
1412
1.65M
  }
1413
1414
1.06M
  SourceRange getLocalSourceRange() const {
1415
1.06M
    return SourceRange(getLocalRangeBegin(), getLocalRangeEnd());
1416
1.06M
  }
1417
1418
45.0k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1419
45.0k
    setLocalRangeBegin(Loc);
1420
45.0k
    setLParenLoc(Loc);
1421
45.0k
    setRParenLoc(Loc);
1422
45.0k
    setLocalRangeEnd(Loc);
1423
96.4k
    for (unsigned i = 0, e = getNumParams(); i != e; 
++i51.4k
)
1424
51.4k
      setParam(i, nullptr);
1425
45.0k
    if (hasExceptionSpec())
1426
2.59k
      setExceptionSpecRange(Loc);
1427
45.0k
  }
1428
1429
  /// Returns the size of the type source info data block that is
1430
  /// specific to this type.
1431
28.0M
  unsigned getExtraLocalDataSize() const {
1432
28.0M
    unsigned ExceptSpecSize = hasExceptionSpec() ? 
sizeof(SourceRange)4.87M
:
023.1M
;
1433
28.0M
    return (getNumParams() * sizeof(ParmVarDecl *)) + ExceptSpecSize;
1434
28.0M
  }
1435
1436
56.9M
  unsigned getExtraLocalDataAlignment() const { return alignof(ParmVarDecl *); }
1437
1438
38.4M
  QualType getInnerType() const { return getTypePtr()->getReturnType(); }
1439
};
1440
1441
class FunctionProtoTypeLoc :
1442
    public InheritingConcreteTypeLoc<FunctionTypeLoc,
1443
                                     FunctionProtoTypeLoc,
1444
                                     FunctionProtoType> {
1445
};
1446
1447
class FunctionNoProtoTypeLoc :
1448
    public InheritingConcreteTypeLoc<FunctionTypeLoc,
1449
                                     FunctionNoProtoTypeLoc,
1450
                                     FunctionNoProtoType> {
1451
};
1452
1453
struct ArrayLocInfo {
1454
  SourceLocation LBracketLoc, RBracketLoc;
1455
  Expr *Size;
1456
};
1457
1458
/// Wrapper for source info for arrays.
1459
class ArrayTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
1460
                                            ArrayTypeLoc,
1461
                                            ArrayType,
1462
                                            ArrayLocInfo> {
1463
public:
1464
87.8k
  SourceLocation getLBracketLoc() const {
1465
87.8k
    return getLocalData()->LBracketLoc;
1466
87.8k
  }
1467
1468
436k
  void setLBracketLoc(SourceLocation Loc) {
1469
436k
    getLocalData()->LBracketLoc = Loc;
1470
436k
  }
1471
1472
87.8k
  SourceLocation getRBracketLoc() const {
1473
87.8k
    return getLocalData()->RBracketLoc;
1474
87.8k
  }
1475
1476
436k
  void setRBracketLoc(SourceLocation Loc) {
1477
436k
    getLocalData()->RBracketLoc = Loc;
1478
436k
  }
1479
1480
17.8k
  SourceRange getBracketsRange() const {
1481
17.8k
    return SourceRange(getLBracketLoc(), getRBracketLoc());
1482
17.8k
  }
1483
1484
49.4k
  Expr *getSizeExpr() const {
1485
49.4k
    return getLocalData()->Size;
1486
49.4k
  }
1487
1488
441k
  void setSizeExpr(Expr *Size) {
1489
441k
    getLocalData()->Size = Size;
1490
441k
  }
1491
1492
27.1k
  TypeLoc getElementLoc() const {
1493
27.1k
    return getInnerTypeLoc();
1494
27.1k
  }
1495
1496
40.7k
  SourceRange getLocalSourceRange() const {
1497
40.7k
    return SourceRange(getLBracketLoc(), getRBracketLoc());
1498
40.7k
  }
1499
1500
76.3k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1501
76.3k
    setLBracketLoc(Loc);
1502
76.3k
    setRBracketLoc(Loc);
1503
76.3k
    setSizeExpr(nullptr);
1504
76.3k
  }
1505
1506
2.02M
  QualType getInnerType() const { return getTypePtr()->getElementType(); }
1507
};
1508
1509
class ConstantArrayTypeLoc :
1510
    public InheritingConcreteTypeLoc<ArrayTypeLoc,
1511
                                     ConstantArrayTypeLoc,
1512
                                     ConstantArrayType> {
1513
};
1514
1515
class IncompleteArrayTypeLoc :
1516
    public InheritingConcreteTypeLoc<ArrayTypeLoc,
1517
                                     IncompleteArrayTypeLoc,
1518
                                     IncompleteArrayType> {
1519
};
1520
1521
class DependentSizedArrayTypeLoc :
1522
    public InheritingConcreteTypeLoc<ArrayTypeLoc,
1523
                                     DependentSizedArrayTypeLoc,
1524
                                     DependentSizedArrayType> {
1525
public:
1526
4.99k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1527
4.99k
    ArrayTypeLoc::initializeLocal(Context, Loc);
1528
4.99k
    setSizeExpr(getTypePtr()->getSizeExpr());
1529
4.99k
  }
1530
};
1531
1532
class VariableArrayTypeLoc :
1533
    public InheritingConcreteTypeLoc<ArrayTypeLoc,
1534
                                     VariableArrayTypeLoc,
1535
                                     VariableArrayType> {
1536
};
1537
1538
// Location information for a TemplateName.  Rudimentary for now.
1539
struct TemplateNameLocInfo {
1540
  SourceLocation NameLoc;
1541
};
1542
1543
struct TemplateSpecializationLocInfo : TemplateNameLocInfo {
1544
  SourceLocation TemplateKWLoc;
1545
  SourceLocation LAngleLoc;
1546
  SourceLocation RAngleLoc;
1547
};
1548
1549
class TemplateSpecializationTypeLoc :
1550
    public ConcreteTypeLoc<UnqualTypeLoc,
1551
                           TemplateSpecializationTypeLoc,
1552
                           TemplateSpecializationType,
1553
                           TemplateSpecializationLocInfo> {
1554
public:
1555
61.5M
  SourceLocation getTemplateKeywordLoc() const {
1556
61.5M
    return getLocalData()->TemplateKWLoc;
1557
61.5M
  }
1558
1559
6.34M
  void setTemplateKeywordLoc(SourceLocation Loc) {
1560
6.34M
    getLocalData()->TemplateKWLoc = Loc;
1561
6.34M
  }
1562
1563
7.20M
  SourceLocation getLAngleLoc() const {
1564
7.20M
    return getLocalData()->LAngleLoc;
1565
7.20M
  }
1566
1567
6.34M
  void setLAngleLoc(SourceLocation Loc) {
1568
6.34M
    getLocalData()->LAngleLoc = Loc;
1569
6.34M
  }
1570
1571
63.1M
  SourceLocation getRAngleLoc() const {
1572
63.1M
    return getLocalData()->RAngleLoc;
1573
63.1M
  }
1574
1575
6.34M
  void setRAngleLoc(SourceLocation Loc) {
1576
6.34M
    getLocalData()->RAngleLoc = Loc;
1577
6.34M
  }
1578
1579
14.5M
  unsigned getNumArgs() const {
1580
14.5M
    return getTypePtr()->getNumArgs();
1581
14.5M
  }
1582
1583
9.63M
  void setArgLocInfo(unsigned i, TemplateArgumentLocInfo AI) {
1584
9.63M
    getArgInfos()[i] = AI;
1585
9.63M
  }
1586
1587
5.80M
  TemplateArgumentLocInfo getArgLocInfo(unsigned i) const {
1588
5.80M
    return getArgInfos()[i];
1589
5.80M
  }
1590
1591
5.80M
  TemplateArgumentLoc getArgLoc(unsigned i) const {
1592
5.80M
    return TemplateArgumentLoc(getTypePtr()->getArg(i), getArgLocInfo(i));
1593
5.80M
  }
1594
1595
64.7M
  SourceLocation getTemplateNameLoc() const {
1596
64.7M
    return getLocalData()->NameLoc;
1597
64.7M
  }
1598
1599
6.34M
  void setTemplateNameLoc(SourceLocation Loc) {
1600
6.34M
    getLocalData()->NameLoc = Loc;
1601
6.34M
  }
1602
1603
  /// - Copy the location information from the given info.
1604
873k
  void copy(TemplateSpecializationTypeLoc Loc) {
1605
873k
    unsigned size = getFullDataSize();
1606
873k
    assert(size == Loc.getFullDataSize());
1607
873k
1608
873k
    // We're potentially copying Expr references here.  We don't
1609
873k
    // bother retaining them because TypeSourceInfos live forever, so
1610
873k
    // as long as the Expr was retained when originally written into
1611
873k
    // the TypeLoc, we're okay.
1612
873k
    memcpy(Data, Loc.Data, size);
1613
873k
  }
1614
1615
55.9M
  SourceRange getLocalSourceRange() const {
1616
55.9M
    if (getTemplateKeywordLoc().isValid())
1617
2.02M
      return SourceRange(getTemplateKeywordLoc(), getRAngleLoc());
1618
53.9M
    else
1619
53.9M
      return SourceRange(getTemplateNameLoc(), getRAngleLoc());
1620
55.9M
  }
1621
1622
322k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1623
322k
    setTemplateKeywordLoc(Loc);
1624
322k
    setTemplateNameLoc(Loc);
1625
322k
    setLAngleLoc(Loc);
1626
322k
    setRAngleLoc(Loc);
1627
322k
    initializeArgLocs(Context, getNumArgs(), getTypePtr()->getArgs(),
1628
322k
                      getArgInfos(), Loc);
1629
322k
  }
1630
1631
  static void initializeArgLocs(ASTContext &Context, unsigned NumArgs,
1632
                                const TemplateArgument *Args,
1633
                                TemplateArgumentLocInfo *ArgInfos,
1634
                                SourceLocation Loc);
1635
1636
9.15M
  unsigned getExtraLocalDataSize() const {
1637
9.15M
    return getNumArgs() * sizeof(TemplateArgumentLocInfo);
1638
9.15M
  }
1639
1640
35.5M
  unsigned getExtraLocalDataAlignment() const {
1641
35.5M
    return alignof(TemplateArgumentLocInfo);
1642
35.5M
  }
1643
1644
private:
1645
15.7M
  TemplateArgumentLocInfo *getArgInfos() const {
1646
15.7M
    return static_cast<TemplateArgumentLocInfo*>(getExtraLocalData());
1647
15.7M
  }
1648
};
1649
1650
struct DependentAddressSpaceLocInfo {
1651
  Expr *ExprOperand;
1652
  SourceRange OperandParens;
1653
  SourceLocation AttrLoc;
1654
};
1655
1656
class DependentAddressSpaceTypeLoc
1657
    : public ConcreteTypeLoc<UnqualTypeLoc,
1658
                             DependentAddressSpaceTypeLoc,
1659
                             DependentAddressSpaceType,
1660
                             DependentAddressSpaceLocInfo> {
1661
public:
1662
  /// The location of the attribute name, i.e.
1663
  ///    int * __attribute__((address_space(11)))
1664
  ///                         ^~~~~~~~~~~~~
1665
54
  SourceLocation getAttrNameLoc() const {
1666
54
    return getLocalData()->AttrLoc;
1667
54
  }
1668
54
  void setAttrNameLoc(SourceLocation loc) {
1669
54
    getLocalData()->AttrLoc = loc;
1670
54
  }
1671
1672
  /// The attribute's expression operand, if it has one.
1673
  ///    int * __attribute__((address_space(11)))
1674
  ///                                       ^~
1675
10
  Expr *getAttrExprOperand() const {
1676
10
    return getLocalData()->ExprOperand;
1677
10
  }
1678
54
  void setAttrExprOperand(Expr *e) {
1679
54
    getLocalData()->ExprOperand = e;
1680
54
  }
1681
1682
  /// The location of the parentheses around the operand, if there is
1683
  /// an operand.
1684
  ///    int * __attribute__((address_space(11)))
1685
  ///                                      ^  ^
1686
54
  SourceRange getAttrOperandParensRange() const {
1687
54
    return getLocalData()->OperandParens;
1688
54
  }
1689
54
  void setAttrOperandParensRange(SourceRange range) {
1690
54
    getLocalData()->OperandParens = range;
1691
54
  }
1692
1693
44
  SourceRange getLocalSourceRange() const {
1694
44
    SourceRange range(getAttrNameLoc());
1695
44
    range.setEnd(getAttrOperandParensRange().getEnd());
1696
44
    return range;
1697
44
  }
1698
1699
  ///  Returns the type before the address space attribute application
1700
  ///  area.
1701
  ///    int * __attribute__((address_space(11))) *
1702
  ///    ^   ^
1703
374
  QualType getInnerType() const {
1704
374
    return this->getTypePtr()->getPointeeType();
1705
374
  }
1706
1707
1
  TypeLoc getPointeeTypeLoc() const {
1708
1
    return this->getInnerTypeLoc();
1709
1
  }
1710
1711
49
  void initializeLocal(ASTContext &Context, SourceLocation loc) {
1712
49
    setAttrNameLoc(loc);
1713
49
    setAttrOperandParensRange(SourceRange(loc));
1714
49
    setAttrExprOperand(getTypePtr()->getAddrSpaceExpr());
1715
49
  }
1716
};
1717
1718
//===----------------------------------------------------------------------===//
1719
//
1720
//  All of these need proper implementations.
1721
//
1722
//===----------------------------------------------------------------------===//
1723
1724
// FIXME: size expression and attribute locations (or keyword if we
1725
// ever fully support altivec syntax).
1726
class VectorTypeLoc : public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
1727
                                                       VectorTypeLoc,
1728
                                                       VectorType> {
1729
};
1730
1731
// FIXME: size expression and attribute locations (or keyword if we
1732
// ever fully support altivec syntax).
1733
class DependentVectorTypeLoc
1734
    : public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
1735
                                       DependentVectorTypeLoc,
1736
                                       DependentVectorType> {};
1737
1738
// FIXME: size expression and attribute locations.
1739
class ExtVectorTypeLoc : public InheritingConcreteTypeLoc<VectorTypeLoc,
1740
                                                          ExtVectorTypeLoc,
1741
                                                          ExtVectorType> {
1742
};
1743
1744
// FIXME: attribute locations.
1745
// For some reason, this isn't a subtype of VectorType.
1746
class DependentSizedExtVectorTypeLoc :
1747
    public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
1748
                                     DependentSizedExtVectorTypeLoc,
1749
                                     DependentSizedExtVectorType> {
1750
};
1751
1752
// FIXME: location of the '_Complex' keyword.
1753
class ComplexTypeLoc : public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
1754
                                                        ComplexTypeLoc,
1755
                                                        ComplexType> {
1756
};
1757
1758
struct TypeofLocInfo {
1759
  SourceLocation TypeofLoc;
1760
  SourceLocation LParenLoc;
1761
  SourceLocation RParenLoc;
1762
};
1763
1764
struct TypeOfExprTypeLocInfo : public TypeofLocInfo {
1765
};
1766
1767
struct TypeOfTypeLocInfo : public TypeofLocInfo {
1768
  TypeSourceInfo* UnderlyingTInfo;
1769
};
1770
1771
template <class Derived, class TypeClass, class LocalData = TypeofLocInfo>
1772
class TypeofLikeTypeLoc
1773
  : public ConcreteTypeLoc<UnqualTypeLoc, Derived, TypeClass, LocalData> {
1774
public:
1775
6.08k
  SourceLocation getTypeofLoc() const {
1776
6.08k
    return this->getLocalData()->TypeofLoc;
1777
6.08k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getTypeofLoc() const
Line
Count
Source
1775
6.01k
  SourceLocation getTypeofLoc() const {
1776
6.01k
    return this->getLocalData()->TypeofLoc;
1777
6.01k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getTypeofLoc() const
Line
Count
Source
1775
73
  SourceLocation getTypeofLoc() const {
1776
73
    return this->getLocalData()->TypeofLoc;
1777
73
  }
1778
1779
2.84k
  void setTypeofLoc(SourceLocation Loc) {
1780
2.84k
    this->getLocalData()->TypeofLoc = Loc;
1781
2.84k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::setTypeofLoc(clang::SourceLocation)
Line
Count
Source
1779
2.74k
  void setTypeofLoc(SourceLocation Loc) {
1780
2.74k
    this->getLocalData()->TypeofLoc = Loc;
1781
2.74k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::setTypeofLoc(clang::SourceLocation)
Line
Count
Source
1779
100
  void setTypeofLoc(SourceLocation Loc) {
1780
100
    this->getLocalData()->TypeofLoc = Loc;
1781
100
  }
1782
1783
322
  SourceLocation getLParenLoc() const {
1784
322
    return this->getLocalData()->LParenLoc;
1785
322
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getLParenLoc() const
Line
Count
Source
1783
302
  SourceLocation getLParenLoc() const {
1784
302
    return this->getLocalData()->LParenLoc;
1785
302
  }
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getLParenLoc() const
Line
Count
Source
1783
20
  SourceLocation getLParenLoc() const {
1784
20
    return this->getLocalData()->LParenLoc;
1785
20
  }
1786
1787
2.84k
  void setLParenLoc(SourceLocation Loc) {
1788
2.84k
    this->getLocalData()->LParenLoc = Loc;
1789
2.84k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::setLParenLoc(clang::SourceLocation)
Line
Count
Source
1787
2.74k
  void setLParenLoc(SourceLocation Loc) {
1788
2.74k
    this->getLocalData()->LParenLoc = Loc;
1789
2.74k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::setLParenLoc(clang::SourceLocation)
Line
Count
Source
1787
100
  void setLParenLoc(SourceLocation Loc) {
1788
100
    this->getLocalData()->LParenLoc = Loc;
1789
100
  }
1790
1791
11.2k
  SourceLocation getRParenLoc() const {
1792
11.2k
    return this->getLocalData()->RParenLoc;
1793
11.2k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getRParenLoc() const
Line
Count
Source
1791
11.2k
  SourceLocation getRParenLoc() const {
1792
11.2k
    return this->getLocalData()->RParenLoc;
1793
11.2k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getRParenLoc() const
Line
Count
Source
1791
73
  SourceLocation getRParenLoc() const {
1792
73
    return this->getLocalData()->RParenLoc;
1793
73
  }
1794
1795
2.84k
  void setRParenLoc(SourceLocation Loc) {
1796
2.84k
    this->getLocalData()->RParenLoc = Loc;
1797
2.84k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::setRParenLoc(clang::SourceLocation)
Line
Count
Source
1795
2.74k
  void setRParenLoc(SourceLocation Loc) {
1796
2.74k
    this->getLocalData()->RParenLoc = Loc;
1797
2.74k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::setRParenLoc(clang::SourceLocation)
Line
Count
Source
1795
100
  void setRParenLoc(SourceLocation Loc) {
1796
100
    this->getLocalData()->RParenLoc = Loc;
1797
100
  }
1798
1799
  SourceRange getParensRange() const {
1800
    return SourceRange(getLParenLoc(), getRParenLoc());
1801
  }
1802
1803
2.53k
  void setParensRange(SourceRange range) {
1804
2.53k
      setLParenLoc(range.getBegin());
1805
2.53k
      setRParenLoc(range.getEnd());
1806
2.53k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::setParensRange(clang::SourceRange)
Line
Count
Source
1803
2.44k
  void setParensRange(SourceRange range) {
1804
2.44k
      setLParenLoc(range.getBegin());
1805
2.44k
      setRParenLoc(range.getEnd());
1806
2.44k
  }
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::setParensRange(clang::SourceRange)
Line
Count
Source
1803
82
  void setParensRange(SourceRange range) {
1804
82
      setLParenLoc(range.getBegin());
1805
82
      setRParenLoc(range.getEnd());
1806
82
  }
1807
1808
53
  SourceRange getLocalSourceRange() const {
1809
53
    return SourceRange(getTypeofLoc(), getRParenLoc());
1810
53
  }
1811
1812
2
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1813
2
    setTypeofLoc(Loc);
1814
2
    setLParenLoc(Loc);
1815
2
    setRParenLoc(Loc);
1816
2
  }
Unexecuted instantiation: clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation)
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation)
Line
Count
Source
1812
2
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
1813
2
    setTypeofLoc(Loc);
1814
2
    setLParenLoc(Loc);
1815
2
    setRParenLoc(Loc);
1816
2
  }
1817
};
1818
1819
class TypeOfExprTypeLoc : public TypeofLikeTypeLoc<TypeOfExprTypeLoc,
1820
                                                   TypeOfExprType,
1821
                                                   TypeOfExprTypeLocInfo> {
1822
public:
1823
3.00k
  Expr* getUnderlyingExpr() const {
1824
3.00k
    return getTypePtr()->getUnderlyingExpr();
1825
3.00k
  }
1826
1827
  // Reimplemented to account for GNU/C++ extension
1828
  //     typeof unary-expression
1829
  // where there are no parentheses.
1830
  SourceRange getLocalSourceRange() const;
1831
};
1832
1833
class TypeOfTypeLoc
1834
  : public TypeofLikeTypeLoc<TypeOfTypeLoc, TypeOfType, TypeOfTypeLocInfo> {
1835
public:
1836
2
  QualType getUnderlyingType() const {
1837
2
    return this->getTypePtr()->getUnderlyingType();
1838
2
  }
1839
1840
22
  TypeSourceInfo* getUnderlyingTInfo() const {
1841
22
    return this->getLocalData()->UnderlyingTInfo;
1842
22
  }
1843
1844
98
  void setUnderlyingTInfo(TypeSourceInfo* TI) const {
1845
98
    this->getLocalData()->UnderlyingTInfo = TI;
1846
98
  }
1847
1848
  void initializeLocal(ASTContext &Context, SourceLocation Loc);
1849
};
1850
1851
// FIXME: location of the 'decltype' and parens.
1852
class DecltypeTypeLoc : public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
1853
                                                         DecltypeTypeLoc,
1854
                                                         DecltypeType> {
1855
public:
1856
  Expr *getUnderlyingExpr() const { return getTypePtr()->getUnderlyingExpr(); }
1857
};
1858
1859
struct UnaryTransformTypeLocInfo {
1860
  // FIXME: While there's only one unary transform right now, future ones may
1861
  // need different representations
1862
  SourceLocation KWLoc, LParenLoc, RParenLoc;
1863
  TypeSourceInfo *UnderlyingTInfo;
1864
};
1865
1866
class UnaryTransformTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
1867
                                                    UnaryTransformTypeLoc,
1868
                                                    UnaryTransformType,
1869
                                                    UnaryTransformTypeLocInfo> {
1870
public:
1871
82
  SourceLocation getKWLoc() const { return getLocalData()->KWLoc; }
1872
688
  void setKWLoc(SourceLocation Loc) { getLocalData()->KWLoc = Loc; }
1873
1874
26
  SourceLocation getLParenLoc() const { return getLocalData()->LParenLoc; }
1875
688
  void setLParenLoc(SourceLocation Loc) { getLocalData()->LParenLoc = Loc; }
1876
1877
70
  SourceLocation getRParenLoc() const { return getLocalData()->RParenLoc; }
1878
688
  void setRParenLoc(SourceLocation Loc) { getLocalData()->RParenLoc = Loc; }
1879
1880
40
  TypeSourceInfo* getUnderlyingTInfo() const {
1881
40
    return getLocalData()->UnderlyingTInfo;
1882
40
  }
1883
1884
688
  void setUnderlyingTInfo(TypeSourceInfo *TInfo) {
1885
688
    getLocalData()->UnderlyingTInfo = TInfo;
1886
688
  }
1887
1888
44
  SourceRange getLocalSourceRange() const {
1889
44
    return SourceRange(getKWLoc(), getRParenLoc());
1890
44
  }
1891
1892
12
  SourceRange getParensRange() const {
1893
12
    return SourceRange(getLParenLoc(), getRParenLoc());
1894
12
  }
1895
1896
671
  void setParensRange(SourceRange Range) {
1897
671
    setLParenLoc(Range.getBegin());
1898
671
    setRParenLoc(Range.getEnd());
1899
671
  }
1900
1901
  void initializeLocal(ASTContext &Context, SourceLocation Loc);
1902
};
1903
1904
class DeducedTypeLoc
1905
    : public InheritingConcreteTypeLoc<TypeSpecTypeLoc, DeducedTypeLoc,
1906
                                       DeducedType> {};
1907
1908
class AutoTypeLoc
1909
    : public InheritingConcreteTypeLoc<DeducedTypeLoc, AutoTypeLoc, AutoType> {
1910
};
1911
1912
class DeducedTemplateSpecializationTypeLoc
1913
    : public InheritingConcreteTypeLoc<DeducedTypeLoc,
1914
                                       DeducedTemplateSpecializationTypeLoc,
1915
                                       DeducedTemplateSpecializationType> {
1916
public:
1917
143
  SourceLocation getTemplateNameLoc() const {
1918
143
    return getNameLoc();
1919
143
  }
1920
1921
9
  void setTemplateNameLoc(SourceLocation Loc) {
1922
9
    setNameLoc(Loc);
1923
9
  }
1924
};
1925
1926
struct ElaboratedLocInfo {
1927
  SourceLocation ElaboratedKWLoc;
1928
1929
  /// Data associated with the nested-name-specifier location.
1930
  void *QualifierData;
1931
};
1932
1933
class ElaboratedTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
1934
                                                 ElaboratedTypeLoc,
1935
                                                 ElaboratedType,
1936
                                                 ElaboratedLocInfo> {
1937
public:
1938
1.54M
  SourceLocation getElaboratedKeywordLoc() const {
1939
1.54M
    return this->getLocalData()->ElaboratedKWLoc;
1940
1.54M
  }
1941
1942
2.05M
  void setElaboratedKeywordLoc(SourceLocation Loc) {
1943
2.05M
    this->getLocalData()->ElaboratedKWLoc = Loc;
1944
2.05M
  }
1945
1946
1.53M
  NestedNameSpecifierLoc getQualifierLoc() const {
1947
1.53M
    return NestedNameSpecifierLoc(getTypePtr()->getQualifier(),
1948
1.53M
                                  getLocalData()->QualifierData);
1949
1.53M
  }
1950
1951
2.05M
  void setQualifierLoc(NestedNameSpecifierLoc QualifierLoc) {
1952
2.05M
    assert(QualifierLoc.getNestedNameSpecifier()
1953
2.05M
                                            == getTypePtr()->getQualifier() &&
1954
2.05M
           "Inconsistent nested-name-specifier pointer");
1955
2.05M
    getLocalData()->QualifierData = QualifierLoc.getOpaqueData();
1956
2.05M
  }
1957
1958
978k
  SourceRange getLocalSourceRange() const {
1959
978k
    if (getElaboratedKeywordLoc().isValid())
1960
512k
      if (getQualifierLoc())
1961
452k
        return SourceRange(getElaboratedKeywordLoc(),
1962
452k
                           getQualifierLoc().getEndLoc());
1963
59.9k
      else
1964
59.9k
        return SourceRange(getElaboratedKeywordLoc());
1965
466k
    else
1966
466k
      return getQualifierLoc().getSourceRange();
1967
978k
  }
1968
1969
  void initializeLocal(ASTContext &Context, SourceLocation Loc);
1970
1971
50.8k
  TypeLoc getNamedTypeLoc() const {
1972
50.8k
    return getInnerTypeLoc();
1973
50.8k
  }
1974
1975
6.14M
  QualType getInnerType() const {
1976
6.14M
    return getTypePtr()->getNamedType();
1977
6.14M
  }
1978
1979
628k
  void copy(ElaboratedTypeLoc Loc) {
1980
628k
    unsigned size = getFullDataSize();
1981
628k
    assert(size == Loc.getFullDataSize());
1982
628k
    memcpy(Data, Loc.Data, size);
1983
628k
  }
1984
};
1985
1986
// This is exactly the structure of an ElaboratedTypeLoc whose inner
1987
// type is some sort of TypeDeclTypeLoc.
1988
struct DependentNameLocInfo : ElaboratedLocInfo {
1989
  SourceLocation NameLoc;
1990
};
1991
1992
class DependentNameTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
1993
                                                    DependentNameTypeLoc,
1994
                                                    DependentNameType,
1995
                                                    DependentNameLocInfo> {
1996
public:
1997
11.9M
  SourceLocation getElaboratedKeywordLoc() const {
1998
11.9M
    return this->getLocalData()->ElaboratedKWLoc;
1999
11.9M
  }
2000
2001
1.19M
  void setElaboratedKeywordLoc(SourceLocation Loc) {
2002
1.19M
    this->getLocalData()->ElaboratedKWLoc = Loc;
2003
1.19M
  }
2004
2005
1.46M
  NestedNameSpecifierLoc getQualifierLoc() const {
2006
1.46M
    return NestedNameSpecifierLoc(getTypePtr()->getQualifier(),
2007
1.46M
                                  getLocalData()->QualifierData);
2008
1.46M
  }
2009
2010
1.19M
  void setQualifierLoc(NestedNameSpecifierLoc QualifierLoc) {
2011
1.19M
    assert(QualifierLoc.getNestedNameSpecifier()
2012
1.19M
                                            == getTypePtr()->getQualifier() &&
2013
1.19M
           "Inconsistent nested-name-specifier pointer");
2014
1.19M
    getLocalData()->QualifierData = QualifierLoc.getOpaqueData();
2015
1.19M
  }
2016
2017
7.35M
  SourceLocation getNameLoc() const {
2018
7.35M
    return this->getLocalData()->NameLoc;
2019
7.35M
  }
2020
2021
1.19M
  void setNameLoc(SourceLocation Loc) {
2022
1.19M
    this->getLocalData()->NameLoc = Loc;
2023
1.19M
  }
2024
2025
4.62M
  SourceRange getLocalSourceRange() const {
2026
4.62M
    if (getElaboratedKeywordLoc().isValid())
2027
4.61M
      return SourceRange(getElaboratedKeywordLoc(), getNameLoc());
2028
14.1k
    else
2029
14.1k
      return SourceRange(getQualifierLoc().getBeginLoc(), getNameLoc());
2030
4.62M
  }
2031
2032
551k
  void copy(DependentNameTypeLoc Loc) {
2033
551k
    unsigned size = getFullDataSize();
2034
551k
    assert(size == Loc.getFullDataSize());
2035
551k
    memcpy(Data, Loc.Data, size);
2036
551k
  }
2037
2038
  void initializeLocal(ASTContext &Context, SourceLocation Loc);
2039
};
2040
2041
struct DependentTemplateSpecializationLocInfo : DependentNameLocInfo {
2042
  SourceLocation TemplateKWLoc;
2043
  SourceLocation LAngleLoc;
2044
  SourceLocation RAngleLoc;
2045
  // followed by a TemplateArgumentLocInfo[]
2046
};
2047
2048
class DependentTemplateSpecializationTypeLoc :
2049
    public ConcreteTypeLoc<UnqualTypeLoc,
2050
                           DependentTemplateSpecializationTypeLoc,
2051
                           DependentTemplateSpecializationType,
2052
                           DependentTemplateSpecializationLocInfo> {
2053
public:
2054
108k
  SourceLocation getElaboratedKeywordLoc() const {
2055
108k
    return this->getLocalData()->ElaboratedKWLoc;
2056
108k
  }
2057
2058
9.82k
  void setElaboratedKeywordLoc(SourceLocation Loc) {
2059
9.82k
    this->getLocalData()->ElaboratedKWLoc = Loc;
2060
9.82k
  }
2061
2062
61.1k
  NestedNameSpecifierLoc getQualifierLoc() const {
2063
61.1k
    if (!getLocalData()->QualifierData)
2064
790
      return NestedNameSpecifierLoc();
2065
60.3k
2066
60.3k
    return NestedNameSpecifierLoc(getTypePtr()->getQualifier(),
2067
60.3k
                                  getLocalData()->QualifierData);
2068
60.3k
  }
2069
2070
9.82k
  void setQualifierLoc(NestedNameSpecifierLoc QualifierLoc) {
2071
9.82k
    if (!QualifierLoc) {
2072
358
      // Even if we have a nested-name-specifier in the dependent
2073
358
      // template specialization type, we won't record the nested-name-specifier
2074
358
      // location information when this type-source location information is
2075
358
      // part of a nested-name-specifier.
2076
358
      getLocalData()->QualifierData = nullptr;
2077
358
      return;
2078
358
    }
2079
9.46k
2080
9.46k
    assert(QualifierLoc.getNestedNameSpecifier()
2081
9.46k
                                        == getTypePtr()->getQualifier() &&
2082
9.46k
           "Inconsistent nested-name-specifier pointer");
2083
9.46k
    getLocalData()->QualifierData = QualifierLoc.getOpaqueData();
2084
9.46k
  }
2085
2086
41.5k
  SourceLocation getTemplateKeywordLoc() const {
2087
41.5k
    return getLocalData()->TemplateKWLoc;
2088
41.5k
  }
2089
2090
9.82k
  void setTemplateKeywordLoc(SourceLocation Loc) {
2091
9.82k
    getLocalData()->TemplateKWLoc = Loc;
2092
9.82k
  }
2093
2094
45.0k
  SourceLocation getTemplateNameLoc() const {
2095
45.0k
    return this->getLocalData()->NameLoc;
2096
45.0k
  }
2097
2098
9.82k
  void setTemplateNameLoc(SourceLocation Loc) {
2099
9.82k
    this->getLocalData()->NameLoc = Loc;
2100
9.82k
  }
2101
2102
40.6k
  SourceLocation getLAngleLoc() const {
2103
40.6k
    return this->getLocalData()->LAngleLoc;
2104
40.6k
  }
2105
2106
9.82k
  void setLAngleLoc(SourceLocation Loc) {
2107
9.82k
    this->getLocalData()->LAngleLoc = Loc;
2108
9.82k
  }
2109
2110
94.0k
  SourceLocation getRAngleLoc() const {
2111
94.0k
    return this->getLocalData()->RAngleLoc;
2112
94.0k
  }
2113
2114
9.82k
  void setRAngleLoc(SourceLocation Loc) {
2115
9.82k
    this->getLocalData()->RAngleLoc = Loc;
2116
9.82k
  }
2117
2118
59.0k
  unsigned getNumArgs() const {
2119
59.0k
    return getTypePtr()->getNumArgs();
2120
59.0k
  }
2121
2122
8.52k
  void setArgLocInfo(unsigned i, TemplateArgumentLocInfo AI) {
2123
8.52k
    getArgInfos()[i] = AI;
2124
8.52k
  }
2125
2126
20.9k
  TemplateArgumentLocInfo getArgLocInfo(unsigned i) const {
2127
20.9k
    return getArgInfos()[i];
2128
20.9k
  }
2129
2130
20.9k
  TemplateArgumentLoc getArgLoc(unsigned i) const {
2131
20.9k
    return TemplateArgumentLoc(getTypePtr()->getArg(i), getArgLocInfo(i));
2132
20.9k
  }
2133
2134
53.4k
  SourceRange getLocalSourceRange() const {
2135
53.4k
    if (getElaboratedKeywordLoc().isValid())
2136
38.4k
      return SourceRange(getElaboratedKeywordLoc(), getRAngleLoc());
2137
14.9k
    else if (getQualifierLoc())
2138
14.1k
      return SourceRange(getQualifierLoc().getBeginLoc(), getRAngleLoc());
2139
782
    else if (getTemplateKeywordLoc().isValid())
2140
152
      return SourceRange(getTemplateKeywordLoc(), getRAngleLoc());
2141
630
    else
2142
630
      return SourceRange(getTemplateNameLoc(), getRAngleLoc());
2143
53.4k
  }
2144
2145
3.69k
  void copy(DependentTemplateSpecializationTypeLoc Loc) {
2146
3.69k
    unsigned size = getFullDataSize();
2147
3.69k
    assert(size == Loc.getFullDataSize());
2148
3.69k
    memcpy(Data, Loc.Data, size);
2149
3.69k
  }
2150
2151
  void initializeLocal(ASTContext &Context, SourceLocation Loc);
2152
2153
36.1k
  unsigned getExtraLocalDataSize() const {
2154
36.1k
    return getNumArgs() * sizeof(TemplateArgumentLocInfo);
2155
36.1k
  }
2156
2157
118k
  unsigned getExtraLocalDataAlignment() const {
2158
118k
    return alignof(TemplateArgumentLocInfo);
2159
118k
  }
2160
2161
private:
2162
31.0k
  TemplateArgumentLocInfo *getArgInfos() const {
2163
31.0k
    return static_cast<TemplateArgumentLocInfo*>(getExtraLocalData());
2164
31.0k
  }
2165
};
2166
2167
struct PackExpansionTypeLocInfo {
2168
  SourceLocation EllipsisLoc;
2169
};
2170
2171
class PackExpansionTypeLoc
2172
  : public ConcreteTypeLoc<UnqualTypeLoc, PackExpansionTypeLoc,
2173
                           PackExpansionType, PackExpansionTypeLocInfo> {
2174
public:
2175
693k
  SourceLocation getEllipsisLoc() const {
2176
693k
    return this->getLocalData()->EllipsisLoc;
2177
693k
  }
2178
2179
259k
  void setEllipsisLoc(SourceLocation Loc) {
2180
259k
    this->getLocalData()->EllipsisLoc = Loc;
2181
259k
  }
2182
2183
232k
  SourceRange getLocalSourceRange() const {
2184
232k
    return SourceRange(getEllipsisLoc(), getEllipsisLoc());
2185
232k
  }
2186
2187
30.7k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
2188
30.7k
    setEllipsisLoc(Loc);
2189
30.7k
  }
2190
2191
258k
  TypeLoc getPatternLoc() const {
2192
258k
    return getInnerTypeLoc();
2193
258k
  }
2194
2195
1.42M
  QualType getInnerType() const {
2196
1.42M
    return this->getTypePtr()->getPattern();
2197
1.42M
  }
2198
};
2199
2200
struct AtomicTypeLocInfo {
2201
  SourceLocation KWLoc, LParenLoc, RParenLoc;
2202
};
2203
2204
class AtomicTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, AtomicTypeLoc,
2205
                                             AtomicType, AtomicTypeLocInfo> {
2206
public:
2207
7.86k
  TypeLoc getValueLoc() const {
2208
7.86k
    return this->getInnerTypeLoc();
2209
7.86k
  }
2210
2211
132
  SourceRange getLocalSourceRange() const {
2212
132
    return SourceRange(getKWLoc(), getRParenLoc());
2213
132
  }
2214
2215
352
  SourceLocation getKWLoc() const {
2216
352
    return this->getLocalData()->KWLoc;
2217
352
  }
2218
2219
9.79k
  void setKWLoc(SourceLocation Loc) {
2220
9.79k
    this->getLocalData()->KWLoc = Loc;
2221
9.79k
  }
2222
2223
180
  SourceLocation getLParenLoc() const {
2224
180
    return this->getLocalData()->LParenLoc;
2225
180
  }
2226
2227
9.79k
  void setLParenLoc(SourceLocation Loc) {
2228
9.79k
    this->getLocalData()->LParenLoc = Loc;
2229
9.79k
  }
2230
2231
312
  SourceLocation getRParenLoc() const {
2232
312
    return this->getLocalData()->RParenLoc;
2233
312
  }
2234
2235
9.79k
  void setRParenLoc(SourceLocation Loc) {
2236
9.79k
    this->getLocalData()->RParenLoc = Loc;
2237
9.79k
  }
2238
2239
0
  SourceRange getParensRange() const {
2240
0
    return SourceRange(getLParenLoc(), getRParenLoc());
2241
0
  }
2242
2243
7.75k
  void setParensRange(SourceRange Range) {
2244
7.75k
    setLParenLoc(Range.getBegin());
2245
7.75k
    setRParenLoc(Range.getEnd());
2246
7.75k
  }
2247
2248
1.94k
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
2249
1.94k
    setKWLoc(Loc);
2250
1.94k
    setLParenLoc(Loc);
2251
1.94k
    setRParenLoc(Loc);
2252
1.94k
  }
2253
2254
39.8k
  QualType getInnerType() const {
2255
39.8k
    return this->getTypePtr()->getValueType();
2256
39.8k
  }
2257
};
2258
2259
struct PipeTypeLocInfo {
2260
  SourceLocation KWLoc;
2261
};
2262
2263
class PipeTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, PipeTypeLoc, PipeType,
2264
                                           PipeTypeLocInfo> {
2265
public:
2266
2
  TypeLoc getValueLoc() const { return this->getInnerTypeLoc(); }
2267
2268
1
  SourceRange getLocalSourceRange() const { return SourceRange(getKWLoc()); }
2269
2270
13
  SourceLocation getKWLoc() const { return this->getLocalData()->KWLoc; }
2271
83
  void setKWLoc(SourceLocation Loc) { this->getLocalData()->KWLoc = Loc; }
2272
2273
1
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
2274
1
    setKWLoc(Loc);
2275
1
  }
2276
2277
362
  QualType getInnerType() const { return this->getTypePtr()->getElementType(); }
2278
};
2279
2280
template <typename T>
2281
5.70M
inline T TypeLoc::getAsAdjusted() const {
2282
5.70M
  TypeLoc Cur = *this;
2283
5.70M
  while (!T::isKind(Cur)) {
2284
5.69M
    if (auto PTL = Cur.getAs<ParenTypeLoc>())
2285
2.59k
      Cur = PTL.getInnerLoc();
2286
5.69M
    else if (auto ATL = Cur.getAs<AttributedTypeLoc>())
2287
14
      Cur = ATL.getModifiedLoc();
2288
5.69M
    else if (auto ETL = Cur.getAs<ElaboratedTypeLoc>())
2289
0
      Cur = ETL.getNamedTypeLoc();
2290
5.69M
    else if (auto ATL = Cur.getAs<AdjustedTypeLoc>())
2291
0
      Cur = ATL.getOriginalLoc();
2292
5.69M
    else
2293
5.69M
      break;
2294
5.69M
  }
2295
5.70M
  return Cur.getAs<T>();
2296
5.70M
}
clang::FunctionProtoTypeLoc clang::TypeLoc::getAsAdjusted<clang::FunctionProtoTypeLoc>() const
Line
Count
Source
2281
2.98k
inline T TypeLoc::getAsAdjusted() const {
2282
2.98k
  TypeLoc Cur = *this;
2283
2.98k
  while (!T::isKind(Cur)) {
2284
916
    if (auto PTL = Cur.getAs<ParenTypeLoc>())
2285
0
      Cur = PTL.getInnerLoc();
2286
916
    else if (auto ATL = Cur.getAs<AttributedTypeLoc>())
2287
7
      Cur = ATL.getModifiedLoc();
2288
909
    else if (auto ETL = Cur.getAs<ElaboratedTypeLoc>())
2289
0
      Cur = ETL.getNamedTypeLoc();
2290
909
    else if (auto ATL = Cur.getAs<AdjustedTypeLoc>())
2291
0
      Cur = ATL.getOriginalLoc();
2292
909
    else
2293
909
      break;
2294
916
  }
2295
2.98k
  return Cur.getAs<T>();
2296
2.98k
}
clang::AttributedTypeLoc clang::TypeLoc::getAsAdjusted<clang::AttributedTypeLoc>() const
Line
Count
Source
2281
5.69M
inline T TypeLoc::getAsAdjusted() const {
2282
5.69M
  TypeLoc Cur = *this;
2283
5.70M
  while (!T::isKind(Cur)) {
2284
5.69M
    if (auto P