Coverage Report

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