Coverage Report

Created: 2019-07-24 05:18

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