Coverage Report

Created: 2018-11-16 02:38

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