/Users/buildslave/jenkins/workspace/coverage/llvm-project/clang/include/clang/AST/TypeLoc.h
Line | Count | Source (jump to first uncovered line) |
1 | | //===- TypeLoc.h - Type Source Info Wrapper ---------------------*- C++ -*-===// |
2 | | // |
3 | | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | | // See https://llvm.org/LICENSE.txt for license information. |
5 | | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | | // |
7 | | //===----------------------------------------------------------------------===// |
8 | | // |
9 | | /// \file |
10 | | /// Defines the clang::TypeLoc interface and its subclasses. |
11 | | // |
12 | | //===----------------------------------------------------------------------===// |
13 | | |
14 | | #ifndef LLVM_CLANG_AST_TYPELOC_H |
15 | | #define LLVM_CLANG_AST_TYPELOC_H |
16 | | |
17 | | #include "clang/AST/ASTConcept.h" |
18 | | #include "clang/AST/DeclarationName.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 Attr; |
37 | | class ASTContext; |
38 | | class CXXRecordDecl; |
39 | | class ConceptDecl; |
40 | | class Expr; |
41 | | class ObjCInterfaceDecl; |
42 | | class ObjCProtocolDecl; |
43 | | class ObjCTypeParamDecl; |
44 | | class ParmVarDecl; |
45 | | class TemplateTypeParmDecl; |
46 | | class UnqualTypeLoc; |
47 | | class UnresolvedUsingTypenameDecl; |
48 | | |
49 | | // Predeclare all the type nodes. |
50 | | #define ABSTRACT_TYPELOC(Class, Base) |
51 | | #define TYPELOC(Class, Base) \ |
52 | | class Class##TypeLoc; |
53 | | #include "clang/AST/TypeLocNodes.def" |
54 | | |
55 | | /// Base wrapper for a particular "section" of type source info. |
56 | | /// |
57 | | /// A client should use the TypeLoc subclasses through castAs()/getAs() |
58 | | /// in order to get at the actual information. |
59 | | class TypeLoc { |
60 | | protected: |
61 | | // The correctness of this relies on the property that, for Type *Ty, |
62 | | // QualType(Ty, 0).getAsOpaquePtr() == (void*) Ty |
63 | | const void *Ty = nullptr; |
64 | | void *Data = nullptr; |
65 | | |
66 | | public: |
67 | 4.74G | TypeLoc() = default; |
68 | | TypeLoc(QualType ty, void *opaqueData) |
69 | 2.24G | : Ty(ty.getAsOpaquePtr()), Data(opaqueData) {} |
70 | | TypeLoc(const Type *ty, void *opaqueData) |
71 | 107M | : Ty(ty), Data(opaqueData) {} |
72 | | |
73 | | /// Convert to the specified TypeLoc type, asserting that this TypeLoc |
74 | | /// is of the desired type. |
75 | | /// |
76 | | /// \pre T::isKind(*this) |
77 | | template<typename T> |
78 | 3.55G | T castAs() const { |
79 | 3.55G | assert(T::isKind(*this)); |
80 | 3.55G | T t; |
81 | 3.55G | TypeLoc& tl = t; |
82 | 3.55G | tl = *this; |
83 | 3.55G | return t; |
84 | 3.55G | } clang::UnqualTypeLoc clang::TypeLoc::castAs<clang::UnqualTypeLoc>() const Line | Count | Source | 78 | 334M | T castAs() const { | 79 | 334M | assert(T::isKind(*this)); | 80 | 334M | T t; | 81 | 334M | TypeLoc& tl = t; | 82 | 334M | tl = *this; | 83 | 334M | return t; | 84 | 334M | } |
clang::TemplateSpecializationTypeLoc clang::TypeLoc::castAs<clang::TemplateSpecializationTypeLoc>() const Line | Count | Source | 78 | 389M | T castAs() const { | 79 | 389M | assert(T::isKind(*this)); | 80 | 389M | T t; | 81 | 389M | TypeLoc& tl = t; | 82 | 389M | tl = *this; | 83 | 389M | return t; | 84 | 389M | } |
clang::QualifiedTypeLoc clang::TypeLoc::castAs<clang::QualifiedTypeLoc>() const Line | Count | Source | 78 | 57.4M | T castAs() const { | 79 | 57.4M | assert(T::isKind(*this)); | 80 | 57.4M | T t; | 81 | 57.4M | TypeLoc& tl = t; | 82 | 57.4M | tl = *this; | 83 | 57.4M | return t; | 84 | 57.4M | } |
clang::AdjustedTypeLoc clang::TypeLoc::castAs<clang::AdjustedTypeLoc>() const Line | Count | Source | 78 | 116 | T castAs() const { | 79 | 116 | assert(T::isKind(*this)); | 80 | 116 | T t; | 81 | 116 | TypeLoc& tl = t; | 82 | 116 | tl = *this; | 83 | 116 | return t; | 84 | 116 | } |
clang::DecayedTypeLoc clang::TypeLoc::castAs<clang::DecayedTypeLoc>() const Line | Count | Source | 78 | 43.3k | T castAs() const { | 79 | 43.3k | assert(T::isKind(*this)); | 80 | 43.3k | T t; | 81 | 43.3k | TypeLoc& tl = t; | 82 | 43.3k | tl = *this; | 83 | 43.3k | return t; | 84 | 43.3k | } |
clang::ConstantArrayTypeLoc clang::TypeLoc::castAs<clang::ConstantArrayTypeLoc>() const Line | Count | Source | 78 | 2.33M | T castAs() const { | 79 | 2.33M | assert(T::isKind(*this)); | 80 | 2.33M | T t; | 81 | 2.33M | TypeLoc& tl = t; | 82 | 2.33M | tl = *this; | 83 | 2.33M | return t; | 84 | 2.33M | } |
clang::DependentSizedArrayTypeLoc clang::TypeLoc::castAs<clang::DependentSizedArrayTypeLoc>() const Line | Count | Source | 78 | 239k | T castAs() const { | 79 | 239k | assert(T::isKind(*this)); | 80 | 239k | T t; | 81 | 239k | TypeLoc& tl = t; | 82 | 239k | tl = *this; | 83 | 239k | return t; | 84 | 239k | } |
clang::IncompleteArrayTypeLoc clang::TypeLoc::castAs<clang::IncompleteArrayTypeLoc>() const Line | Count | Source | 78 | 510k | T castAs() const { | 79 | 510k | assert(T::isKind(*this)); | 80 | 510k | T t; | 81 | 510k | TypeLoc& tl = t; | 82 | 510k | tl = *this; | 83 | 510k | return t; | 84 | 510k | } |
clang::VariableArrayTypeLoc clang::TypeLoc::castAs<clang::VariableArrayTypeLoc>() const Line | Count | Source | 78 | 127k | T castAs() const { | 79 | 127k | assert(T::isKind(*this)); | 80 | 127k | T t; | 81 | 127k | TypeLoc& tl = t; | 82 | 127k | tl = *this; | 83 | 127k | return t; | 84 | 127k | } |
clang::AtomicTypeLoc clang::TypeLoc::castAs<clang::AtomicTypeLoc>() const Line | Count | Source | 78 | 103k | T castAs() const { | 79 | 103k | assert(T::isKind(*this)); | 80 | 103k | T t; | 81 | 103k | TypeLoc& tl = t; | 82 | 103k | tl = *this; | 83 | 103k | return t; | 84 | 103k | } |
clang::AttributedTypeLoc clang::TypeLoc::castAs<clang::AttributedTypeLoc>() const Line | Count | Source | 78 | 16.0M | T castAs() const { | 79 | 16.0M | assert(T::isKind(*this)); | 80 | 16.0M | T t; | 81 | 16.0M | TypeLoc& tl = t; | 82 | 16.0M | tl = *this; | 83 | 16.0M | return t; | 84 | 16.0M | } |
clang::BTFTagAttributedTypeLoc clang::TypeLoc::castAs<clang::BTFTagAttributedTypeLoc>() const Line | Count | Source | 78 | 479 | T castAs() const { | 79 | 479 | assert(T::isKind(*this)); | 80 | 479 | T t; | 81 | 479 | TypeLoc& tl = t; | 82 | 479 | tl = *this; | 83 | 479 | return t; | 84 | 479 | } |
clang::BitIntTypeLoc clang::TypeLoc::castAs<clang::BitIntTypeLoc>() const Line | Count | Source | 78 | 11.6k | T castAs() const { | 79 | 11.6k | assert(T::isKind(*this)); | 80 | 11.6k | T t; | 81 | 11.6k | TypeLoc& tl = t; | 82 | 11.6k | tl = *this; | 83 | 11.6k | return t; | 84 | 11.6k | } |
clang::BlockPointerTypeLoc clang::TypeLoc::castAs<clang::BlockPointerTypeLoc>() const Line | Count | Source | 78 | 510k | T castAs() const { | 79 | 510k | assert(T::isKind(*this)); | 80 | 510k | T t; | 81 | 510k | TypeLoc& tl = t; | 82 | 510k | tl = *this; | 83 | 510k | return t; | 84 | 510k | } |
clang::BuiltinTypeLoc clang::TypeLoc::castAs<clang::BuiltinTypeLoc>() const Line | Count | Source | 78 | 141M | T castAs() const { | 79 | 141M | assert(T::isKind(*this)); | 80 | 141M | T t; | 81 | 141M | TypeLoc& tl = t; | 82 | 141M | tl = *this; | 83 | 141M | return t; | 84 | 141M | } |
clang::ComplexTypeLoc clang::TypeLoc::castAs<clang::ComplexTypeLoc>() const Line | Count | Source | 78 | 49.7k | T castAs() const { | 79 | 49.7k | assert(T::isKind(*this)); | 80 | 49.7k | T t; | 81 | 49.7k | TypeLoc& tl = t; | 82 | 49.7k | tl = *this; | 83 | 49.7k | return t; | 84 | 49.7k | } |
clang::DecltypeTypeLoc clang::TypeLoc::castAs<clang::DecltypeTypeLoc>() const Line | Count | Source | 78 | 4.80M | T castAs() const { | 79 | 4.80M | assert(T::isKind(*this)); | 80 | 4.80M | T t; | 81 | 4.80M | TypeLoc& tl = t; | 82 | 4.80M | tl = *this; | 83 | 4.80M | return t; | 84 | 4.80M | } |
clang::AutoTypeLoc clang::TypeLoc::castAs<clang::AutoTypeLoc>() const Line | Count | Source | 78 | 3.49M | T castAs() const { | 79 | 3.49M | assert(T::isKind(*this)); | 80 | 3.49M | T t; | 81 | 3.49M | TypeLoc& tl = t; | 82 | 3.49M | tl = *this; | 83 | 3.49M | return t; | 84 | 3.49M | } |
clang::DeducedTemplateSpecializationTypeLoc clang::TypeLoc::castAs<clang::DeducedTemplateSpecializationTypeLoc>() const Line | Count | Source | 78 | 84.0k | T castAs() const { | 79 | 84.0k | assert(T::isKind(*this)); | 80 | 84.0k | T t; | 81 | 84.0k | TypeLoc& tl = t; | 82 | 84.0k | tl = *this; | 83 | 84.0k | return t; | 84 | 84.0k | } |
clang::DependentAddressSpaceTypeLoc clang::TypeLoc::castAs<clang::DependentAddressSpaceTypeLoc>() const Line | Count | Source | 78 | 745 | T castAs() const { | 79 | 745 | assert(T::isKind(*this)); | 80 | 745 | T t; | 81 | 745 | TypeLoc& tl = t; | 82 | 745 | tl = *this; | 83 | 745 | return t; | 84 | 745 | } |
clang::DependentBitIntTypeLoc clang::TypeLoc::castAs<clang::DependentBitIntTypeLoc>() const Line | Count | Source | 78 | 1.29k | T castAs() const { | 79 | 1.29k | assert(T::isKind(*this)); | 80 | 1.29k | T t; | 81 | 1.29k | TypeLoc& tl = t; | 82 | 1.29k | tl = *this; | 83 | 1.29k | return t; | 84 | 1.29k | } |
clang::DependentNameTypeLoc clang::TypeLoc::castAs<clang::DependentNameTypeLoc>() const Line | Count | Source | 78 | 32.8M | T castAs() const { | 79 | 32.8M | assert(T::isKind(*this)); | 80 | 32.8M | T t; | 81 | 32.8M | TypeLoc& tl = t; | 82 | 32.8M | tl = *this; | 83 | 32.8M | return t; | 84 | 32.8M | } |
clang::DependentSizedExtVectorTypeLoc clang::TypeLoc::castAs<clang::DependentSizedExtVectorTypeLoc>() const Line | Count | Source | 78 | 15.0k | T castAs() const { | 79 | 15.0k | assert(T::isKind(*this)); | 80 | 15.0k | T t; | 81 | 15.0k | TypeLoc& tl = t; | 82 | 15.0k | tl = *this; | 83 | 15.0k | return t; | 84 | 15.0k | } |
clang::DependentTemplateSpecializationTypeLoc clang::TypeLoc::castAs<clang::DependentTemplateSpecializationTypeLoc>() const Line | Count | Source | 78 | 1.14M | T castAs() const { | 79 | 1.14M | assert(T::isKind(*this)); | 80 | 1.14M | T t; | 81 | 1.14M | TypeLoc& tl = t; | 82 | 1.14M | tl = *this; | 83 | 1.14M | return t; | 84 | 1.14M | } |
clang::DependentVectorTypeLoc clang::TypeLoc::castAs<clang::DependentVectorTypeLoc>() const Line | Count | Source | 78 | 1.02k | T castAs() const { | 79 | 1.02k | assert(T::isKind(*this)); | 80 | 1.02k | T t; | 81 | 1.02k | TypeLoc& tl = t; | 82 | 1.02k | tl = *this; | 83 | 1.02k | return t; | 84 | 1.02k | } |
clang::ElaboratedTypeLoc clang::TypeLoc::castAs<clang::ElaboratedTypeLoc>() const Line | Count | Source | 78 | 816M | T castAs() const { | 79 | 816M | assert(T::isKind(*this)); | 80 | 816M | T t; | 81 | 816M | TypeLoc& tl = t; | 82 | 816M | tl = *this; | 83 | 816M | return t; | 84 | 816M | } |
clang::FunctionNoProtoTypeLoc clang::TypeLoc::castAs<clang::FunctionNoProtoTypeLoc>() const Line | Count | Source | 78 | 64.1k | T castAs() const { | 79 | 64.1k | assert(T::isKind(*this)); | 80 | 64.1k | T t; | 81 | 64.1k | TypeLoc& tl = t; | 82 | 64.1k | tl = *this; | 83 | 64.1k | return t; | 84 | 64.1k | } |
clang::FunctionProtoTypeLoc clang::TypeLoc::castAs<clang::FunctionProtoTypeLoc>() const Line | Count | Source | 78 | 223M | T castAs() const { | 79 | 223M | assert(T::isKind(*this)); | 80 | 223M | T t; | 81 | 223M | TypeLoc& tl = t; | 82 | 223M | tl = *this; | 83 | 223M | return t; | 84 | 223M | } |
clang::InjectedClassNameTypeLoc clang::TypeLoc::castAs<clang::InjectedClassNameTypeLoc>() const Line | Count | Source | 78 | 14.6M | T castAs() const { | 79 | 14.6M | assert(T::isKind(*this)); | 80 | 14.6M | T t; | 81 | 14.6M | TypeLoc& tl = t; | 82 | 14.6M | tl = *this; | 83 | 14.6M | return t; | 84 | 14.6M | } |
clang::MacroQualifiedTypeLoc clang::TypeLoc::castAs<clang::MacroQualifiedTypeLoc>() const Line | Count | Source | 78 | 972k | T castAs() const { | 79 | 972k | assert(T::isKind(*this)); | 80 | 972k | T t; | 81 | 972k | TypeLoc& tl = t; | 82 | 972k | tl = *this; | 83 | 972k | return t; | 84 | 972k | } |
clang::ConstantMatrixTypeLoc clang::TypeLoc::castAs<clang::ConstantMatrixTypeLoc>() const Line | Count | Source | 78 | 4.82k | T castAs() const { | 79 | 4.82k | assert(T::isKind(*this)); | 80 | 4.82k | T t; | 81 | 4.82k | TypeLoc& tl = t; | 82 | 4.82k | tl = *this; | 83 | 4.82k | return t; | 84 | 4.82k | } |
clang::DependentSizedMatrixTypeLoc clang::TypeLoc::castAs<clang::DependentSizedMatrixTypeLoc>() const Line | Count | Source | 78 | 3.04k | T castAs() const { | 79 | 3.04k | assert(T::isKind(*this)); | 80 | 3.04k | T t; | 81 | 3.04k | TypeLoc& tl = t; | 82 | 3.04k | tl = *this; | 83 | 3.04k | return t; | 84 | 3.04k | } |
clang::MemberPointerTypeLoc clang::TypeLoc::castAs<clang::MemberPointerTypeLoc>() const Line | Count | Source | 78 | 463k | T castAs() const { | 79 | 463k | assert(T::isKind(*this)); | 80 | 463k | T t; | 81 | 463k | TypeLoc& tl = t; | 82 | 463k | tl = *this; | 83 | 463k | return t; | 84 | 463k | } |
clang::ObjCObjectPointerTypeLoc clang::TypeLoc::castAs<clang::ObjCObjectPointerTypeLoc>() const Line | Count | Source | 78 | 10.1M | T castAs() const { | 79 | 10.1M | assert(T::isKind(*this)); | 80 | 10.1M | T t; | 81 | 10.1M | TypeLoc& tl = t; | 82 | 10.1M | tl = *this; | 83 | 10.1M | return t; | 84 | 10.1M | } |
clang::ObjCObjectTypeLoc clang::TypeLoc::castAs<clang::ObjCObjectTypeLoc>() const Line | Count | Source | 78 | 3.45M | T castAs() const { | 79 | 3.45M | assert(T::isKind(*this)); | 80 | 3.45M | T t; | 81 | 3.45M | TypeLoc& tl = t; | 82 | 3.45M | tl = *this; | 83 | 3.45M | return t; | 84 | 3.45M | } |
clang::ObjCInterfaceTypeLoc clang::TypeLoc::castAs<clang::ObjCInterfaceTypeLoc>() const Line | Count | Source | 78 | 12.9M | T castAs() const { | 79 | 12.9M | assert(T::isKind(*this)); | 80 | 12.9M | T t; | 81 | 12.9M | TypeLoc& tl = t; | 82 | 12.9M | tl = *this; | 83 | 12.9M | return t; | 84 | 12.9M | } |
clang::ObjCTypeParamTypeLoc clang::TypeLoc::castAs<clang::ObjCTypeParamTypeLoc>() const Line | Count | Source | 78 | 774k | T castAs() const { | 79 | 774k | assert(T::isKind(*this)); | 80 | 774k | T t; | 81 | 774k | TypeLoc& tl = t; | 82 | 774k | tl = *this; | 83 | 774k | return t; | 84 | 774k | } |
clang::PackExpansionTypeLoc clang::TypeLoc::castAs<clang::PackExpansionTypeLoc>() const Line | Count | Source | 78 | 4.41M | T castAs() const { | 79 | 4.41M | assert(T::isKind(*this)); | 80 | 4.41M | T t; | 81 | 4.41M | TypeLoc& tl = t; | 82 | 4.41M | tl = *this; | 83 | 4.41M | return t; | 84 | 4.41M | } |
clang::ParenTypeLoc clang::TypeLoc::castAs<clang::ParenTypeLoc>() const Line | Count | Source | 78 | 3.54M | T castAs() const { | 79 | 3.54M | assert(T::isKind(*this)); | 80 | 3.54M | T t; | 81 | 3.54M | TypeLoc& tl = t; | 82 | 3.54M | tl = *this; | 83 | 3.54M | return t; | 84 | 3.54M | } |
clang::PipeTypeLoc clang::TypeLoc::castAs<clang::PipeTypeLoc>() const Line | Count | Source | 78 | 1.36k | T castAs() const { | 79 | 1.36k | assert(T::isKind(*this)); | 80 | 1.36k | T t; | 81 | 1.36k | TypeLoc& tl = t; | 82 | 1.36k | tl = *this; | 83 | 1.36k | return t; | 84 | 1.36k | } |
clang::PointerTypeLoc clang::TypeLoc::castAs<clang::PointerTypeLoc>() const Line | Count | Source | 78 | 63.3M | T castAs() const { | 79 | 63.3M | assert(T::isKind(*this)); | 80 | 63.3M | T t; | 81 | 63.3M | TypeLoc& tl = t; | 82 | 63.3M | tl = *this; | 83 | 63.3M | return t; | 84 | 63.3M | } |
clang::LValueReferenceTypeLoc clang::TypeLoc::castAs<clang::LValueReferenceTypeLoc>() const Line | Count | Source | 78 | 37.6M | T castAs() const { | 79 | 37.6M | assert(T::isKind(*this)); | 80 | 37.6M | T t; | 81 | 37.6M | TypeLoc& tl = t; | 82 | 37.6M | tl = *this; | 83 | 37.6M | return t; | 84 | 37.6M | } |
clang::RValueReferenceTypeLoc clang::TypeLoc::castAs<clang::RValueReferenceTypeLoc>() const Line | Count | Source | 78 | 11.3M | T castAs() const { | 79 | 11.3M | assert(T::isKind(*this)); | 80 | 11.3M | T t; | 81 | 11.3M | TypeLoc& tl = t; | 82 | 11.3M | tl = *this; | 83 | 11.3M | return t; | 84 | 11.3M | } |
clang::SubstTemplateTypeParmPackTypeLoc clang::TypeLoc::castAs<clang::SubstTemplateTypeParmPackTypeLoc>() const Line | Count | Source | 78 | 193k | T castAs() const { | 79 | 193k | assert(T::isKind(*this)); | 80 | 193k | T t; | 81 | 193k | TypeLoc& tl = t; | 82 | 193k | tl = *this; | 83 | 193k | return t; | 84 | 193k | } |
clang::SubstTemplateTypeParmTypeLoc clang::TypeLoc::castAs<clang::SubstTemplateTypeParmTypeLoc>() const Line | Count | Source | 78 | 87.0M | T castAs() const { | 79 | 87.0M | assert(T::isKind(*this)); | 80 | 87.0M | T t; | 81 | 87.0M | TypeLoc& tl = t; | 82 | 87.0M | tl = *this; | 83 | 87.0M | return t; | 84 | 87.0M | } |
clang::EnumTypeLoc clang::TypeLoc::castAs<clang::EnumTypeLoc>() const Line | Count | Source | 78 | 5.11M | T castAs() const { | 79 | 5.11M | assert(T::isKind(*this)); | 80 | 5.11M | T t; | 81 | 5.11M | TypeLoc& tl = t; | 82 | 5.11M | tl = *this; | 83 | 5.11M | return t; | 84 | 5.11M | } |
clang::RecordTypeLoc clang::TypeLoc::castAs<clang::RecordTypeLoc>() const Line | Count | Source | 78 | 82.5M | T castAs() const { | 79 | 82.5M | assert(T::isKind(*this)); | 80 | 82.5M | T t; | 81 | 82.5M | TypeLoc& tl = t; | 82 | 82.5M | tl = *this; | 83 | 82.5M | return t; | 84 | 82.5M | } |
clang::TemplateTypeParmTypeLoc clang::TypeLoc::castAs<clang::TemplateTypeParmTypeLoc>() const Line | Count | Source | 78 | 202M | T castAs() const { | 79 | 202M | assert(T::isKind(*this)); | 80 | 202M | T t; | 81 | 202M | TypeLoc& tl = t; | 82 | 202M | tl = *this; | 83 | 202M | return t; | 84 | 202M | } |
clang::TypeOfExprTypeLoc clang::TypeLoc::castAs<clang::TypeOfExprTypeLoc>() const Line | Count | Source | 78 | 42.5k | T castAs() const { | 79 | 42.5k | assert(T::isKind(*this)); | 80 | 42.5k | T t; | 81 | 42.5k | TypeLoc& tl = t; | 82 | 42.5k | tl = *this; | 83 | 42.5k | return t; | 84 | 42.5k | } |
clang::TypeOfTypeLoc clang::TypeLoc::castAs<clang::TypeOfTypeLoc>() const Line | Count | Source | 78 | 899 | T castAs() const { | 79 | 899 | assert(T::isKind(*this)); | 80 | 899 | T t; | 81 | 899 | TypeLoc& tl = t; | 82 | 899 | tl = *this; | 83 | 899 | return t; | 84 | 899 | } |
clang::TypedefTypeLoc clang::TypeLoc::castAs<clang::TypedefTypeLoc>() const Line | Count | Source | 78 | 928M | T castAs() const { | 79 | 928M | assert(T::isKind(*this)); | 80 | 928M | T t; | 81 | 928M | TypeLoc& tl = t; | 82 | 928M | tl = *this; | 83 | 928M | return t; | 84 | 928M | } |
clang::UnaryTransformTypeLoc clang::TypeLoc::castAs<clang::UnaryTransformTypeLoc>() const Line | Count | Source | 78 | 7.76M | T castAs() const { | 79 | 7.76M | assert(T::isKind(*this)); | 80 | 7.76M | T t; | 81 | 7.76M | TypeLoc& tl = t; | 82 | 7.76M | tl = *this; | 83 | 7.76M | return t; | 84 | 7.76M | } |
clang::UnresolvedUsingTypeLoc clang::TypeLoc::castAs<clang::UnresolvedUsingTypeLoc>() const Line | Count | Source | 78 | 4.16k | T castAs() const { | 79 | 4.16k | assert(T::isKind(*this)); | 80 | 4.16k | T t; | 81 | 4.16k | TypeLoc& tl = t; | 82 | 4.16k | tl = *this; | 83 | 4.16k | return t; | 84 | 4.16k | } |
clang::UsingTypeLoc clang::TypeLoc::castAs<clang::UsingTypeLoc>() const Line | Count | Source | 78 | 6.40M | T castAs() const { | 79 | 6.40M | assert(T::isKind(*this)); | 80 | 6.40M | T t; | 81 | 6.40M | TypeLoc& tl = t; | 82 | 6.40M | tl = *this; | 83 | 6.40M | return t; | 84 | 6.40M | } |
clang::VectorTypeLoc clang::TypeLoc::castAs<clang::VectorTypeLoc>() const Line | Count | Source | 78 | 852k | T castAs() const { | 79 | 852k | assert(T::isKind(*this)); | 80 | 852k | T t; | 81 | 852k | TypeLoc& tl = t; | 82 | 852k | tl = *this; | 83 | 852k | return t; | 84 | 852k | } |
clang::ExtVectorTypeLoc clang::TypeLoc::castAs<clang::ExtVectorTypeLoc>() const Line | Count | Source | 78 | 41.0k | T castAs() const { | 79 | 41.0k | assert(T::isKind(*this)); | 80 | 41.0k | T t; | 81 | 41.0k | TypeLoc& tl = t; | 82 | 41.0k | tl = *this; | 83 | 41.0k | return t; | 84 | 41.0k | } |
clang::ArrayTypeLoc clang::TypeLoc::castAs<clang::ArrayTypeLoc>() const Line | Count | Source | 78 | 386k | T castAs() const { | 79 | 386k | assert(T::isKind(*this)); | 80 | 386k | T t; | 81 | 386k | TypeLoc& tl = t; | 82 | 386k | tl = *this; | 83 | 386k | return t; | 84 | 386k | } |
clang::TypeLoc clang::TypeLoc::castAs<clang::TypeLoc>() const Line | Count | Source | 78 | 7.85M | T castAs() const { | 79 | 7.85M | assert(T::isKind(*this)); | 80 | 7.85M | T t; | 81 | 7.85M | TypeLoc& tl = t; | 82 | 7.85M | tl = *this; | 83 | 7.85M | return t; | 84 | 7.85M | } |
clang::DeducedTypeLoc clang::TypeLoc::castAs<clang::DeducedTypeLoc>() const Line | Count | Source | 78 | 2.06k | T castAs() const { | 79 | 2.06k | assert(T::isKind(*this)); | 80 | 2.06k | T t; | 81 | 2.06k | TypeLoc& tl = t; | 82 | 2.06k | tl = *this; | 83 | 2.06k | return t; | 84 | 2.06k | } |
clang::FunctionTypeLoc clang::TypeLoc::castAs<clang::FunctionTypeLoc>() const Line | Count | Source | 78 | 36.9M | T castAs() const { | 79 | 36.9M | assert(T::isKind(*this)); | 80 | 36.9M | T t; | 81 | 36.9M | TypeLoc& tl = t; | 82 | 36.9M | tl = *this; | 83 | 36.9M | return t; | 84 | 36.9M | } |
clang::MatrixTypeLoc clang::TypeLoc::castAs<clang::MatrixTypeLoc>() const Line | Count | Source | 78 | 666 | T castAs() const { | 79 | 666 | assert(T::isKind(*this)); | 80 | 666 | T t; | 81 | 666 | TypeLoc& tl = t; | 82 | 666 | tl = *this; | 83 | 666 | return t; | 84 | 666 | } |
clang::ReferenceTypeLoc clang::TypeLoc::castAs<clang::ReferenceTypeLoc>() const Line | Count | Source | 78 | 10.3k | T castAs() const { | 79 | 10.3k | assert(T::isKind(*this)); | 80 | 10.3k | T t; | 81 | 10.3k | TypeLoc& tl = t; | 82 | 10.3k | tl = *this; | 83 | 10.3k | return t; | 84 | 10.3k | } |
clang::TagTypeLoc clang::TypeLoc::castAs<clang::TagTypeLoc>() const Line | Count | Source | 78 | 2.24M | T castAs() const { | 79 | 2.24M | assert(T::isKind(*this)); | 80 | 2.24M | T t; | 81 | 2.24M | TypeLoc& tl = t; | 82 | 2.24M | tl = *this; | 83 | 2.24M | return t; | 84 | 2.24M | } |
clang::TypeSpecTypeLoc clang::TypeLoc::castAs<clang::TypeSpecTypeLoc>() const Line | Count | Source | 78 | 1.56M | T castAs() const { | 79 | 1.56M | assert(T::isKind(*this)); | 80 | 1.56M | T t; | 81 | 1.56M | TypeLoc& tl = t; | 82 | 1.56M | tl = *this; | 83 | 1.56M | return t; | 84 | 1.56M | } |
|
85 | | |
86 | | /// Convert to the specified TypeLoc type, returning a null TypeLoc if |
87 | | /// this TypeLoc is not of the desired type. |
88 | | template<typename T> |
89 | 665M | T getAs() const { |
90 | 665M | if (!T::isKind(*this)) |
91 | 651M | return {}; |
92 | 13.8M | T t; |
93 | 13.8M | TypeLoc& tl = t; |
94 | 13.8M | tl = *this; |
95 | 13.8M | return t; |
96 | 665M | } clang::QualifiedTypeLoc clang::TypeLoc::getAs<clang::QualifiedTypeLoc>() const Line | Count | Source | 89 | 341M | T getAs() const { | 90 | 341M | if (!T::isKind(*this)) | 91 | 335M | return {}; | 92 | 6.19M | T t; | 93 | 6.19M | TypeLoc& tl = t; | 94 | 6.19M | tl = *this; | 95 | 6.19M | return t; | 96 | 341M | } |
clang::ElaboratedTypeLoc clang::TypeLoc::getAs<clang::ElaboratedTypeLoc>() const Line | Count | Source | 89 | 43.3M | T getAs() const { | 90 | 43.3M | if (!T::isKind(*this)) | 91 | 41.1M | return {}; | 92 | 2.23M | T t; | 93 | 2.23M | TypeLoc& tl = t; | 94 | 2.23M | tl = *this; | 95 | 2.23M | return t; | 96 | 43.3M | } |
clang::PointerTypeLoc clang::TypeLoc::getAs<clang::PointerTypeLoc>() const Line | Count | Source | 89 | 18.2k | T getAs() const { | 90 | 18.2k | if (!T::isKind(*this)) | 91 | 1.46k | return {}; | 92 | 16.7k | T t; | 93 | 16.7k | TypeLoc& tl = t; | 94 | 16.7k | tl = *this; | 95 | 16.7k | return t; | 96 | 18.2k | } |
clang::ReferenceTypeLoc clang::TypeLoc::getAs<clang::ReferenceTypeLoc>() const Line | Count | Source | 89 | 1.17k | T getAs() const { | 90 | 1.17k | if (!T::isKind(*this)) | 91 | 1.15k | return {}; | 92 | 18 | T t; | 93 | 18 | TypeLoc& tl = t; | 94 | 18 | tl = *this; | 95 | 18 | return t; | 96 | 1.17k | } |
clang::BlockPointerTypeLoc clang::TypeLoc::getAs<clang::BlockPointerTypeLoc>() const Line | Count | Source | 89 | 802 | T getAs() const { | 90 | 802 | if (!T::isKind(*this)) | 91 | 705 | return {}; | 92 | 97 | T t; | 93 | 97 | TypeLoc& tl = t; | 94 | 97 | tl = *this; | 95 | 97 | return t; | 96 | 802 | } |
clang::MemberPointerTypeLoc clang::TypeLoc::getAs<clang::MemberPointerTypeLoc>() const Line | Count | Source | 89 | 701 | T getAs() const { | 90 | 701 | if (!T::isKind(*this)) | 91 | 694 | return {}; | 92 | 7 | T t; | 93 | 7 | TypeLoc& tl = t; | 94 | 7 | tl = *this; | 95 | 7 | return t; | 96 | 701 | } |
clang::TemplateSpecializationTypeLoc clang::TypeLoc::getAs<clang::TemplateSpecializationTypeLoc>() const Line | Count | Source | 89 | 169k | T getAs() const { | 90 | 169k | if (!T::isKind(*this)) | 91 | 361 | return {}; | 92 | 169k | T t; | 93 | 169k | TypeLoc& tl = t; | 94 | 169k | tl = *this; | 95 | 169k | return t; | 96 | 169k | } |
clang::FunctionTypeLoc clang::TypeLoc::getAs<clang::FunctionTypeLoc>() const Line | Count | Source | 89 | 3.35k | T getAs() const { | 90 | 3.35k | if (!T::isKind(*this)) | 91 | 394 | return {}; | 92 | 2.96k | T t; | 93 | 2.96k | TypeLoc& tl = t; | 94 | 2.96k | tl = *this; | 95 | 2.96k | return t; | 96 | 3.35k | } |
clang::ParenTypeLoc clang::TypeLoc::getAs<clang::ParenTypeLoc>() const Line | Count | Source | 89 | 36.6M | T getAs() const { | 90 | 36.6M | if (!T::isKind(*this)) | 91 | 36.6M | return {}; | 92 | 319 | T t; | 93 | 319 | TypeLoc& tl = t; | 94 | 319 | tl = *this; | 95 | 319 | return t; | 96 | 36.6M | } |
clang::AttributedTypeLoc clang::TypeLoc::getAs<clang::AttributedTypeLoc>() const Line | Count | Source | 89 | 73.5M | T getAs() const { | 90 | 73.5M | if (!T::isKind(*this)) | 91 | 73.5M | return {}; | 92 | 16.2k | T t; | 93 | 16.2k | TypeLoc& tl = t; | 94 | 16.2k | tl = *this; | 95 | 16.2k | return t; | 96 | 73.5M | } |
clang::BTFTagAttributedTypeLoc clang::TypeLoc::getAs<clang::BTFTagAttributedTypeLoc>() const Line | Count | Source | 89 | 36.6M | T getAs() const { | 90 | 36.6M | if (!T::isKind(*this)) | 91 | 36.6M | return {}; | 92 | 0 | T t; | 93 | 0 | TypeLoc& tl = t; | 94 | 0 | tl = *this; | 95 | 0 | return t; | 96 | 36.6M | } |
clang::AdjustedTypeLoc clang::TypeLoc::getAs<clang::AdjustedTypeLoc>() const Line | Count | Source | 89 | 36.6M | T getAs() const { | 90 | 36.6M | if (!T::isKind(*this)) | 91 | 36.6M | return {}; | 92 | 0 | T t; | 93 | 0 | TypeLoc& tl = t; | 94 | 0 | tl = *this; | 95 | 0 | return t; | 96 | 36.6M | } |
clang::MacroQualifiedTypeLoc clang::TypeLoc::getAs<clang::MacroQualifiedTypeLoc>() const Line | Count | Source | 89 | 36.6M | T getAs() const { | 90 | 36.6M | if (!T::isKind(*this)) | 91 | 36.6M | return {}; | 92 | 13.1k | T t; | 93 | 13.1k | TypeLoc& tl = t; | 94 | 13.1k | tl = *this; | 95 | 13.1k | return t; | 96 | 36.6M | } |
clang::TypedefTypeLoc clang::TypeLoc::getAs<clang::TypedefTypeLoc>() const Line | Count | Source | 89 | 15.7k | T getAs() const { | 90 | 15.7k | if (!T::isKind(*this)) | 91 | 15.7k | return {}; | 92 | 34 | T t; | 93 | 34 | TypeLoc& tl = t; | 94 | 34 | tl = *this; | 95 | 34 | return t; | 96 | 15.7k | } |
clang::ConstantArrayTypeLoc clang::TypeLoc::getAs<clang::ConstantArrayTypeLoc>() const Line | Count | Source | 89 | 14.7k | T getAs() const { | 90 | 14.7k | if (!T::isKind(*this)) | 91 | 136 | return {}; | 92 | 14.6k | T t; | 93 | 14.6k | TypeLoc& tl = t; | 94 | 14.6k | tl = *this; | 95 | 14.6k | return t; | 96 | 14.7k | } |
clang::FunctionProtoTypeLoc clang::TypeLoc::getAs<clang::FunctionProtoTypeLoc>() const Line | Count | Source | 89 | 4.59M | T getAs() const { | 90 | 4.59M | if (!T::isKind(*this)) | 91 | 1.36k | return {}; | 92 | 4.59M | T t; | 93 | 4.59M | TypeLoc& tl = t; | 94 | 4.59M | tl = *this; | 95 | 4.59M | return t; | 96 | 4.59M | } |
clang::AtomicTypeLoc clang::TypeLoc::getAs<clang::AtomicTypeLoc>() const Line | Count | Source | 89 | 49.7M | T getAs() const { | 90 | 49.7M | if (!T::isKind(*this)) | 91 | 49.7M | return {}; | 92 | 18 | T t; | 93 | 18 | TypeLoc& tl = t; | 94 | 18 | tl = *this; | 95 | 18 | return t; | 96 | 49.7M | } |
clang::AutoTypeLoc clang::TypeLoc::getAs<clang::AutoTypeLoc>() const Line | Count | Source | 89 | 430 | T getAs() const { | 90 | 430 | if (!T::isKind(*this)) | 91 | 0 | return {}; | 92 | 430 | T t; | 93 | 430 | TypeLoc& tl = t; | 94 | 430 | tl = *this; | 95 | 430 | return t; | 96 | 430 | } |
clang::VariableArrayTypeLoc clang::TypeLoc::getAs<clang::VariableArrayTypeLoc>() const Line | Count | Source | 89 | 294 | T getAs() const { | 90 | 294 | if (!T::isKind(*this)) | 91 | 291 | return {}; | 92 | 3 | T t; | 93 | 3 | TypeLoc& tl = t; | 94 | 3 | tl = *this; | 95 | 3 | return t; | 96 | 294 | } |
clang::FunctionNoProtoTypeLoc clang::TypeLoc::getAs<clang::FunctionNoProtoTypeLoc>() const Line | Count | Source | 89 | 78 | T getAs() const { | 90 | 78 | if (!T::isKind(*this)) | 91 | 3 | return {}; | 92 | 75 | T t; | 93 | 75 | TypeLoc& tl = t; | 94 | 75 | tl = *this; | 95 | 75 | return t; | 96 | 78 | } |
clang::DecayedTypeLoc clang::TypeLoc::getAs<clang::DecayedTypeLoc>() const Line | Count | Source | 89 | 12 | T getAs() const { | 90 | 12 | if (!T::isKind(*this)) | 91 | 12 | return {}; | 92 | 0 | T t; | 93 | 0 | TypeLoc& tl = t; | 94 | 0 | tl = *this; | 95 | 0 | return t; | 96 | 12 | } |
clang::ArrayTypeLoc clang::TypeLoc::getAs<clang::ArrayTypeLoc>() const Line | Count | Source | 89 | 524 | T getAs() const { | 90 | 524 | if (!T::isKind(*this)) | 91 | 507 | return {}; | 92 | 17 | T t; | 93 | 17 | TypeLoc& tl = t; | 94 | 17 | tl = *this; | 95 | 17 | return t; | 96 | 524 | } |
clang::TemplateTypeParmTypeLoc clang::TypeLoc::getAs<clang::TemplateTypeParmTypeLoc>() const Line | Count | Source | 89 | 884k | T getAs() const { | 90 | 884k | if (!T::isKind(*this)) | 91 | 385k | return {}; | 92 | 499k | T t; | 93 | 499k | TypeLoc& tl = t; | 94 | 499k | tl = *this; | 95 | 499k | return t; | 96 | 884k | } |
clang::SubstTemplateTypeParmPackTypeLoc clang::TypeLoc::getAs<clang::SubstTemplateTypeParmPackTypeLoc>() const Line | Count | Source | 89 | 385k | T getAs() const { | 90 | 385k | if (!T::isKind(*this)) | 91 | 385k | return {}; | 92 | 5 | T t; | 93 | 5 | TypeLoc& tl = t; | 94 | 5 | tl = *this; | 95 | 5 | return t; | 96 | 385k | } |
clang::PackExpansionTypeLoc clang::TypeLoc::getAs<clang::PackExpansionTypeLoc>() const Line | Count | Source | 89 | 3.57M | T getAs() const { | 90 | 3.57M | if (!T::isKind(*this)) | 91 | 3.51M | return {}; | 92 | 55.1k | T t; | 93 | 55.1k | TypeLoc& tl = t; | 94 | 55.1k | tl = *this; | 95 | 55.1k | return t; | 96 | 3.57M | } |
clang::IncompleteArrayTypeLoc clang::TypeLoc::getAs<clang::IncompleteArrayTypeLoc>() const Line | Count | Source | 89 | 88 | T getAs() const { | 90 | 88 | if (!T::isKind(*this)) | 91 | 54 | return {}; | 92 | 34 | T t; | 93 | 34 | TypeLoc& tl = t; | 94 | 34 | tl = *this; | 95 | 34 | return t; | 96 | 88 | } |
clang::InjectedClassNameTypeLoc clang::TypeLoc::getAs<clang::InjectedClassNameTypeLoc>() const Line | Count | Source | 89 | 35 | T getAs() const { | 90 | 35 | if (!T::isKind(*this)) | 91 | 34 | return {}; | 92 | 1 | T t; | 93 | 1 | TypeLoc& tl = t; | 94 | 1 | tl = *this; | 95 | 1 | return t; | 96 | 35 | } |
clang::RecordTypeLoc clang::TypeLoc::getAs<clang::RecordTypeLoc>() const Line | Count | Source | 89 | 34 | T getAs() const { | 90 | 34 | if (!T::isKind(*this)) | 91 | 4 | return {}; | 92 | 30 | T t; | 93 | 30 | TypeLoc& tl = t; | 94 | 30 | tl = *this; | 95 | 30 | return t; | 96 | 34 | } |
clang::DeducedTemplateSpecializationTypeLoc clang::TypeLoc::getAs<clang::DeducedTemplateSpecializationTypeLoc>() const Line | Count | Source | 89 | 647k | T getAs() const { | 90 | 647k | if (!T::isKind(*this)) | 91 | 646k | return {}; | 92 | 1.33k | T t; | 93 | 1.33k | TypeLoc& tl = t; | 94 | 1.33k | tl = *this; | 95 | 1.33k | return t; | 96 | 647k | } |
clang::ObjCObjectPointerTypeLoc clang::TypeLoc::getAs<clang::ObjCObjectPointerTypeLoc>() const Line | Count | Source | 89 | 153k | T getAs() const { | 90 | 153k | if (!T::isKind(*this)) | 91 | 137k | return {}; | 92 | 15.6k | T t; | 93 | 15.6k | TypeLoc& tl = t; | 94 | 15.6k | tl = *this; | 95 | 15.6k | return t; | 96 | 153k | } |
clang::ObjCTypeParamTypeLoc clang::TypeLoc::getAs<clang::ObjCTypeParamTypeLoc>() const Line | Count | Source | 89 | 153k | T getAs() const { | 90 | 153k | if (!T::isKind(*this)) | 91 | 151k | return {}; | 92 | 1.76k | T t; | 93 | 1.76k | TypeLoc& tl = t; | 94 | 1.76k | tl = *this; | 95 | 1.76k | return t; | 96 | 153k | } |
clang::DependentTemplateSpecializationTypeLoc clang::TypeLoc::getAs<clang::DependentTemplateSpecializationTypeLoc>() const Line | Count | Source | 89 | 166 | T getAs() const { | 90 | 166 | if (!T::isKind(*this)) | 91 | 161 | return {}; | 92 | 5 | T t; | 93 | 5 | TypeLoc& tl = t; | 94 | 5 | tl = *this; | 95 | 5 | return t; | 96 | 166 | } |
Unexecuted instantiation: clang::DependentNameTypeLoc clang::TypeLoc::getAs<clang::DependentNameTypeLoc>() const |
97 | | |
98 | | /// Convert to the specified TypeLoc type, returning a null TypeLoc if |
99 | | /// this TypeLoc is not of the desired type. It will consider type |
100 | | /// adjustments from a type that was written as a T to another type that is |
101 | | /// still canonically a T (ignores parens, attributes, elaborated types, etc). |
102 | | template <typename T> |
103 | | T getAsAdjusted() const; |
104 | | |
105 | | /// The kinds of TypeLocs. Equivalent to the Type::TypeClass enum, |
106 | | /// except it also defines a Qualified enum that corresponds to the |
107 | | /// QualifiedLoc class. |
108 | | enum TypeLocClass { |
109 | | #define ABSTRACT_TYPE(Class, Base) |
110 | | #define TYPE(Class, Base) \ |
111 | | Class = Type::Class, |
112 | | #include "clang/AST/TypeNodes.inc" |
113 | | Qualified |
114 | | }; |
115 | | |
116 | 2.96G | TypeLocClass getTypeLocClass() const { |
117 | 2.96G | if (getType().hasLocalQualifiers()) return Qualified61.1M ; |
118 | 2.90G | return (TypeLocClass) getType()->getTypeClass(); |
119 | 2.96G | } |
120 | | |
121 | 1.29G | bool isNull() const { return !Ty; } |
122 | 729M | explicit operator bool() const { return Ty; } |
123 | | |
124 | | /// Returns the size of type source info data block for the given type. |
125 | | static unsigned getFullDataSizeForType(QualType Ty); |
126 | | |
127 | | /// Returns the alignment of type source info data block for |
128 | | /// the given type. |
129 | | static unsigned getLocalAlignmentForType(QualType Ty); |
130 | | |
131 | | /// Get the type for which this source info wrapper provides |
132 | | /// information. |
133 | 10.7G | QualType getType() const { |
134 | 10.7G | return QualType::getFromOpaquePtr(Ty); |
135 | 10.7G | } |
136 | | |
137 | 3.57G | const Type *getTypePtr() const { |
138 | 3.57G | return QualType::getFromOpaquePtr(Ty).getTypePtr(); |
139 | 3.57G | } |
140 | | |
141 | | /// Get the pointer where source information is stored. |
142 | 32.9M | void *getOpaqueData() const { |
143 | 32.9M | return Data; |
144 | 32.9M | } |
145 | | |
146 | | /// Get the begin source location. |
147 | | SourceLocation getBeginLoc() const; |
148 | | |
149 | | /// Get the end source location. |
150 | | SourceLocation getEndLoc() const; |
151 | | |
152 | | /// Get the full source range. |
153 | 24.3M | SourceRange getSourceRange() const LLVM_READONLY { |
154 | 24.3M | return SourceRange(getBeginLoc(), getEndLoc()); |
155 | 24.3M | } |
156 | | |
157 | | |
158 | | /// Get the local source range. |
159 | 342M | SourceRange getLocalSourceRange() const { |
160 | 342M | return getLocalSourceRangeImpl(*this); |
161 | 342M | } |
162 | | |
163 | | /// Returns the size of the type source info data block. |
164 | 26.9M | unsigned getFullDataSize() const { |
165 | 26.9M | return getFullDataSizeForType(getType()); |
166 | 26.9M | } |
167 | | |
168 | | /// Get the next TypeLoc pointed by this TypeLoc, e.g for "int*" the |
169 | | /// TypeLoc is a PointerLoc and next TypeLoc is for "int". |
170 | 799M | TypeLoc getNextTypeLoc() const { |
171 | 799M | return getNextTypeLocImpl(*this); |
172 | 799M | } |
173 | | |
174 | | /// Skips past any qualifiers, if this is qualified. |
175 | | UnqualTypeLoc getUnqualifiedLoc() const; // implemented in this header |
176 | | |
177 | | TypeLoc IgnoreParens() 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 | | /// Get the typeloc of an AutoType whose type will be deduced for a variable |
188 | | /// with an initializer of this type. This looks through declarators like |
189 | | /// pointer types, but not through decltype or typedefs. |
190 | | AutoTypeLoc getContainedAutoTypeLoc() const; |
191 | | |
192 | | /// Initializes this to state that every location in this |
193 | | /// type is the given location. |
194 | | /// |
195 | | /// This method exists to provide a simple transition for code that |
196 | | /// relies on location-less types. |
197 | 20.9M | void initialize(ASTContext &Context, SourceLocation Loc) const { |
198 | 20.9M | initializeImpl(Context, *this, Loc); |
199 | 20.9M | } |
200 | | |
201 | | /// Initializes this by copying its information from another |
202 | | /// TypeLoc of the same type. |
203 | 35.9k | void initializeFullCopy(TypeLoc Other) { |
204 | 35.9k | assert(getType() == Other.getType()); |
205 | 35.9k | copy(Other); |
206 | 35.9k | } |
207 | | |
208 | | /// Initializes this by copying its information from another |
209 | | /// TypeLoc of the same type. The given size must be the full data |
210 | | /// size. |
211 | 774 | void initializeFullCopy(TypeLoc Other, unsigned Size) { |
212 | 774 | assert(getType() == Other.getType()); |
213 | 774 | assert(getFullDataSize() == Size); |
214 | 774 | copy(Other); |
215 | 774 | } |
216 | | |
217 | | /// Copies the other type loc into this one. |
218 | | void copy(TypeLoc other); |
219 | | |
220 | 14.2k | friend bool operator==(const TypeLoc &LHS, const TypeLoc &RHS) { |
221 | 14.2k | return LHS.Ty == RHS.Ty && LHS.Data == RHS.Data9.25k ; |
222 | 14.2k | } |
223 | | |
224 | 1.30k | friend bool operator!=(const TypeLoc &LHS, const TypeLoc &RHS) { |
225 | 1.30k | return !(LHS == RHS); |
226 | 1.30k | } |
227 | | |
228 | | /// Find the location of the nullability specifier (__nonnull, |
229 | | /// __nullable, or __null_unspecifier), if there is one. |
230 | | SourceLocation findNullabilityLoc() const; |
231 | | |
232 | | private: |
233 | 7.85M | static bool isKind(const TypeLoc&) { |
234 | 7.85M | return true; |
235 | 7.85M | } |
236 | | |
237 | | static void initializeImpl(ASTContext &Context, TypeLoc TL, |
238 | | SourceLocation Loc); |
239 | | static TypeLoc getNextTypeLocImpl(TypeLoc TL); |
240 | | static TypeLoc IgnoreParensImpl(TypeLoc TL); |
241 | | static SourceRange getLocalSourceRangeImpl(TypeLoc TL); |
242 | | }; |
243 | | |
244 | 196M | inline TypeSourceInfo::TypeSourceInfo(QualType ty, size_t DataSize) : Ty(ty) { |
245 | | // Init data attached to the object. See getTypeLoc. |
246 | 196M | memset(static_cast<void *>(this + 1), 0, DataSize); |
247 | 196M | } |
248 | | |
249 | | /// Return the TypeLoc for a type source info. |
250 | 328M | inline TypeLoc TypeSourceInfo::getTypeLoc() const { |
251 | | // TODO: is this alignment already sufficient? |
252 | 328M | return TypeLoc(Ty, const_cast<void*>(static_cast<const void*>(this + 1))); |
253 | 328M | } |
254 | | |
255 | | /// Wrapper of type source information for a type with |
256 | | /// no direct qualifiers. |
257 | | class UnqualTypeLoc : public TypeLoc { |
258 | | public: |
259 | 3.85G | UnqualTypeLoc() = default; |
260 | 22.8M | UnqualTypeLoc(const Type *Ty, void *Data) : TypeLoc(Ty, Data) {} |
261 | | |
262 | 4.25G | const Type *getTypePtr() const { |
263 | 4.25G | return reinterpret_cast<const Type*>(Ty); |
264 | 4.25G | } |
265 | | |
266 | 440M | TypeLocClass getTypeLocClass() const { |
267 | 440M | return (TypeLocClass) getTypePtr()->getTypeClass(); |
268 | 440M | } |
269 | | |
270 | | private: |
271 | | friend class TypeLoc; |
272 | | |
273 | 334M | static bool isKind(const TypeLoc &TL) { |
274 | 334M | return !TL.getType().hasLocalQualifiers(); |
275 | 334M | } |
276 | | }; |
277 | | |
278 | | /// Wrapper of type source information for a type with |
279 | | /// non-trivial direct qualifiers. |
280 | | /// |
281 | | /// Currently, we intentionally do not provide source location for |
282 | | /// type qualifiers. |
283 | | class QualifiedTypeLoc : public TypeLoc { |
284 | | public: |
285 | 8.23k | SourceRange getLocalSourceRange() const { return {}; } |
286 | | |
287 | 22.8M | UnqualTypeLoc getUnqualifiedLoc() const { |
288 | 22.8M | unsigned align = |
289 | 22.8M | TypeLoc::getLocalAlignmentForType(QualType(getTypePtr(), 0)); |
290 | 22.8M | auto dataInt = reinterpret_cast<uintptr_t>(Data); |
291 | 22.8M | dataInt = llvm::alignTo(dataInt, align); |
292 | 22.8M | return UnqualTypeLoc(getTypePtr(), reinterpret_cast<void*>(dataInt)); |
293 | 22.8M | } |
294 | | |
295 | | /// Initializes the local data of this type source info block to |
296 | | /// provide no information. |
297 | 397k | void initializeLocal(ASTContext &Context, SourceLocation Loc) { |
298 | | // do nothing |
299 | 397k | } |
300 | | |
301 | 50 | void copyLocal(TypeLoc other) { |
302 | | // do nothing |
303 | 50 | } |
304 | | |
305 | 15.0M | TypeLoc getNextTypeLoc() const { |
306 | 15.0M | return getUnqualifiedLoc(); |
307 | 15.0M | } |
308 | | |
309 | | /// Returns the size of the type source info data block that is |
310 | | /// specific to this type. |
311 | 10.4M | unsigned getLocalDataSize() const { |
312 | | // In fact, we don't currently preserve any location information |
313 | | // for qualifiers. |
314 | 10.4M | return 0; |
315 | 10.4M | } |
316 | | |
317 | | /// Returns the alignment of the type source info data block that is |
318 | | /// specific to this type. |
319 | 30.1M | unsigned getLocalDataAlignment() const { |
320 | | // We don't preserve any location information. |
321 | 30.1M | return 1; |
322 | 30.1M | } |
323 | | |
324 | | private: |
325 | | friend class TypeLoc; |
326 | | |
327 | 398M | static bool isKind(const TypeLoc &TL) { |
328 | 398M | return TL.getType().hasLocalQualifiers(); |
329 | 398M | } |
330 | | }; |
331 | | |
332 | 341M | inline UnqualTypeLoc TypeLoc::getUnqualifiedLoc() const { |
333 | 341M | if (QualifiedTypeLoc Loc = getAs<QualifiedTypeLoc>()) |
334 | 6.19M | return Loc.getUnqualifiedLoc(); |
335 | 334M | return castAs<UnqualTypeLoc>(); |
336 | 341M | } |
337 | | |
338 | | /// A metaprogramming base class for TypeLoc classes which correspond |
339 | | /// to a particular Type subclass. It is accepted for a single |
340 | | /// TypeLoc class to correspond to multiple Type classes. |
341 | | /// |
342 | | /// \tparam Base a class from which to derive |
343 | | /// \tparam Derived the class deriving from this one |
344 | | /// \tparam TypeClass the concrete Type subclass associated with this |
345 | | /// location type |
346 | | /// \tparam LocalData the structure type of local location data for |
347 | | /// this type |
348 | | /// |
349 | | /// TypeLocs with non-constant amounts of local data should override |
350 | | /// getExtraLocalDataSize(); getExtraLocalData() will then point to |
351 | | /// this extra memory. |
352 | | /// |
353 | | /// TypeLocs with an inner type should define |
354 | | /// QualType getInnerType() const |
355 | | /// and getInnerTypeLoc() will then point to this inner type's |
356 | | /// location data. |
357 | | /// |
358 | | /// A word about hierarchies: this template is not designed to be |
359 | | /// derived from multiple times in a hierarchy. It is also not |
360 | | /// designed to be used for classes where subtypes might provide |
361 | | /// different amounts of source information. It should be subclassed |
362 | | /// only at the deepest portion of the hierarchy where all children |
363 | | /// have identical source information; if that's an abstract type, |
364 | | /// then further descendents should inherit from |
365 | | /// InheritingConcreteTypeLoc instead. |
366 | | template <class Base, class Derived, class TypeClass, class LocalData> |
367 | | class ConcreteTypeLoc : public Base { |
368 | | friend class TypeLoc; |
369 | | |
370 | 4.20G | const Derived *asDerived() const { |
371 | 4.20G | return static_cast<const Derived*>(this); |
372 | 4.20G | } clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::asDerived() const Line | Count | Source | 370 | 152M | const Derived *asDerived() const { | 371 | 152M | return static_cast<const Derived*>(this); | 372 | 152M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::asDerived() const Line | Count | Source | 370 | 789k | const Derived *asDerived() const { | 371 | 789k | return static_cast<const Derived*>(this); | 372 | 789k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::asDerived() const Line | Count | Source | 370 | 48.3M | const Derived *asDerived() const { | 371 | 48.3M | return static_cast<const Derived*>(this); | 372 | 48.3M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::asDerived() const Line | Count | Source | 370 | 1.16k | const Derived *asDerived() const { | 371 | 1.16k | return static_cast<const Derived*>(this); | 372 | 1.16k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::asDerived() const Line | Count | Source | 370 | 8.60M | const Derived *asDerived() const { | 371 | 8.60M | return static_cast<const Derived*>(this); | 372 | 8.60M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::asDerived() const Line | Count | Source | 370 | 3.22M | const Derived *asDerived() const { | 371 | 3.22M | return static_cast<const Derived*>(this); | 372 | 3.22M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::asDerived() const Line | Count | Source | 370 | 7.91M | const Derived *asDerived() const { | 371 | 7.91M | return static_cast<const Derived*>(this); | 372 | 7.91M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::asDerived() const Line | Count | Source | 370 | 68.6k | const Derived *asDerived() const { | 371 | 68.6k | return static_cast<const Derived*>(this); | 372 | 68.6k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::asDerived() const Line | Count | Source | 370 | 687M | const Derived *asDerived() const { | 371 | 687M | return static_cast<const Derived*>(this); | 372 | 687M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::asDerived() const Line | Count | Source | 370 | 8.69M | const Derived *asDerived() const { | 371 | 8.69M | return static_cast<const Derived*>(this); | 372 | 8.69M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::asDerived() const Line | Count | Source | 370 | 323M | const Derived *asDerived() const { | 371 | 323M | return static_cast<const Derived*>(this); | 372 | 323M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::asDerived() const Line | Count | Source | 370 | 1.57k | const Derived *asDerived() const { | 371 | 1.57k | return static_cast<const Derived*>(this); | 372 | 1.57k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::asDerived() const Line | Count | Source | 370 | 2.14M | const Derived *asDerived() const { | 371 | 2.14M | return static_cast<const Derived*>(this); | 372 | 2.14M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::asDerived() const Line | Count | Source | 370 | 2.89k | const Derived *asDerived() const { | 371 | 2.89k | return static_cast<const Derived*>(this); | 372 | 2.89k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::asDerived() const Line | Count | Source | 370 | 41.8k | const Derived *asDerived() const { | 371 | 41.8k | return static_cast<const Derived*>(this); | 372 | 41.8k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::asDerived() const Line | Count | Source | 370 | 1.33G | const Derived *asDerived() const { | 371 | 1.33G | return static_cast<const Derived*>(this); | 372 | 1.33G | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::asDerived() const Line | Count | Source | 370 | 1.44M | const Derived *asDerived() const { | 371 | 1.44M | return static_cast<const Derived*>(this); | 372 | 1.44M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::asDerived() const Line | Count | Source | 370 | 12.8M | const Derived *asDerived() const { | 371 | 12.8M | return static_cast<const Derived*>(this); | 372 | 12.8M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::asDerived() const Line | Count | Source | 370 | 270k | const Derived *asDerived() const { | 371 | 270k | return static_cast<const Derived*>(this); | 372 | 270k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::asDerived() const Line | Count | Source | 370 | 3.52k | const Derived *asDerived() const { | 371 | 3.52k | return static_cast<const Derived*>(this); | 372 | 3.52k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::asDerived() const Line | Count | Source | 370 | 1.12M | const Derived *asDerived() const { | 371 | 1.12M | return static_cast<const Derived*>(this); | 372 | 1.12M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::asDerived() const Line | Count | Source | 370 | 1.33M | const Derived *asDerived() const { | 371 | 1.33M | return static_cast<const Derived*>(this); | 372 | 1.33M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::asDerived() const Line | Count | Source | 370 | 22.2M | const Derived *asDerived() const { | 371 | 22.2M | return static_cast<const Derived*>(this); | 372 | 22.2M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::asDerived() const Line | Count | Source | 370 | 166M | const Derived *asDerived() const { | 371 | 166M | return static_cast<const Derived*>(this); | 372 | 166M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::asDerived() const Line | Count | Source | 370 | 129M | const Derived *asDerived() const { | 371 | 129M | return static_cast<const Derived*>(this); | 372 | 129M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::asDerived() const Line | Count | Source | 370 | 1.22G | const Derived *asDerived() const { | 371 | 1.22G | return static_cast<const Derived*>(this); | 372 | 1.22G | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::asDerived() const Line | Count | Source | 370 | 4.50M | const Derived *asDerived() const { | 371 | 4.50M | return static_cast<const Derived*>(this); | 372 | 4.50M | } |
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::asDerived() const Line | Count | Source | 370 | 4.06M | const Derived *asDerived() const { | 371 | 4.06M | return static_cast<const Derived*>(this); | 372 | 4.06M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::asDerived() const Line | Count | Source | 370 | 32.8M | const Derived *asDerived() const { | 371 | 32.8M | return static_cast<const Derived*>(this); | 372 | 32.8M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::asDerived() const Line | Count | Source | 370 | 8.89k | const Derived *asDerived() const { | 371 | 8.89k | return static_cast<const Derived*>(this); | 372 | 8.89k | } |
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::asDerived() const Line | Count | Source | 370 | 12.1M | const Derived *asDerived() const { | 371 | 12.1M | return static_cast<const Derived*>(this); | 372 | 12.1M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::asDerived() const Line | Count | Source | 370 | 33.2k | const Derived *asDerived() const { | 371 | 33.2k | return static_cast<const Derived*>(this); | 372 | 33.2k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::asDerived() const Line | Count | Source | 370 | 816 | const Derived *asDerived() const { | 371 | 816 | return static_cast<const Derived*>(this); | 372 | 816 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::asDerived() const Line | Count | Source | 370 | 8.53M | const Derived *asDerived() const { | 371 | 8.53M | return static_cast<const Derived*>(this); | 372 | 8.53M | } |
|
373 | | |
374 | 1.91G | static bool isKind(const TypeLoc &TL) { |
375 | 1.91G | return !TL.getType().hasLocalQualifiers() && |
376 | 1.91G | Derived::classofType(TL.getTypePtr())1.91G ; |
377 | 1.91G | } clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 45.5M | static bool isKind(const TypeLoc &TL) { | 375 | 45.5M | return !TL.getType().hasLocalQualifiers() && | 376 | 45.5M | Derived::classofType(TL.getTypePtr())45.5M ; | 377 | 45.5M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 859M | static bool isKind(const TypeLoc &TL) { | 375 | 859M | return !TL.getType().hasLocalQualifiers() && | 376 | 859M | Derived::classofType(TL.getTypePtr())859M ; | 377 | 859M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 389M | static bool isKind(const TypeLoc &TL) { | 375 | 389M | return !TL.getType().hasLocalQualifiers() && | 376 | 389M | Derived::classofType(TL.getTypePtr())389M ; | 377 | 389M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 36.9M | static bool isKind(const TypeLoc &TL) { | 375 | 36.9M | return !TL.getType().hasLocalQualifiers() && | 376 | 36.9M | Derived::classofType(TL.getTypePtr()); | 377 | 36.9M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 126M | static bool isKind(const TypeLoc &TL) { | 375 | 126M | return !TL.getType().hasLocalQualifiers() && | 376 | 126M | Derived::classofType(TL.getTypePtr())126M ; | 377 | 126M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 36.6M | static bool isKind(const TypeLoc &TL) { | 375 | 36.6M | return !TL.getType().hasLocalQualifiers() && | 376 | 36.6M | Derived::classofType(TL.getTypePtr())36.6M ; | 377 | 36.6M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 36.6M | static bool isKind(const TypeLoc &TL) { | 375 | 36.6M | return !TL.getType().hasLocalQualifiers() && | 376 | 36.6M | Derived::classofType(TL.getTypePtr())36.6M ; | 377 | 36.6M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 37.6M | static bool isKind(const TypeLoc &TL) { | 375 | 37.6M | return !TL.getType().hasLocalQualifiers() && | 376 | 37.6M | Derived::classofType(TL.getTypePtr())37.6M ; | 377 | 37.6M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 49.8M | static bool isKind(const TypeLoc &TL) { | 375 | 49.8M | return !TL.getType().hasLocalQualifiers() && | 376 | 49.8M | Derived::classofType(TL.getTypePtr()); | 377 | 49.8M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 511k | static bool isKind(const TypeLoc &TL) { | 375 | 511k | return !TL.getType().hasLocalQualifiers() && | 376 | 511k | Derived::classofType(TL.getTypePtr()); | 377 | 511k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 141M | static bool isKind(const TypeLoc &TL) { | 375 | 141M | return !TL.getType().hasLocalQualifiers() && | 376 | 141M | Derived::classofType(TL.getTypePtr()); | 377 | 141M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 4.80M | static bool isKind(const TypeLoc &TL) { | 375 | 4.80M | return !TL.getType().hasLocalQualifiers() && | 376 | 4.80M | Derived::classofType(TL.getTypePtr()); | 377 | 4.80M | } |
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 3.49M | static bool isKind(const TypeLoc &TL) { | 375 | 3.49M | return !TL.getType().hasLocalQualifiers() && | 376 | 3.49M | Derived::classofType(TL.getTypePtr()); | 377 | 3.49M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 745 | static bool isKind(const TypeLoc &TL) { | 375 | 745 | return !TL.getType().hasLocalQualifiers() && | 376 | 745 | Derived::classofType(TL.getTypePtr()); | 377 | 745 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 32.8M | static bool isKind(const TypeLoc &TL) { | 375 | 32.8M | return !TL.getType().hasLocalQualifiers() && | 376 | 32.8M | Derived::classofType(TL.getTypePtr()); | 377 | 32.8M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 15.0k | static bool isKind(const TypeLoc &TL) { | 375 | 15.0k | return !TL.getType().hasLocalQualifiers() && | 376 | 15.0k | Derived::classofType(TL.getTypePtr()); | 377 | 15.0k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 1.14M | static bool isKind(const TypeLoc &TL) { | 375 | 1.14M | return !TL.getType().hasLocalQualifiers() && | 376 | 1.14M | Derived::classofType(TL.getTypePtr()); | 377 | 1.14M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 1.02k | static bool isKind(const TypeLoc &TL) { | 375 | 1.02k | return !TL.getType().hasLocalQualifiers() && | 376 | 1.02k | Derived::classofType(TL.getTypePtr()); | 377 | 1.02k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 464k | static bool isKind(const TypeLoc &TL) { | 375 | 464k | return !TL.getType().hasLocalQualifiers() && | 376 | 464k | Derived::classofType(TL.getTypePtr()); | 377 | 464k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 10.2M | static bool isKind(const TypeLoc &TL) { | 375 | 10.2M | return !TL.getType().hasLocalQualifiers() && | 376 | 10.2M | Derived::classofType(TL.getTypePtr()); | 377 | 10.2M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 3.45M | static bool isKind(const TypeLoc &TL) { | 375 | 3.45M | return !TL.getType().hasLocalQualifiers() && | 376 | 3.45M | Derived::classofType(TL.getTypePtr()); | 377 | 3.45M | } |
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 12.9M | static bool isKind(const TypeLoc &TL) { | 375 | 12.9M | return !TL.getType().hasLocalQualifiers() && | 376 | 12.9M | Derived::classofType(TL.getTypePtr()); | 377 | 12.9M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 927k | static bool isKind(const TypeLoc &TL) { | 375 | 927k | return !TL.getType().hasLocalQualifiers() && | 376 | 927k | Derived::classofType(TL.getTypePtr()); | 377 | 927k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 7.99M | static bool isKind(const TypeLoc &TL) { | 375 | 7.99M | return !TL.getType().hasLocalQualifiers() && | 376 | 7.99M | Derived::classofType(TL.getTypePtr())7.97M ; | 377 | 7.99M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 1.36k | static bool isKind(const TypeLoc &TL) { | 375 | 1.36k | return !TL.getType().hasLocalQualifiers() && | 376 | 1.36k | Derived::classofType(TL.getTypePtr()); | 377 | 1.36k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 63.4M | static bool isKind(const TypeLoc &TL) { | 375 | 63.4M | return !TL.getType().hasLocalQualifiers() && | 376 | 63.4M | Derived::classofType(TL.getTypePtr())63.4M ; | 377 | 63.4M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 42.5k | static bool isKind(const TypeLoc &TL) { | 375 | 42.5k | return !TL.getType().hasLocalQualifiers() && | 376 | 42.5k | Derived::classofType(TL.getTypePtr()); | 377 | 42.5k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 899 | static bool isKind(const TypeLoc &TL) { | 375 | 899 | return !TL.getType().hasLocalQualifiers() && | 376 | 899 | Derived::classofType(TL.getTypePtr()); | 377 | 899 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 7.76M | static bool isKind(const TypeLoc &TL) { | 375 | 7.76M | return !TL.getType().hasLocalQualifiers() && | 376 | 7.76M | Derived::classofType(TL.getTypePtr()); | 377 | 7.76M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 852k | static bool isKind(const TypeLoc &TL) { | 375 | 852k | return !TL.getType().hasLocalQualifiers() && | 376 | 852k | Derived::classofType(TL.getTypePtr()); | 377 | 852k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 386k | static bool isKind(const TypeLoc &TL) { | 375 | 386k | return !TL.getType().hasLocalQualifiers() && | 376 | 386k | Derived::classofType(TL.getTypePtr()); | 377 | 386k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 666 | static bool isKind(const TypeLoc &TL) { | 375 | 666 | return !TL.getType().hasLocalQualifiers() && | 376 | 666 | Derived::classofType(TL.getTypePtr()); | 377 | 666 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::isKind(clang::TypeLoc const&) Line | Count | Source | 374 | 11.4k | static bool isKind(const TypeLoc &TL) { | 375 | 11.4k | return !TL.getType().hasLocalQualifiers() && | 376 | 11.4k | Derived::classofType(TL.getTypePtr()); | 377 | 11.4k | } |
|
378 | | |
379 | 1.91G | static bool classofType(const Type *Ty) { |
380 | 1.91G | return TypeClass::classof(Ty); |
381 | 1.91G | } clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 45.5M | static bool classofType(const Type *Ty) { | 380 | 45.5M | return TypeClass::classof(Ty); | 381 | 45.5M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 859M | static bool classofType(const Type *Ty) { | 380 | 859M | return TypeClass::classof(Ty); | 381 | 859M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 389M | static bool classofType(const Type *Ty) { | 380 | 389M | return TypeClass::classof(Ty); | 381 | 389M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 36.9M | static bool classofType(const Type *Ty) { | 380 | 36.9M | return TypeClass::classof(Ty); | 381 | 36.9M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 126M | static bool classofType(const Type *Ty) { | 380 | 126M | return TypeClass::classof(Ty); | 381 | 126M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 36.6M | static bool classofType(const Type *Ty) { | 380 | 36.6M | return TypeClass::classof(Ty); | 381 | 36.6M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 36.6M | static bool classofType(const Type *Ty) { | 380 | 36.6M | return TypeClass::classof(Ty); | 381 | 36.6M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 37.6M | static bool classofType(const Type *Ty) { | 380 | 37.6M | return TypeClass::classof(Ty); | 381 | 37.6M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 49.8M | static bool classofType(const Type *Ty) { | 380 | 49.8M | return TypeClass::classof(Ty); | 381 | 49.8M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 511k | static bool classofType(const Type *Ty) { | 380 | 511k | return TypeClass::classof(Ty); | 381 | 511k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 141M | static bool classofType(const Type *Ty) { | 380 | 141M | return TypeClass::classof(Ty); | 381 | 141M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 4.80M | static bool classofType(const Type *Ty) { | 380 | 4.80M | return TypeClass::classof(Ty); | 381 | 4.80M | } |
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 3.49M | static bool classofType(const Type *Ty) { | 380 | 3.49M | return TypeClass::classof(Ty); | 381 | 3.49M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 745 | static bool classofType(const Type *Ty) { | 380 | 745 | return TypeClass::classof(Ty); | 381 | 745 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 32.8M | static bool classofType(const Type *Ty) { | 380 | 32.8M | return TypeClass::classof(Ty); | 381 | 32.8M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 15.0k | static bool classofType(const Type *Ty) { | 380 | 15.0k | return TypeClass::classof(Ty); | 381 | 15.0k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 1.14M | static bool classofType(const Type *Ty) { | 380 | 1.14M | return TypeClass::classof(Ty); | 381 | 1.14M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 1.02k | static bool classofType(const Type *Ty) { | 380 | 1.02k | return TypeClass::classof(Ty); | 381 | 1.02k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 464k | static bool classofType(const Type *Ty) { | 380 | 464k | return TypeClass::classof(Ty); | 381 | 464k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 10.2M | static bool classofType(const Type *Ty) { | 380 | 10.2M | return TypeClass::classof(Ty); | 381 | 10.2M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 3.45M | static bool classofType(const Type *Ty) { | 380 | 3.45M | return TypeClass::classof(Ty); | 381 | 3.45M | } |
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 12.9M | static bool classofType(const Type *Ty) { | 380 | 12.9M | return TypeClass::classof(Ty); | 381 | 12.9M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 927k | static bool classofType(const Type *Ty) { | 380 | 927k | return TypeClass::classof(Ty); | 381 | 927k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 7.97M | static bool classofType(const Type *Ty) { | 380 | 7.97M | return TypeClass::classof(Ty); | 381 | 7.97M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 1.36k | static bool classofType(const Type *Ty) { | 380 | 1.36k | return TypeClass::classof(Ty); | 381 | 1.36k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 63.4M | static bool classofType(const Type *Ty) { | 380 | 63.4M | return TypeClass::classof(Ty); | 381 | 63.4M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 42.5k | static bool classofType(const Type *Ty) { | 380 | 42.5k | return TypeClass::classof(Ty); | 381 | 42.5k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 899 | static bool classofType(const Type *Ty) { | 380 | 899 | return TypeClass::classof(Ty); | 381 | 899 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 7.76M | static bool classofType(const Type *Ty) { | 380 | 7.76M | return TypeClass::classof(Ty); | 381 | 7.76M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 852k | static bool classofType(const Type *Ty) { | 380 | 852k | return TypeClass::classof(Ty); | 381 | 852k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 386k | static bool classofType(const Type *Ty) { | 380 | 386k | return TypeClass::classof(Ty); | 381 | 386k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 666 | static bool classofType(const Type *Ty) { | 380 | 666 | return TypeClass::classof(Ty); | 381 | 666 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::classofType(clang::Type const*) Line | Count | Source | 379 | 11.4k | static bool classofType(const Type *Ty) { | 380 | 11.4k | return TypeClass::classof(Ty); | 381 | 11.4k | } |
|
382 | | |
383 | | public: |
384 | 1.03G | unsigned getLocalDataAlignment() const { |
385 | 1.03G | return std::max(unsigned(alignof(LocalData)), |
386 | 1.03G | asDerived()->getExtraLocalDataAlignment()); |
387 | 1.03G | } clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 268M | unsigned getLocalDataAlignment() const { | 385 | 268M | return std::max(unsigned(alignof(LocalData)), | 386 | 268M | asDerived()->getExtraLocalDataAlignment()); | 387 | 268M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 10.2k | unsigned getLocalDataAlignment() const { | 385 | 10.2k | return std::max(unsigned(alignof(LocalData)), | 386 | 10.2k | asDerived()->getExtraLocalDataAlignment()); | 387 | 10.2k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 894k | unsigned getLocalDataAlignment() const { | 385 | 894k | return std::max(unsigned(alignof(LocalData)), | 386 | 894k | asDerived()->getExtraLocalDataAlignment()); | 387 | 894k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 32.2k | unsigned getLocalDataAlignment() const { | 385 | 32.2k | return std::max(unsigned(alignof(LocalData)), | 386 | 32.2k | asDerived()->getExtraLocalDataAlignment()); | 387 | 32.2k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 4.44M | unsigned getLocalDataAlignment() const { | 385 | 4.44M | return std::max(unsigned(alignof(LocalData)), | 386 | 4.44M | asDerived()->getExtraLocalDataAlignment()); | 387 | 4.44M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 226 | unsigned getLocalDataAlignment() const { | 385 | 226 | return std::max(unsigned(alignof(LocalData)), | 386 | 226 | asDerived()->getExtraLocalDataAlignment()); | 387 | 226 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 528M | unsigned getLocalDataAlignment() const { | 385 | 528M | return std::max(unsigned(alignof(LocalData)), | 386 | 528M | asDerived()->getExtraLocalDataAlignment()); | 387 | 528M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 190k | unsigned getLocalDataAlignment() const { | 385 | 190k | return std::max(unsigned(alignof(LocalData)), | 386 | 190k | asDerived()->getExtraLocalDataAlignment()); | 387 | 190k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 48.9M | unsigned getLocalDataAlignment() const { | 385 | 48.9M | return std::max(unsigned(alignof(LocalData)), | 386 | 48.9M | asDerived()->getExtraLocalDataAlignment()); | 387 | 48.9M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 1.15M | unsigned getLocalDataAlignment() const { | 385 | 1.15M | return std::max(unsigned(alignof(LocalData)), | 386 | 1.15M | asDerived()->getExtraLocalDataAlignment()); | 387 | 1.15M | } |
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 1.15M | unsigned getLocalDataAlignment() const { | 385 | 1.15M | return std::max(unsigned(alignof(LocalData)), | 386 | 1.15M | asDerived()->getExtraLocalDataAlignment()); | 387 | 1.15M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 258 | unsigned getLocalDataAlignment() const { | 385 | 258 | return std::max(unsigned(alignof(LocalData)), | 386 | 258 | asDerived()->getExtraLocalDataAlignment()); | 387 | 258 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 7.74M | unsigned getLocalDataAlignment() const { | 385 | 7.74M | return std::max(unsigned(alignof(LocalData)), | 386 | 7.74M | asDerived()->getExtraLocalDataAlignment()); | 387 | 7.74M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 2.69k | unsigned getLocalDataAlignment() const { | 385 | 2.69k | return std::max(unsigned(alignof(LocalData)), | 386 | 2.69k | asDerived()->getExtraLocalDataAlignment()); | 387 | 2.69k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 279k | unsigned getLocalDataAlignment() const { | 385 | 279k | return std::max(unsigned(alignof(LocalData)), | 386 | 279k | asDerived()->getExtraLocalDataAlignment()); | 387 | 279k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 176 | unsigned getLocalDataAlignment() const { | 385 | 176 | return std::max(unsigned(alignof(LocalData)), | 386 | 176 | asDerived()->getExtraLocalDataAlignment()); | 387 | 176 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 45.2M | unsigned getLocalDataAlignment() const { | 385 | 45.2M | return std::max(unsigned(alignof(LocalData)), | 386 | 45.2M | asDerived()->getExtraLocalDataAlignment()); | 387 | 45.2M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 240k | unsigned getLocalDataAlignment() const { | 385 | 240k | return std::max(unsigned(alignof(LocalData)), | 386 | 240k | asDerived()->getExtraLocalDataAlignment()); | 387 | 240k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 1.98k | unsigned getLocalDataAlignment() const { | 385 | 1.98k | return std::max(unsigned(alignof(LocalData)), | 386 | 1.98k | asDerived()->getExtraLocalDataAlignment()); | 387 | 1.98k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 67.5k | unsigned getLocalDataAlignment() const { | 385 | 67.5k | return std::max(unsigned(alignof(LocalData)), | 386 | 67.5k | asDerived()->getExtraLocalDataAlignment()); | 387 | 67.5k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 3.93M | unsigned getLocalDataAlignment() const { | 385 | 3.93M | return std::max(unsigned(alignof(LocalData)), | 386 | 3.93M | asDerived()->getExtraLocalDataAlignment()); | 387 | 3.93M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 1.35M | unsigned getLocalDataAlignment() const { | 385 | 1.35M | return std::max(unsigned(alignof(LocalData)), | 386 | 1.35M | asDerived()->getExtraLocalDataAlignment()); | 387 | 1.35M | } |
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 5.37M | unsigned getLocalDataAlignment() const { | 385 | 5.37M | return std::max(unsigned(alignof(LocalData)), | 386 | 5.37M | asDerived()->getExtraLocalDataAlignment()); | 387 | 5.37M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 222k | unsigned getLocalDataAlignment() const { | 385 | 222k | return std::max(unsigned(alignof(LocalData)), | 386 | 222k | asDerived()->getExtraLocalDataAlignment()); | 387 | 222k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 966k | unsigned getLocalDataAlignment() const { | 385 | 966k | return std::max(unsigned(alignof(LocalData)), | 386 | 966k | asDerived()->getExtraLocalDataAlignment()); | 387 | 966k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 1.48M | unsigned getLocalDataAlignment() const { | 385 | 1.48M | return std::max(unsigned(alignof(LocalData)), | 386 | 1.48M | asDerived()->getExtraLocalDataAlignment()); | 387 | 1.48M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 273 | unsigned getLocalDataAlignment() const { | 385 | 273 | return std::max(unsigned(alignof(LocalData)), | 386 | 273 | asDerived()->getExtraLocalDataAlignment()); | 387 | 273 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 15.3M | unsigned getLocalDataAlignment() const { | 385 | 15.3M | return std::max(unsigned(alignof(LocalData)), | 386 | 15.3M | asDerived()->getExtraLocalDataAlignment()); | 387 | 15.3M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 13.3M | unsigned getLocalDataAlignment() const { | 385 | 13.3M | return std::max(unsigned(alignof(LocalData)), | 386 | 13.3M | asDerived()->getExtraLocalDataAlignment()); | 387 | 13.3M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 85.4M | unsigned getLocalDataAlignment() const { | 385 | 85.4M | return std::max(unsigned(alignof(LocalData)), | 386 | 85.4M | asDerived()->getExtraLocalDataAlignment()); | 387 | 85.4M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 15.0k | unsigned getLocalDataAlignment() const { | 385 | 15.0k | return std::max(unsigned(alignof(LocalData)), | 386 | 15.0k | asDerived()->getExtraLocalDataAlignment()); | 387 | 15.0k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 206 | unsigned getLocalDataAlignment() const { | 385 | 206 | return std::max(unsigned(alignof(LocalData)), | 386 | 206 | asDerived()->getExtraLocalDataAlignment()); | 387 | 206 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 1.94M | unsigned getLocalDataAlignment() const { | 385 | 1.94M | return std::max(unsigned(alignof(LocalData)), | 386 | 1.94M | asDerived()->getExtraLocalDataAlignment()); | 387 | 1.94M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getLocalDataAlignment() const Line | Count | Source | 384 | 200k | unsigned getLocalDataAlignment() const { | 385 | 200k | return std::max(unsigned(alignof(LocalData)), | 386 | 200k | asDerived()->getExtraLocalDataAlignment()); | 387 | 200k | } |
|
388 | | |
389 | 525M | unsigned getLocalDataSize() const { |
390 | 525M | unsigned size = sizeof(LocalData); |
391 | 525M | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); |
392 | 525M | size = llvm::alignTo(size, extraAlign); |
393 | 525M | size += asDerived()->getExtraLocalDataSize(); |
394 | 525M | return size; |
395 | 525M | } clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 10.7M | unsigned getLocalDataSize() const { | 390 | 10.7M | unsigned size = sizeof(LocalData); | 391 | 10.7M | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 10.7M | size = llvm::alignTo(size, extraAlign); | 393 | 10.7M | size += asDerived()->getExtraLocalDataSize(); | 394 | 10.7M | return size; | 395 | 10.7M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 229 | unsigned getLocalDataSize() const { | 390 | 229 | unsigned size = sizeof(LocalData); | 391 | 229 | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 229 | size = llvm::alignTo(size, extraAlign); | 393 | 229 | size += asDerived()->getExtraLocalDataSize(); | 394 | 229 | return size; | 395 | 229 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 1.89M | unsigned getLocalDataSize() const { | 390 | 1.89M | unsigned size = sizeof(LocalData); | 391 | 1.89M | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 1.89M | size = llvm::alignTo(size, extraAlign); | 393 | 1.89M | size += asDerived()->getExtraLocalDataSize(); | 394 | 1.89M | return size; | 395 | 1.89M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 739k | unsigned getLocalDataSize() const { | 390 | 739k | unsigned size = sizeof(LocalData); | 391 | 739k | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 739k | size = llvm::alignTo(size, extraAlign); | 393 | 739k | size += asDerived()->getExtraLocalDataSize(); | 394 | 739k | return size; | 395 | 739k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 1.53M | unsigned getLocalDataSize() const { | 390 | 1.53M | unsigned size = sizeof(LocalData); | 391 | 1.53M | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 1.53M | size = llvm::alignTo(size, extraAlign); | 393 | 1.53M | size += asDerived()->getExtraLocalDataSize(); | 394 | 1.53M | return size; | 395 | 1.53M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 133M | unsigned getLocalDataSize() const { | 390 | 133M | unsigned size = sizeof(LocalData); | 391 | 133M | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 133M | size = llvm::alignTo(size, extraAlign); | 393 | 133M | size += asDerived()->getExtraLocalDataSize(); | 394 | 133M | return size; | 395 | 133M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 1.92M | unsigned getLocalDataSize() const { | 390 | 1.92M | unsigned size = sizeof(LocalData); | 391 | 1.92M | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 1.92M | size = llvm::alignTo(size, extraAlign); | 393 | 1.92M | size += asDerived()->getExtraLocalDataSize(); | 394 | 1.92M | return size; | 395 | 1.92M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 317 | unsigned getLocalDataSize() const { | 390 | 317 | unsigned size = sizeof(LocalData); | 391 | 317 | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 317 | size = llvm::alignTo(size, extraAlign); | 393 | 317 | size += asDerived()->getExtraLocalDataSize(); | 394 | 317 | return size; | 395 | 317 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 480k | unsigned getLocalDataSize() const { | 390 | 480k | unsigned size = sizeof(LocalData); | 391 | 480k | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 480k | size = llvm::alignTo(size, extraAlign); | 393 | 480k | size += asDerived()->getExtraLocalDataSize(); | 394 | 480k | return size; | 395 | 480k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 650 | unsigned getLocalDataSize() const { | 390 | 650 | unsigned size = sizeof(LocalData); | 391 | 650 | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 650 | size = llvm::alignTo(size, extraAlign); | 393 | 650 | size += asDerived()->getExtraLocalDataSize(); | 394 | 650 | return size; | 395 | 650 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 9.45k | unsigned getLocalDataSize() const { | 390 | 9.45k | unsigned size = sizeof(LocalData); | 391 | 9.45k | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 9.45k | size = llvm::alignTo(size, extraAlign); | 393 | 9.45k | size += asDerived()->getExtraLocalDataSize(); | 394 | 9.45k | return size; | 395 | 9.45k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 12.5M | unsigned getLocalDataSize() const { | 390 | 12.5M | unsigned size = sizeof(LocalData); | 391 | 12.5M | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 12.5M | size = llvm::alignTo(size, extraAlign); | 393 | 12.5M | size += asDerived()->getExtraLocalDataSize(); | 394 | 12.5M | return size; | 395 | 12.5M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 2.96M | unsigned getLocalDataSize() const { | 390 | 2.96M | unsigned size = sizeof(LocalData); | 391 | 2.96M | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 2.96M | size = llvm::alignTo(size, extraAlign); | 393 | 2.96M | size += asDerived()->getExtraLocalDataSize(); | 394 | 2.96M | return size; | 395 | 2.96M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 57.9k | unsigned getLocalDataSize() const { | 390 | 57.9k | unsigned size = sizeof(LocalData); | 391 | 57.9k | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 57.9k | size = llvm::alignTo(size, extraAlign); | 393 | 57.9k | size += asDerived()->getExtraLocalDataSize(); | 394 | 57.9k | return size; | 395 | 57.9k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 806 | unsigned getLocalDataSize() const { | 390 | 806 | unsigned size = sizeof(LocalData); | 391 | 806 | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 806 | size = llvm::alignTo(size, extraAlign); | 393 | 806 | size += asDerived()->getExtraLocalDataSize(); | 394 | 806 | return size; | 395 | 806 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 223k | unsigned getLocalDataSize() const { | 390 | 223k | unsigned size = sizeof(LocalData); | 391 | 223k | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 223k | size = llvm::alignTo(size, extraAlign); | 393 | 223k | size += asDerived()->getExtraLocalDataSize(); | 394 | 223k | return size; | 395 | 223k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 289k | unsigned getLocalDataSize() const { | 390 | 289k | unsigned size = sizeof(LocalData); | 391 | 289k | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 289k | size = llvm::alignTo(size, extraAlign); | 393 | 289k | size += asDerived()->getExtraLocalDataSize(); | 394 | 289k | return size; | 395 | 289k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 4.43M | unsigned getLocalDataSize() const { | 390 | 4.43M | unsigned size = sizeof(LocalData); | 391 | 4.43M | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 4.43M | size = llvm::alignTo(size, extraAlign); | 393 | 4.43M | size += asDerived()->getExtraLocalDataSize(); | 394 | 4.43M | return size; | 395 | 4.43M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 37.4M | unsigned getLocalDataSize() const { | 390 | 37.4M | unsigned size = sizeof(LocalData); | 391 | 37.4M | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 37.4M | size = llvm::alignTo(size, extraAlign); | 393 | 37.4M | size += asDerived()->getExtraLocalDataSize(); | 394 | 37.4M | return size; | 395 | 37.4M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 29.4M | unsigned getLocalDataSize() const { | 390 | 29.4M | unsigned size = sizeof(LocalData); | 391 | 29.4M | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 29.4M | size = llvm::alignTo(size, extraAlign); | 393 | 29.4M | size += asDerived()->getExtraLocalDataSize(); | 394 | 29.4M | return size; | 395 | 29.4M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 204M | unsigned getLocalDataSize() const { | 390 | 204M | unsigned size = sizeof(LocalData); | 391 | 204M | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 204M | size = llvm::alignTo(size, extraAlign); | 393 | 204M | size += asDerived()->getExtraLocalDataSize(); | 394 | 204M | return size; | 395 | 204M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 23.8M | unsigned getLocalDataSize() const { | 390 | 23.8M | unsigned size = sizeof(LocalData); | 391 | 23.8M | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 23.8M | size = llvm::alignTo(size, extraAlign); | 393 | 23.8M | size += asDerived()->getExtraLocalDataSize(); | 394 | 23.8M | return size; | 395 | 23.8M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 919k | unsigned getLocalDataSize() const { | 390 | 919k | unsigned size = sizeof(LocalData); | 391 | 919k | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 919k | size = llvm::alignTo(size, extraAlign); | 393 | 919k | size += asDerived()->getExtraLocalDataSize(); | 394 | 919k | return size; | 395 | 919k | } |
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 934k | unsigned getLocalDataSize() const { | 390 | 934k | unsigned size = sizeof(LocalData); | 391 | 934k | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 934k | size = llvm::alignTo(size, extraAlign); | 393 | 934k | size += asDerived()->getExtraLocalDataSize(); | 394 | 934k | return size; | 395 | 934k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 7.29M | unsigned getLocalDataSize() const { | 390 | 7.29M | unsigned size = sizeof(LocalData); | 391 | 7.29M | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 7.29M | size = llvm::alignTo(size, extraAlign); | 393 | 7.29M | size += asDerived()->getExtraLocalDataSize(); | 394 | 7.29M | return size; | 395 | 7.29M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 275k | unsigned getLocalDataSize() const { | 390 | 275k | unsigned size = sizeof(LocalData); | 391 | 275k | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 275k | size = llvm::alignTo(size, extraAlign); | 393 | 275k | size += asDerived()->getExtraLocalDataSize(); | 394 | 275k | return size; | 395 | 275k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 1.98k | unsigned getLocalDataSize() const { | 390 | 1.98k | unsigned size = sizeof(LocalData); | 391 | 1.98k | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 1.98k | size = llvm::alignTo(size, extraAlign); | 393 | 1.98k | size += asDerived()->getExtraLocalDataSize(); | 394 | 1.98k | return size; | 395 | 1.98k | } |
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 1.91M | unsigned getLocalDataSize() const { | 390 | 1.91M | unsigned size = sizeof(LocalData); | 391 | 1.91M | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 1.91M | size = llvm::alignTo(size, extraAlign); | 393 | 1.91M | size += asDerived()->getExtraLocalDataSize(); | 394 | 1.91M | return size; | 395 | 1.91M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 132k | unsigned getLocalDataSize() const { | 390 | 132k | unsigned size = sizeof(LocalData); | 391 | 132k | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 132k | size = llvm::alignTo(size, extraAlign); | 393 | 132k | size += asDerived()->getExtraLocalDataSize(); | 394 | 132k | return size; | 395 | 132k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 45.7M | unsigned getLocalDataSize() const { | 390 | 45.7M | unsigned size = sizeof(LocalData); | 391 | 45.7M | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 45.7M | size = llvm::alignTo(size, extraAlign); | 393 | 45.7M | size += asDerived()->getExtraLocalDataSize(); | 394 | 45.7M | return size; | 395 | 45.7M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 4.94k | unsigned getLocalDataSize() const { | 390 | 4.94k | unsigned size = sizeof(LocalData); | 391 | 4.94k | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 4.94k | size = llvm::alignTo(size, extraAlign); | 393 | 4.94k | size += asDerived()->getExtraLocalDataSize(); | 394 | 4.94k | return size; | 395 | 4.94k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 182 | unsigned getLocalDataSize() const { | 390 | 182 | unsigned size = sizeof(LocalData); | 391 | 182 | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 182 | size = llvm::alignTo(size, extraAlign); | 393 | 182 | size += asDerived()->getExtraLocalDataSize(); | 394 | 182 | return size; | 395 | 182 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getLocalDataSize() const Line | Count | Source | 389 | 1.93M | unsigned getLocalDataSize() const { | 390 | 1.93M | unsigned size = sizeof(LocalData); | 391 | 1.93M | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 392 | 1.93M | size = llvm::alignTo(size, extraAlign); | 393 | 1.93M | size += asDerived()->getExtraLocalDataSize(); | 394 | 1.93M | return size; | 395 | 1.93M | } |
|
396 | | |
397 | 1.68k | void copyLocal(Derived other) { |
398 | | // Some subclasses have no data to copy. |
399 | 1.68k | if (asDerived()->getLocalDataSize() == 0) return8 ; |
400 | | |
401 | | // Copy the fixed-sized local data. |
402 | 1.67k | memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData)); |
403 | | |
404 | | // Copy the variable-sized local data. We need to do this |
405 | | // separately because the padding in the source and the padding in |
406 | | // the destination might be different. |
407 | 1.67k | memcpy(getExtraLocalData(), other.getExtraLocalData(), |
408 | 1.67k | asDerived()->getExtraLocalDataSize()); |
409 | 1.67k | } Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::copyLocal(clang::AdjustedTypeLoc) Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::copyLocal(clang::ArrayTypeLoc) clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::copyLocal(clang::AtomicTypeLoc) Line | Count | Source | 397 | 1 | void copyLocal(Derived other) { | 398 | | // Some subclasses have no data to copy. | 399 | 1 | if (asDerived()->getLocalDataSize() == 0) return0 ; | 400 | | | 401 | | // Copy the fixed-sized local data. | 402 | 1 | memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData)); | 403 | | | 404 | | // Copy the variable-sized local data. We need to do this | 405 | | // separately because the padding in the source and the padding in | 406 | | // the destination might be different. | 407 | 1 | memcpy(getExtraLocalData(), other.getExtraLocalData(), | 408 | 1 | asDerived()->getExtraLocalDataSize()); | 409 | 1 | } |
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::copyLocal(clang::AttributedTypeLoc) Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::copyLocal(clang::BTFTagAttributedTypeLoc) clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::copyLocal(clang::TypeSpecTypeLoc) Line | Count | Source | 397 | 494 | void copyLocal(Derived other) { | 398 | | // Some subclasses have no data to copy. | 399 | 494 | if (asDerived()->getLocalDataSize() == 0) return0 ; | 400 | | | 401 | | // Copy the fixed-sized local data. | 402 | 494 | memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData)); | 403 | | | 404 | | // Copy the variable-sized local data. We need to do this | 405 | | // separately because the padding in the source and the padding in | 406 | | // the destination might be different. | 407 | 494 | memcpy(getExtraLocalData(), other.getExtraLocalData(), | 408 | 494 | asDerived()->getExtraLocalDataSize()); | 409 | 494 | } |
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::copyLocal(clang::BlockPointerTypeLoc) clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::copyLocal(clang::BuiltinTypeLoc) Line | Count | Source | 397 | 997 | void copyLocal(Derived other) { | 398 | | // Some subclasses have no data to copy. | 399 | 997 | if (asDerived()->getLocalDataSize() == 0) return0 ; | 400 | | | 401 | | // Copy the fixed-sized local data. | 402 | 997 | memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData)); | 403 | | | 404 | | // Copy the variable-sized local data. We need to do this | 405 | | // separately because the padding in the source and the padding in | 406 | | // the destination might be different. | 407 | 997 | memcpy(getExtraLocalData(), other.getExtraLocalData(), | 408 | 997 | asDerived()->getExtraLocalDataSize()); | 409 | 997 | } |
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::copyLocal(clang::DecltypeTypeLoc) Unexecuted instantiation: clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::copyLocal(clang::AutoTypeLoc) Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::copyLocal(clang::DependentAddressSpaceTypeLoc) Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::copyLocal(clang::DependentNameTypeLoc) Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::copyLocal(clang::DependentSizedExtVectorTypeLoc) Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::copyLocal(clang::DependentTemplateSpecializationTypeLoc) Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::copyLocal(clang::DependentVectorTypeLoc) clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::copyLocal(clang::ElaboratedTypeLoc) Line | Count | Source | 397 | 8 | void copyLocal(Derived other) { | 398 | | // Some subclasses have no data to copy. | 399 | 8 | if (asDerived()->getLocalDataSize() == 0) return; | 400 | | | 401 | | // Copy the fixed-sized local data. | 402 | 0 | memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData)); | 403 | | | 404 | | // Copy the variable-sized local data. We need to do this | 405 | | // separately because the padding in the source and the padding in | 406 | | // the destination might be different. | 407 | 0 | memcpy(getExtraLocalData(), other.getExtraLocalData(), | 408 | 0 | asDerived()->getExtraLocalDataSize()); | 409 | 0 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::copyLocal(clang::FunctionTypeLoc) Line | Count | Source | 397 | 7 | void copyLocal(Derived other) { | 398 | | // Some subclasses have no data to copy. | 399 | 7 | if (asDerived()->getLocalDataSize() == 0) return0 ; | 400 | | | 401 | | // Copy the fixed-sized local data. | 402 | 7 | memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData)); | 403 | | | 404 | | // Copy the variable-sized local data. We need to do this | 405 | | // separately because the padding in the source and the padding in | 406 | | // the destination might be different. | 407 | 7 | memcpy(getExtraLocalData(), other.getExtraLocalData(), | 408 | 7 | asDerived()->getExtraLocalDataSize()); | 409 | 7 | } |
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::copyLocal(clang::MacroQualifiedTypeLoc) Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::copyLocal(clang::MatrixTypeLoc) Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::copyLocal(clang::MemberPointerTypeLoc) clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::copyLocal(clang::ObjCObjectPointerTypeLoc) Line | Count | Source | 397 | 19 | void copyLocal(Derived other) { | 398 | | // Some subclasses have no data to copy. | 399 | 19 | if (asDerived()->getLocalDataSize() == 0) return0 ; | 400 | | | 401 | | // Copy the fixed-sized local data. | 402 | 19 | memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData)); | 403 | | | 404 | | // Copy the variable-sized local data. We need to do this | 405 | | // separately because the padding in the source and the padding in | 406 | | // the destination might be different. | 407 | 19 | memcpy(getExtraLocalData(), other.getExtraLocalData(), | 408 | 19 | asDerived()->getExtraLocalDataSize()); | 409 | 19 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::copyLocal(clang::ObjCObjectTypeLoc) Line | Count | Source | 397 | 19 | void copyLocal(Derived other) { | 398 | | // Some subclasses have no data to copy. | 399 | 19 | if (asDerived()->getLocalDataSize() == 0) return0 ; | 400 | | | 401 | | // Copy the fixed-sized local data. | 402 | 19 | memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData)); | 403 | | | 404 | | // Copy the variable-sized local data. We need to do this | 405 | | // separately because the padding in the source and the padding in | 406 | | // the destination might be different. | 407 | 19 | memcpy(getExtraLocalData(), other.getExtraLocalData(), | 408 | 19 | asDerived()->getExtraLocalDataSize()); | 409 | 19 | } |
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::copyLocal(clang::ObjCInterfaceTypeLoc) Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::copyLocal(clang::ObjCTypeParamTypeLoc) Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::copyLocal(clang::PackExpansionTypeLoc) clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::copyLocal(clang::ParenTypeLoc) Line | Count | Source | 397 | 7 | void copyLocal(Derived other) { | 398 | | // Some subclasses have no data to copy. | 399 | 7 | if (asDerived()->getLocalDataSize() == 0) return0 ; | 400 | | | 401 | | // Copy the fixed-sized local data. | 402 | 7 | memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData)); | 403 | | | 404 | | // Copy the variable-sized local data. We need to do this | 405 | | // separately because the padding in the source and the padding in | 406 | | // the destination might be different. | 407 | 7 | memcpy(getExtraLocalData(), other.getExtraLocalData(), | 408 | 7 | asDerived()->getExtraLocalDataSize()); | 409 | 7 | } |
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::copyLocal(clang::PipeTypeLoc) clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::copyLocal(clang::PointerTypeLoc) Line | Count | Source | 397 | 126 | void copyLocal(Derived other) { | 398 | | // Some subclasses have no data to copy. | 399 | 126 | if (asDerived()->getLocalDataSize() == 0) return0 ; | 400 | | | 401 | | // Copy the fixed-sized local data. | 402 | 126 | memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData)); | 403 | | | 404 | | // Copy the variable-sized local data. We need to do this | 405 | | // separately because the padding in the source and the padding in | 406 | | // the destination might be different. | 407 | 126 | memcpy(getExtraLocalData(), other.getExtraLocalData(), | 408 | 126 | asDerived()->getExtraLocalDataSize()); | 409 | 126 | } |
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::copyLocal(clang::ReferenceTypeLoc) Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::copyLocal(clang::TemplateSpecializationTypeLoc) clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::copyLocal(clang::TypeOfExprTypeLoc) Line | Count | Source | 397 | 1 | void copyLocal(Derived other) { | 398 | | // Some subclasses have no data to copy. | 399 | 1 | if (asDerived()->getLocalDataSize() == 0) return0 ; | 400 | | | 401 | | // Copy the fixed-sized local data. | 402 | 1 | memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData)); | 403 | | | 404 | | // Copy the variable-sized local data. We need to do this | 405 | | // separately because the padding in the source and the padding in | 406 | | // the destination might be different. | 407 | 1 | memcpy(getExtraLocalData(), other.getExtraLocalData(), | 408 | 1 | asDerived()->getExtraLocalDataSize()); | 409 | 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) clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::copyLocal(clang::VectorTypeLoc) Line | Count | Source | 397 | 2 | void copyLocal(Derived other) { | 398 | | // Some subclasses have no data to copy. | 399 | 2 | if (asDerived()->getLocalDataSize() == 0) return0 ; | 400 | | | 401 | | // Copy the fixed-sized local data. | 402 | 2 | memcpy(getLocalData(), other.getLocalData(), sizeof(LocalData)); | 403 | | | 404 | | // Copy the variable-sized local data. We need to do this | 405 | | // separately because the padding in the source and the padding in | 406 | | // the destination might be different. | 407 | 2 | memcpy(getExtraLocalData(), other.getExtraLocalData(), | 408 | 2 | asDerived()->getExtraLocalDataSize()); | 409 | 2 | } |
|
410 | | |
411 | 945M | TypeLoc getNextTypeLoc() const { |
412 | 945M | return getNextTypeLoc(asDerived()->getInnerType()); |
413 | 945M | } clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 17.2k | TypeLoc getNextTypeLoc() const { | 412 | 17.2k | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 17.2k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 1.26M | TypeLoc getNextTypeLoc() const { | 412 | 1.26M | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 1.26M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 36.0k | TypeLoc getNextTypeLoc() const { | 412 | 36.0k | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 36.0k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 5.70M | TypeLoc getNextTypeLoc() const { | 412 | 5.70M | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 5.70M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 123 | TypeLoc getNextTypeLoc() const { | 412 | 123 | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 123 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 287M | TypeLoc getNextTypeLoc() const { | 412 | 287M | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 287M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 160k | TypeLoc getNextTypeLoc() const { | 412 | 160k | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 160k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 37.0M | TypeLoc getNextTypeLoc() const { | 412 | 37.0M | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 37.0M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 1.50M | TypeLoc getNextTypeLoc() const { | 412 | 1.50M | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 1.50M | } |
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 1.03M | TypeLoc getNextTypeLoc() const { | 412 | 1.03M | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 1.03M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 226 | TypeLoc getNextTypeLoc() const { | 412 | 226 | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 226 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 10.5M | TypeLoc getNextTypeLoc() const { | 412 | 10.5M | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 10.5M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 5.49k | TypeLoc getNextTypeLoc() const { | 412 | 5.49k | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 5.49k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 385k | TypeLoc getNextTypeLoc() const { | 412 | 385k | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 385k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 368 | TypeLoc getNextTypeLoc() const { | 412 | 368 | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 368 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 341M | TypeLoc getNextTypeLoc() const { | 412 | 341M | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 341M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 87.4M | TypeLoc getNextTypeLoc() const { | 412 | 87.4M | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 87.4M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 342k | TypeLoc getNextTypeLoc() const { | 412 | 342k | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 342k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 2.92k | TypeLoc getNextTypeLoc() const { | 412 | 2.92k | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 2.92k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 227k | TypeLoc getNextTypeLoc() const { | 412 | 227k | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 227k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 3.09M | TypeLoc getNextTypeLoc() const { | 412 | 3.09M | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 3.09M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 930k | TypeLoc getNextTypeLoc() const { | 412 | 930k | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 930k | } |
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 2.97M | TypeLoc getNextTypeLoc() const { | 412 | 2.97M | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 2.97M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 287k | TypeLoc getNextTypeLoc() const { | 412 | 287k | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 287k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 1.60M | TypeLoc getNextTypeLoc() const { | 412 | 1.60M | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 1.60M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 1.07M | TypeLoc getNextTypeLoc() const { | 412 | 1.07M | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 1.07M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 543 | TypeLoc getNextTypeLoc() const { | 412 | 543 | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 543 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 24.1M | TypeLoc getNextTypeLoc() const { | 412 | 24.1M | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 24.1M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 17.2M | TypeLoc getNextTypeLoc() const { | 412 | 17.2M | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 17.2M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 115M | TypeLoc getNextTypeLoc() const { | 412 | 115M | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 115M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 8.31k | TypeLoc getNextTypeLoc() const { | 412 | 8.31k | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 8.31k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 246 | TypeLoc getNextTypeLoc() const { | 412 | 246 | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 246 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 2.70M | TypeLoc getNextTypeLoc() const { | 412 | 2.70M | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 2.70M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getNextTypeLoc() const Line | Count | Source | 411 | 328k | TypeLoc getNextTypeLoc() const { | 412 | 328k | return getNextTypeLoc(asDerived()->getInnerType()); | 413 | 328k | } |
|
414 | | |
415 | 3.81G | const TypeClass *getTypePtr() const { |
416 | 3.81G | return cast<TypeClass>(Base::getTypePtr()); |
417 | 3.81G | } clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getTypePtr() const Line | Count | Source | 415 | 144M | const TypeClass *getTypePtr() const { | 416 | 144M | return cast<TypeClass>(Base::getTypePtr()); | 417 | 144M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getTypePtr() const Line | Count | Source | 415 | 13.3M | const TypeClass *getTypePtr() const { | 416 | 13.3M | return cast<TypeClass>(Base::getTypePtr()); | 417 | 13.3M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getTypePtr() const Line | Count | Source | 415 | 327k | const TypeClass *getTypePtr() const { | 416 | 327k | return cast<TypeClass>(Base::getTypePtr()); | 417 | 327k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getTypePtr() const Line | Count | Source | 415 | 18.2M | const TypeClass *getTypePtr() const { | 416 | 18.2M | return cast<TypeClass>(Base::getTypePtr()); | 417 | 18.2M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getTypePtr() const Line | Count | Source | 415 | 360 | const TypeClass *getTypePtr() const { | 416 | 360 | return cast<TypeClass>(Base::getTypePtr()); | 417 | 360 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getTypePtr() const Line | Count | Source | 415 | 6.82M | const TypeClass *getTypePtr() const { | 416 | 6.82M | return cast<TypeClass>(Base::getTypePtr()); | 417 | 6.82M | } |
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getTypePtr() const Line | Count | Source | 415 | 28.7k | const TypeClass *getTypePtr() const { | 416 | 28.7k | return cast<TypeClass>(Base::getTypePtr()); | 417 | 28.7k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getTypePtr() const Line | Count | Source | 415 | 1.24M | const TypeClass *getTypePtr() const { | 416 | 1.24M | return cast<TypeClass>(Base::getTypePtr()); | 417 | 1.24M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getTypePtr() const Line | Count | Source | 415 | 2.25M | const TypeClass *getTypePtr() const { | 416 | 2.25M | return cast<TypeClass>(Base::getTypePtr()); | 417 | 2.25M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getTypePtr() const Line | Count | Source | 415 | 38.9k | const TypeClass *getTypePtr() const { | 416 | 38.9k | return cast<TypeClass>(Base::getTypePtr()); | 417 | 38.9k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getTypePtr() const Line | Count | Source | 415 | 493k | const TypeClass *getTypePtr() const { | 416 | 493k | return cast<TypeClass>(Base::getTypePtr()); | 417 | 493k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getTypePtr() const Line | Count | Source | 415 | 40.2M | const TypeClass *getTypePtr() const { | 416 | 40.2M | return cast<TypeClass>(Base::getTypePtr()); | 417 | 40.2M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getTypePtr() const Line | Count | Source | 415 | 722M | const TypeClass *getTypePtr() const { | 416 | 722M | return cast<TypeClass>(Base::getTypePtr()); | 417 | 722M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getTypePtr() const Line | Count | Source | 415 | 2.67M | const TypeClass *getTypePtr() const { | 416 | 2.67M | return cast<TypeClass>(Base::getTypePtr()); | 417 | 2.67M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getTypePtr() const Line | Count | Source | 415 | 77.4M | const TypeClass *getTypePtr() const { | 416 | 77.4M | return cast<TypeClass>(Base::getTypePtr()); | 417 | 77.4M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getTypePtr() const Line | Count | Source | 415 | 550 | const TypeClass *getTypePtr() const { | 416 | 550 | return cast<TypeClass>(Base::getTypePtr()); | 417 | 550 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getTypePtr() const Line | Count | Source | 415 | 657k | const TypeClass *getTypePtr() const { | 416 | 657k | return cast<TypeClass>(Base::getTypePtr()); | 417 | 657k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getTypePtr() const Line | Count | Source | 415 | 1.07k | const TypeClass *getTypePtr() const { | 416 | 1.07k | return cast<TypeClass>(Base::getTypePtr()); | 417 | 1.07k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getTypePtr() const Line | Count | Source | 415 | 14.8k | const TypeClass *getTypePtr() const { | 416 | 14.8k | return cast<TypeClass>(Base::getTypePtr()); | 417 | 14.8k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getTypePtr() const Line | Count | Source | 415 | 4.72k | const TypeClass *getTypePtr() const { | 416 | 4.72k | return cast<TypeClass>(Base::getTypePtr()); | 417 | 4.72k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getTypePtr() const Line | Count | Source | 415 | 1 | const TypeClass *getTypePtr() const { | 416 | 1 | return cast<TypeClass>(Base::getTypePtr()); | 417 | 1 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::getTypePtr() const Line | Count | Source | 415 | 184k | const TypeClass *getTypePtr() const { | 416 | 184k | return cast<TypeClass>(Base::getTypePtr()); | 417 | 184k | } |
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getTypePtr() const Line | Count | Source | 415 | 751k | const TypeClass *getTypePtr() const { | 416 | 751k | return cast<TypeClass>(Base::getTypePtr()); | 417 | 751k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getTypePtr() const Line | Count | Source | 415 | 2.71G | const TypeClass *getTypePtr() const { | 416 | 2.71G | return cast<TypeClass>(Base::getTypePtr()); | 417 | 2.71G | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getTypePtr() const Line | Count | Source | 415 | 7.02M | const TypeClass *getTypePtr() const { | 416 | 7.02M | return cast<TypeClass>(Base::getTypePtr()); | 417 | 7.02M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getTypePtr() const Line | Count | Source | 415 | 853k | const TypeClass *getTypePtr() const { | 416 | 853k | return cast<TypeClass>(Base::getTypePtr()); | 417 | 853k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getTypePtr() const Line | Count | Source | 415 | 4.32M | const TypeClass *getTypePtr() const { | 416 | 4.32M | return cast<TypeClass>(Base::getTypePtr()); | 417 | 4.32M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getTypePtr() const Line | Count | Source | 415 | 81.9k | const TypeClass *getTypePtr() const { | 416 | 81.9k | return cast<TypeClass>(Base::getTypePtr()); | 417 | 81.9k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getTypePtr() const Line | Count | Source | 415 | 1.09k | const TypeClass *getTypePtr() const { | 416 | 1.09k | return cast<TypeClass>(Base::getTypePtr()); | 417 | 1.09k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getTypePtr() const Line | Count | Source | 415 | 324k | const TypeClass *getTypePtr() const { | 416 | 324k | return cast<TypeClass>(Base::getTypePtr()); | 417 | 324k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getTypePtr() const Line | Count | Source | 415 | 391 | const TypeClass *getTypePtr() const { | 416 | 391 | return cast<TypeClass>(Base::getTypePtr()); | 417 | 391 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getTypePtr() const Line | Count | Source | 415 | 6.30M | const TypeClass *getTypePtr() const { | 416 | 6.30M | return cast<TypeClass>(Base::getTypePtr()); | 417 | 6.30M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getTypePtr() const Line | Count | Source | 415 | 50.8M | const TypeClass *getTypePtr() const { | 416 | 50.8M | return cast<TypeClass>(Base::getTypePtr()); | 417 | 50.8M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getTypePtr() const Line | Count | Source | 415 | 769k | const TypeClass *getTypePtr() const { | 416 | 769k | return cast<TypeClass>(Base::getTypePtr()); | 417 | 769k | } |
|
418 | | |
419 | | protected: |
420 | 320M | unsigned getExtraLocalDataSize() const { |
421 | 320M | return 0; |
422 | 320M | } clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 10.7M | unsigned getExtraLocalDataSize() const { | 421 | 10.7M | return 0; | 422 | 10.7M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 229 | unsigned getExtraLocalDataSize() const { | 421 | 229 | return 0; | 422 | 229 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 739k | unsigned getExtraLocalDataSize() const { | 421 | 739k | return 0; | 422 | 739k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 1.53M | unsigned getExtraLocalDataSize() const { | 421 | 1.53M | return 0; | 422 | 1.53M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 1.92M | unsigned getExtraLocalDataSize() const { | 421 | 1.92M | return 0; | 422 | 1.92M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 317 | unsigned getExtraLocalDataSize() const { | 421 | 317 | return 0; | 422 | 317 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 480k | unsigned getExtraLocalDataSize() const { | 421 | 480k | return 0; | 422 | 480k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 650 | unsigned getExtraLocalDataSize() const { | 421 | 650 | return 0; | 422 | 650 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 9.45k | unsigned getExtraLocalDataSize() const { | 421 | 9.45k | return 0; | 422 | 9.45k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 12.5M | unsigned getExtraLocalDataSize() const { | 421 | 12.5M | return 0; | 422 | 12.5M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 2.96M | unsigned getExtraLocalDataSize() const { | 421 | 2.96M | return 0; | 422 | 2.96M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 57.9k | unsigned getExtraLocalDataSize() const { | 421 | 57.9k | return 0; | 422 | 57.9k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 806 | unsigned getExtraLocalDataSize() const { | 421 | 806 | return 0; | 422 | 806 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 223k | unsigned getExtraLocalDataSize() const { | 421 | 223k | return 0; | 422 | 223k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 289k | unsigned getExtraLocalDataSize() const { | 421 | 289k | return 0; | 422 | 289k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 4.43M | unsigned getExtraLocalDataSize() const { | 421 | 4.43M | return 0; | 422 | 4.43M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 37.4M | unsigned getExtraLocalDataSize() const { | 421 | 37.4M | return 0; | 422 | 37.4M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 29.4M | unsigned getExtraLocalDataSize() const { | 421 | 29.4M | return 0; | 422 | 29.4M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 204M | unsigned getExtraLocalDataSize() const { | 421 | 204M | return 0; | 422 | 204M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 919k | unsigned getExtraLocalDataSize() const { | 421 | 919k | return 0; | 422 | 919k | } |
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 934k | unsigned getExtraLocalDataSize() const { | 421 | 934k | return 0; | 422 | 934k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 7.29M | unsigned getExtraLocalDataSize() const { | 421 | 7.29M | return 0; | 422 | 7.29M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 1.98k | unsigned getExtraLocalDataSize() const { | 421 | 1.98k | return 0; | 422 | 1.98k | } |
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 1.91M | unsigned getExtraLocalDataSize() const { | 421 | 1.91M | return 0; | 422 | 1.91M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 4.94k | unsigned getExtraLocalDataSize() const { | 421 | 4.94k | return 0; | 422 | 4.94k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 182 | unsigned getExtraLocalDataSize() const { | 421 | 182 | return 0; | 422 | 182 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getExtraLocalDataSize() const Line | Count | Source | 420 | 1.93M | unsigned getExtraLocalDataSize() const { | 421 | 1.93M | return 0; | 422 | 1.93M | } |
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getExtraLocalDataSize() const |
423 | | |
424 | 1.17G | unsigned getExtraLocalDataAlignment() const { |
425 | 1.17G | return 1; |
426 | 1.17G | } clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 15.2M | unsigned getExtraLocalDataAlignment() const { | 425 | 15.2M | return 1; | 426 | 15.2M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 455 | unsigned getExtraLocalDataAlignment() const { | 425 | 455 | return 1; | 426 | 455 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 979k | unsigned getExtraLocalDataAlignment() const { | 425 | 979k | return 1; | 426 | 979k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 3.01M | unsigned getExtraLocalDataAlignment() const { | 425 | 3.01M | return 1; | 426 | 3.01M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 2.82M | unsigned getExtraLocalDataAlignment() const { | 425 | 2.82M | return 1; | 426 | 2.82M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 575 | unsigned getExtraLocalDataAlignment() const { | 425 | 575 | return 1; | 426 | 575 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 681k | unsigned getExtraLocalDataAlignment() const { | 425 | 681k | return 1; | 426 | 681k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 826 | unsigned getExtraLocalDataAlignment() const { | 425 | 826 | return 1; | 426 | 826 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 12.1k | unsigned getExtraLocalDataAlignment() const { | 425 | 12.1k | return 1; | 426 | 12.1k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 281M | unsigned getExtraLocalDataAlignment() const { | 425 | 281M | return 1; | 426 | 281M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 3.93M | unsigned getExtraLocalDataAlignment() const { | 425 | 3.93M | return 1; | 426 | 3.93M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 90.2k | unsigned getExtraLocalDataAlignment() const { | 425 | 90.2k | return 1; | 426 | 90.2k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 1.07k | unsigned getExtraLocalDataAlignment() const { | 425 | 1.07k | return 1; | 426 | 1.07k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 414k | unsigned getExtraLocalDataAlignment() const { | 425 | 414k | return 1; | 426 | 414k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 357k | unsigned getExtraLocalDataAlignment() const { | 425 | 357k | return 1; | 426 | 357k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 8.36M | unsigned getExtraLocalDataAlignment() const { | 425 | 8.36M | return 1; | 426 | 8.36M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 52.8M | unsigned getExtraLocalDataAlignment() const { | 425 | 52.8M | return 1; | 426 | 52.8M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 42.8M | unsigned getExtraLocalDataAlignment() const { | 425 | 42.8M | return 1; | 426 | 42.8M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 10.2k | unsigned getExtraLocalDataAlignment() const { | 425 | 10.2k | return 1; | 426 | 10.2k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 732M | unsigned getExtraLocalDataAlignment() const { | 425 | 732M | return 1; | 426 | 732M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 2.07M | unsigned getExtraLocalDataAlignment() const { | 425 | 2.07M | return 1; | 426 | 2.07M | } |
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 2.09M | unsigned getExtraLocalDataAlignment() const { | 425 | 2.09M | return 1; | 426 | 2.09M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 15.0M | unsigned getExtraLocalDataAlignment() const { | 425 | 15.0M | return 1; | 426 | 15.0M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 3.97k | unsigned getExtraLocalDataAlignment() const { | 425 | 3.97k | return 1; | 426 | 3.97k | } |
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 7.29M | unsigned getExtraLocalDataAlignment() const { | 425 | 7.29M | return 1; | 426 | 7.29M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 19.9k | unsigned getExtraLocalDataAlignment() const { | 425 | 19.9k | return 1; | 426 | 19.9k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 388 | unsigned getExtraLocalDataAlignment() const { | 425 | 388 | return 1; | 426 | 388 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getExtraLocalDataAlignment() const Line | Count | Source | 424 | 3.88M | unsigned getExtraLocalDataAlignment() const { | 425 | 3.88M | return 1; | 426 | 3.88M | } |
|
427 | | |
428 | 1.28G | LocalData *getLocalData() const { |
429 | 1.28G | return static_cast<LocalData*>(Base::Data); |
430 | 1.28G | } clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getLocalData() const Line | Count | Source | 428 | 475M | LocalData *getLocalData() const { | 429 | 475M | return static_cast<LocalData*>(Base::Data); | 430 | 475M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getLocalData() const Line | Count | Source | 428 | 38.1M | LocalData *getLocalData() const { | 429 | 38.1M | return static_cast<LocalData*>(Base::Data); | 430 | 38.1M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getLocalData() const Line | Count | Source | 428 | 177k | LocalData *getLocalData() const { | 429 | 177k | return static_cast<LocalData*>(Base::Data); | 430 | 177k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getLocalData() const Line | Count | Source | 428 | 4.92M | LocalData *getLocalData() const { | 429 | 4.92M | return static_cast<LocalData*>(Base::Data); | 430 | 4.92M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getLocalData() const Line | Count | Source | 428 | 1.25M | LocalData *getLocalData() const { | 429 | 1.25M | return static_cast<LocalData*>(Base::Data); | 430 | 1.25M | } |
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getLocalData() const Line | Count | Source | 428 | 5.96M | LocalData *getLocalData() const { | 429 | 5.96M | return static_cast<LocalData*>(Base::Data); | 430 | 5.96M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getLocalData() const Line | Count | Source | 428 | 244k | LocalData *getLocalData() const { | 429 | 244k | return static_cast<LocalData*>(Base::Data); | 430 | 244k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getLocalData() const Line | Count | Source | 428 | 1.13M | LocalData *getLocalData() const { | 429 | 1.13M | return static_cast<LocalData*>(Base::Data); | 430 | 1.13M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getLocalData() const Line | Count | Source | 428 | 15.4M | LocalData *getLocalData() const { | 429 | 15.4M | return static_cast<LocalData*>(Base::Data); | 430 | 15.4M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getLocalData() const Line | Count | Source | 428 | 130k | LocalData *getLocalData() const { | 429 | 130k | return static_cast<LocalData*>(Base::Data); | 430 | 130k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getLocalData() const Line | Count | Source | 428 | 261k | LocalData *getLocalData() const { | 429 | 261k | return static_cast<LocalData*>(Base::Data); | 430 | 261k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getLocalData() const Line | Count | Source | 428 | 2.35M | LocalData *getLocalData() const { | 429 | 2.35M | return static_cast<LocalData*>(Base::Data); | 430 | 2.35M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getLocalData() const Line | Count | Source | 428 | 15.7M | LocalData *getLocalData() const { | 429 | 15.7M | return static_cast<LocalData*>(Base::Data); | 430 | 15.7M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getLocalData() const Line | Count | Source | 428 | 167M | LocalData *getLocalData() const { | 429 | 167M | return static_cast<LocalData*>(Base::Data); | 430 | 167M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getLocalData() const Line | Count | Source | 428 | 1.92M | LocalData *getLocalData() const { | 429 | 1.92M | return static_cast<LocalData*>(Base::Data); | 430 | 1.92M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getLocalData() const Line | Count | Source | 428 | 507M | LocalData *getLocalData() const { | 429 | 507M | return static_cast<LocalData*>(Base::Data); | 430 | 507M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getLocalData() const Line | Count | Source | 428 | 431 | LocalData *getLocalData() const { | 429 | 431 | return static_cast<LocalData*>(Base::Data); | 430 | 431 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getLocalData() const Line | Count | Source | 428 | 265k | LocalData *getLocalData() const { | 429 | 265k | return static_cast<LocalData*>(Base::Data); | 430 | 265k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getLocalData() const Line | Count | Source | 428 | 396 | LocalData *getLocalData() const { | 429 | 396 | return static_cast<LocalData*>(Base::Data); | 430 | 396 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getLocalData() const Line | Count | Source | 428 | 8.27k | LocalData *getLocalData() const { | 429 | 8.27k | return static_cast<LocalData*>(Base::Data); | 430 | 8.27k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getLocalData() const Line | Count | Source | 428 | 6.75k | LocalData *getLocalData() const { | 429 | 6.75k | return static_cast<LocalData*>(Base::Data); | 430 | 6.75k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getLocalData() const Line | Count | Source | 428 | 921 | LocalData *getLocalData() const { | 429 | 921 | return static_cast<LocalData*>(Base::Data); | 430 | 921 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::getLocalData() const Line | Count | Source | 428 | 3.17M | LocalData *getLocalData() const { | 429 | 3.17M | return static_cast<LocalData*>(Base::Data); | 430 | 3.17M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getLocalData() const Line | Count | Source | 428 | 6.98M | LocalData *getLocalData() const { | 429 | 6.98M | return static_cast<LocalData*>(Base::Data); | 430 | 6.98M | } |
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getLocalData() const Line | Count | Source | 428 | 117k | LocalData *getLocalData() const { | 429 | 117k | return static_cast<LocalData*>(Base::Data); | 430 | 117k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getLocalData() const Line | Count | Source | 428 | 8.86M | LocalData *getLocalData() const { | 429 | 8.86M | return static_cast<LocalData*>(Base::Data); | 430 | 8.86M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getLocalData() const Line | Count | Source | 428 | 27.8M | LocalData *getLocalData() const { | 429 | 27.8M | return static_cast<LocalData*>(Base::Data); | 430 | 27.8M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getLocalData() const Line | Count | Source | 428 | 1.70M | LocalData *getLocalData() const { | 429 | 1.70M | return static_cast<LocalData*>(Base::Data); | 430 | 1.70M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getLocalData() const Line | Count | Source | 428 | 1.63M | LocalData *getLocalData() const { | 429 | 1.63M | return static_cast<LocalData*>(Base::Data); | 430 | 1.63M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getLocalData() const Line | Count | Source | 428 | 76.7k | LocalData *getLocalData() const { | 429 | 76.7k | return static_cast<LocalData*>(Base::Data); | 430 | 76.7k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getLocalData() const Line | Count | Source | 428 | 282 | LocalData *getLocalData() const { | 429 | 282 | return static_cast<LocalData*>(Base::Data); | 430 | 282 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getLocalData() const Line | Count | Source | 428 | 32.2k | LocalData *getLocalData() const { | 429 | 32.2k | return static_cast<LocalData*>(Base::Data); | 430 | 32.2k | } |
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getLocalData() const Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getLocalData() const |
431 | | |
432 | | /// Gets a pointer past the Info structure; useful for classes with |
433 | | /// local data that can't be captured in the Info (e.g. because it's |
434 | | /// of variable size). |
435 | 158M | void *getExtraLocalData() const { |
436 | 158M | unsigned size = sizeof(LocalData); |
437 | 158M | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); |
438 | 158M | size = llvm::alignTo(size, extraAlign); |
439 | 158M | return reinterpret_cast<char *>(Base::Data) + size; |
440 | 158M | } clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getExtraLocalData() const Line | Count | Source | 435 | 18.5M | void *getExtraLocalData() const { | 436 | 18.5M | unsigned size = sizeof(LocalData); | 437 | 18.5M | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 438 | 18.5M | size = llvm::alignTo(size, extraAlign); | 439 | 18.5M | return reinterpret_cast<char *>(Base::Data) + size; | 440 | 18.5M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getExtraLocalData() const Line | Count | Source | 435 | 12.9k | void *getExtraLocalData() const { | 436 | 12.9k | unsigned size = sizeof(LocalData); | 437 | 12.9k | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 438 | 12.9k | size = llvm::alignTo(size, extraAlign); | 439 | 12.9k | return reinterpret_cast<char *>(Base::Data) + size; | 440 | 12.9k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getExtraLocalData() const Line | Count | Source | 435 | 195k | void *getExtraLocalData() const { | 436 | 195k | unsigned size = sizeof(LocalData); | 437 | 195k | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 438 | 195k | size = llvm::alignTo(size, extraAlign); | 439 | 195k | return reinterpret_cast<char *>(Base::Data) + size; | 440 | 195k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getExtraLocalData() const Line | Count | Source | 435 | 107M | void *getExtraLocalData() const { | 436 | 107M | unsigned size = sizeof(LocalData); | 437 | 107M | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 438 | 107M | size = llvm::alignTo(size, extraAlign); | 439 | 107M | return reinterpret_cast<char *>(Base::Data) + size; | 440 | 107M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getExtraLocalData() const Line | Count | Source | 435 | 31.7M | void *getExtraLocalData() const { | 436 | 31.7M | unsigned size = sizeof(LocalData); | 437 | 31.7M | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 438 | 31.7M | size = llvm::alignTo(size, extraAlign); | 439 | 31.7M | return reinterpret_cast<char *>(Base::Data) + size; | 440 | 31.7M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getExtraLocalData() const Line | Count | Source | 435 | 225k | void *getExtraLocalData() const { | 436 | 225k | unsigned size = sizeof(LocalData); | 437 | 225k | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 438 | 225k | size = llvm::alignTo(size, extraAlign); | 439 | 225k | return reinterpret_cast<char *>(Base::Data) + size; | 440 | 225k | } |
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getExtraLocalData() const Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getExtraLocalData() const clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getExtraLocalData() const Line | Count | Source | 435 | 2 | void *getExtraLocalData() const { | 436 | 2 | unsigned size = sizeof(LocalData); | 437 | 2 | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 438 | 2 | size = llvm::alignTo(size, extraAlign); | 439 | 2 | return reinterpret_cast<char *>(Base::Data) + size; | 440 | 2 | } |
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getExtraLocalData() const Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getExtraLocalData() const clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getExtraLocalData() const Line | Count | Source | 435 | 988 | void *getExtraLocalData() const { | 436 | 988 | unsigned size = sizeof(LocalData); | 437 | 988 | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 438 | 988 | size = llvm::alignTo(size, extraAlign); | 439 | 988 | return reinterpret_cast<char *>(Base::Data) + size; | 440 | 988 | } |
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getExtraLocalData() const Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::getExtraLocalData() const Unexecuted instantiation: clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getExtraLocalData() const Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getExtraLocalData() const Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getExtraLocalData() const Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getExtraLocalData() const Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getExtraLocalData() const Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getExtraLocalData() const Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getExtraLocalData() const Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getExtraLocalData() const Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getExtraLocalData() const clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getExtraLocalData() const Line | Count | Source | 435 | 38 | void *getExtraLocalData() const { | 436 | 38 | unsigned size = sizeof(LocalData); | 437 | 38 | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 438 | 38 | size = llvm::alignTo(size, extraAlign); | 439 | 38 | return reinterpret_cast<char *>(Base::Data) + size; | 440 | 38 | } |
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getExtraLocalData() const Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getExtraLocalData() const clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getExtraLocalData() const Line | Count | Source | 435 | 14 | void *getExtraLocalData() const { | 436 | 14 | unsigned size = sizeof(LocalData); | 437 | 14 | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 438 | 14 | size = llvm::alignTo(size, extraAlign); | 439 | 14 | return reinterpret_cast<char *>(Base::Data) + size; | 440 | 14 | } |
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getExtraLocalData() const clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getExtraLocalData() const Line | Count | Source | 435 | 252 | void *getExtraLocalData() const { | 436 | 252 | unsigned size = sizeof(LocalData); | 437 | 252 | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 438 | 252 | size = llvm::alignTo(size, extraAlign); | 439 | 252 | return reinterpret_cast<char *>(Base::Data) + size; | 440 | 252 | } |
Unexecuted instantiation: clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getExtraLocalData() const clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getExtraLocalData() const Line | Count | Source | 435 | 2 | void *getExtraLocalData() const { | 436 | 2 | unsigned size = sizeof(LocalData); | 437 | 2 | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 438 | 2 | size = llvm::alignTo(size, extraAlign); | 439 | 2 | return reinterpret_cast<char *>(Base::Data) + size; | 440 | 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 clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getExtraLocalData() const Line | Count | Source | 435 | 4 | void *getExtraLocalData() const { | 436 | 4 | unsigned size = sizeof(LocalData); | 437 | 4 | unsigned extraAlign = asDerived()->getExtraLocalDataAlignment(); | 438 | 4 | size = llvm::alignTo(size, extraAlign); | 439 | 4 | return reinterpret_cast<char *>(Base::Data) + size; | 440 | 4 | } |
|
441 | | |
442 | 499M | void *getNonLocalData() const { |
443 | 499M | auto data = reinterpret_cast<uintptr_t>(Base::Data); |
444 | 499M | data += asDerived()->getLocalDataSize(); |
445 | 499M | data = llvm::alignTo(data, getNextTypeAlign()); |
446 | 499M | return reinterpret_cast<void*>(data); |
447 | 499M | } clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNonLocalData() const Line | Count | Source | 442 | 7.47M | void *getNonLocalData() const { | 443 | 7.47M | auto data = reinterpret_cast<uintptr_t>(Base::Data); | 444 | 7.47M | data += asDerived()->getLocalDataSize(); | 445 | 7.47M | data = llvm::alignTo(data, getNextTypeAlign()); | 446 | 7.47M | return reinterpret_cast<void*>(data); | 447 | 7.47M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getNonLocalData() const Line | Count | Source | 442 | 160 | void *getNonLocalData() const { | 443 | 160 | auto data = reinterpret_cast<uintptr_t>(Base::Data); | 444 | 160 | data += asDerived()->getLocalDataSize(); | 445 | 160 | data = llvm::alignTo(data, getNextTypeAlign()); | 446 | 160 | return reinterpret_cast<void*>(data); | 447 | 160 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNonLocalData() const Line | Count | Source | 442 | 1.08M | void *getNonLocalData() const { | 443 | 1.08M | auto data = reinterpret_cast<uintptr_t>(Base::Data); | 444 | 1.08M | data += asDerived()->getLocalDataSize(); | 445 | 1.08M | data = llvm::alignTo(data, getNextTypeAlign()); | 446 | 1.08M | return reinterpret_cast<void*>(data); | 447 | 1.08M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getNonLocalData() const Line | Count | Source | 442 | 500k | void *getNonLocalData() const { | 443 | 500k | auto data = reinterpret_cast<uintptr_t>(Base::Data); | 444 | 500k | data += asDerived()->getLocalDataSize(); | 445 | 500k | data = llvm::alignTo(data, getNextTypeAlign()); | 446 | 500k | return reinterpret_cast<void*>(data); | 447 | 500k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNonLocalData() const Line | Count | Source | 442 | 1.11M | void *getNonLocalData() const { | 443 | 1.11M | auto data = reinterpret_cast<uintptr_t>(Base::Data); | 444 | 1.11M | data += asDerived()->getLocalDataSize(); | 445 | 1.11M | data = llvm::alignTo(data, getNextTypeAlign()); | 446 | 1.11M | return reinterpret_cast<void*>(data); | 447 | 1.11M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNonLocalData() const Line | Count | Source | 442 | 19.4k | void *getNonLocalData() const { | 443 | 19.4k | auto data = reinterpret_cast<uintptr_t>(Base::Data); | 444 | 19.4k | data += asDerived()->getLocalDataSize(); | 445 | 19.4k | data = llvm::alignTo(data, getNextTypeAlign()); | 446 | 19.4k | return reinterpret_cast<void*>(data); | 447 | 19.4k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNonLocalData() const Line | Count | Source | 442 | 89.2M | void *getNonLocalData() const { | 443 | 89.2M | auto data = reinterpret_cast<uintptr_t>(Base::Data); | 444 | 89.2M | data += asDerived()->getLocalDataSize(); | 445 | 89.2M | data = llvm::alignTo(data, getNextTypeAlign()); | 446 | 89.2M | return reinterpret_cast<void*>(data); | 447 | 89.2M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNonLocalData() const Line | Count | Source | 442 | 1.31M | void *getNonLocalData() const { | 443 | 1.31M | auto data = reinterpret_cast<uintptr_t>(Base::Data); | 444 | 1.31M | data += asDerived()->getLocalDataSize(); | 445 | 1.31M | data = llvm::alignTo(data, getNextTypeAlign()); | 446 | 1.31M | return reinterpret_cast<void*>(data); | 447 | 1.31M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNonLocalData() const Line | Count | Source | 442 | 227 | void *getNonLocalData() const { | 443 | 227 | auto data = reinterpret_cast<uintptr_t>(Base::Data); | 444 | 227 | data += asDerived()->getLocalDataSize(); | 445 | 227 | data = llvm::alignTo(data, getNextTypeAlign()); | 446 | 227 | return reinterpret_cast<void*>(data); | 447 | 227 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getNonLocalData() const Line | Count | Source | 442 | 328k | void *getNonLocalData() const { | 443 | 328k | auto data = reinterpret_cast<uintptr_t>(Base::Data); | 444 | 328k | data += asDerived()->getLocalDataSize(); | 445 | 328k | data = llvm::alignTo(data, getNextTypeAlign()); | 446 | 328k | return reinterpret_cast<void*>(data); | 447 | 328k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getNonLocalData() const Line | Count | Source | 442 | 474 | void *getNonLocalData() const { | 443 | 474 | auto data = reinterpret_cast<uintptr_t>(Base::Data); | 444 | 474 | data += asDerived()->getLocalDataSize(); | 445 | 474 | data = llvm::alignTo(data, getNextTypeAlign()); | 446 | 474 | return reinterpret_cast<void*>(data); | 447 | 474 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getNonLocalData() const Line | Count | Source | 442 | 6.76k | void *getNonLocalData() const { | 443 | 6.76k | auto data = reinterpret_cast<uintptr_t>(Base::Data); | 444 | 6.76k | data += asDerived()->getLocalDataSize(); | 445 | 6.76k | data = llvm::alignTo(data, getNextTypeAlign()); | 446 | 6.76k | return reinterpret_cast<void*>(data); | 447 | 6.76k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNonLocalData() const Line | Count | Source | 442 | 348M | void *getNonLocalData() const { | 443 | 348M | auto data = reinterpret_cast<uintptr_t>(Base::Data); | 444 | 348M | data += asDerived()->getLocalDataSize(); | 445 | 348M | data = llvm::alignTo(data, getNextTypeAlign()); | 446 | 348M | return reinterpret_cast<void*>(data); | 447 | 348M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNonLocalData() const Line | Count | Source | 442 | 1.99M | void *getNonLocalData() const { | 443 | 1.99M | auto data = reinterpret_cast<uintptr_t>(Base::Data); | 444 | 1.99M | data += asDerived()->getLocalDataSize(); | 445 | 1.99M | data = llvm::alignTo(data, getNextTypeAlign()); | 446 | 1.99M | return reinterpret_cast<void*>(data); | 447 | 1.99M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNonLocalData() const Line | Count | Source | 442 | 40.8k | void *getNonLocalData() const { | 443 | 40.8k | auto data = reinterpret_cast<uintptr_t>(Base::Data); | 444 | 40.8k | data += asDerived()->getLocalDataSize(); | 445 | 40.8k | data = llvm::alignTo(data, getNextTypeAlign()); | 446 | 40.8k | return reinterpret_cast<void*>(data); | 447 | 40.8k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNonLocalData() const Line | Count | Source | 442 | 545 | void *getNonLocalData() const { | 443 | 545 | auto data = reinterpret_cast<uintptr_t>(Base::Data); | 444 | 545 | data += asDerived()->getLocalDataSize(); | 445 | 545 | data = llvm::alignTo(data, getNextTypeAlign()); | 446 | 545 | return reinterpret_cast<void*>(data); | 447 | 545 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNonLocalData() const Line | Count | Source | 442 | 161k | void *getNonLocalData() const { | 443 | 161k | auto data = reinterpret_cast<uintptr_t>(Base::Data); | 444 | 161k | data += asDerived()->getLocalDataSize(); | 445 | 161k | data = llvm::alignTo(data, getNextTypeAlign()); | 446 | 161k | return reinterpret_cast<void*>(data); | 447 | 161k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNonLocalData() const Line | Count | Source | 442 | 229k | void *getNonLocalData() const { | 443 | 229k | auto data = reinterpret_cast<uintptr_t>(Base::Data); | 444 | 229k | data += asDerived()->getLocalDataSize(); | 445 | 229k | data = llvm::alignTo(data, getNextTypeAlign()); | 446 | 229k | return reinterpret_cast<void*>(data); | 447 | 229k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNonLocalData() const Line | Count | Source | 442 | 3.14M | void *getNonLocalData() const { | 443 | 3.14M | auto data = reinterpret_cast<uintptr_t>(Base::Data); | 444 | 3.14M | data += asDerived()->getLocalDataSize(); | 445 | 3.14M | data = llvm::alignTo(data, getNextTypeAlign()); | 446 | 3.14M | return reinterpret_cast<void*>(data); | 447 | 3.14M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNonLocalData() const Line | Count | Source | 442 | 25.3M | void *getNonLocalData() const { | 443 | 25.3M | auto data = reinterpret_cast<uintptr_t>(Base::Data); | 444 | 25.3M | data += asDerived()->getLocalDataSize(); | 445 | 25.3M | data = llvm::alignTo(data, getNextTypeAlign()); | 446 | 25.3M | return reinterpret_cast<void*>(data); | 447 | 25.3M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNonLocalData() const Line | Count | Source | 442 | 19.2M | void *getNonLocalData() const { | 443 | 19.2M | auto data = reinterpret_cast<uintptr_t>(Base::Data); | 444 | 19.2M | data += asDerived()->getLocalDataSize(); | 445 | 19.2M | data = llvm::alignTo(data, getNextTypeAlign()); | 446 | 19.2M | return reinterpret_cast<void*>(data); | 447 | 19.2M | } |
|
448 | | |
449 | | struct HasNoInnerType {}; |
450 | 459M | HasNoInnerType getInnerType() const { return HasNoInnerType(); } clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeSpecTypeLoc, clang::Type, clang::TypeSpecLocInfo>::getInnerType() const Line | Count | Source | 450 | 287M | HasNoInnerType getInnerType() const { return HasNoInnerType(); } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BuiltinTypeLoc, clang::BuiltinType, clang::BuiltinLocInfo>::getInnerType() const Line | Count | Source | 450 | 37.0M | HasNoInnerType getInnerType() const { return HasNoInnerType(); } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::getInnerType() const Line | Count | Source | 450 | 1.50M | HasNoInnerType getInnerType() const { return HasNoInnerType(); } |
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getInnerType() const Line | Count | Source | 450 | 1.03M | HasNoInnerType getInnerType() const { return HasNoInnerType(); } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentNameTypeLoc, clang::DependentNameType, clang::DependentNameLocInfo>::getInnerType() const Line | Count | Source | 450 | 10.5M | HasNoInnerType getInnerType() const { return HasNoInnerType(); } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentTemplateSpecializationTypeLoc, clang::DependentTemplateSpecializationType, clang::DependentTemplateSpecializationLocInfo>::getInnerType() const Line | Count | Source | 450 | 385k | HasNoInnerType getInnerType() const { return HasNoInnerType(); } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getInnerType() const Line | Count | Source | 450 | 2.92k | HasNoInnerType getInnerType() const { return HasNoInnerType(); } |
clang::ConcreteTypeLoc<clang::ObjCObjectTypeLoc, clang::ObjCInterfaceTypeLoc, clang::ObjCInterfaceType, clang::ObjCInterfaceLocInfo>::getInnerType() const Line | Count | Source | 450 | 2.97M | HasNoInnerType getInnerType() const { return HasNoInnerType(); } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCTypeParamTypeLoc, clang::ObjCTypeParamType, clang::ObjCTypeParamTypeLocInfo>::getInnerType() const Line | Count | Source | 450 | 287k | HasNoInnerType getInnerType() const { return HasNoInnerType(); } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TemplateSpecializationTypeLoc, clang::TemplateSpecializationType, clang::TemplateSpecializationLocInfo>::getInnerType() const Line | Count | Source | 450 | 115M | HasNoInnerType getInnerType() const { return HasNoInnerType(); } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getInnerType() const Line | Count | Source | 450 | 8.31k | HasNoInnerType getInnerType() const { return HasNoInnerType(); } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getInnerType() const Line | Count | Source | 450 | 246 | HasNoInnerType getInnerType() const { return HasNoInnerType(); } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::UnaryTransformTypeLoc, clang::UnaryTransformType, clang::UnaryTransformTypeLocInfo>::getInnerType() const Line | Count | Source | 450 | 2.70M | HasNoInnerType getInnerType() const { return HasNoInnerType(); } |
|
451 | | |
452 | 14.2M | TypeLoc getInnerTypeLoc() const { |
453 | 14.2M | return TypeLoc(asDerived()->getInnerType(), getNonLocalData()); |
454 | 14.2M | } clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getInnerTypeLoc() const Line | Count | Source | 452 | 1.76M | TypeLoc getInnerTypeLoc() const { | 453 | 1.76M | return TypeLoc(asDerived()->getInnerType(), getNonLocalData()); | 454 | 1.76M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getInnerTypeLoc() const Line | Count | Source | 452 | 37 | TypeLoc getInnerTypeLoc() const { | 453 | 37 | return TypeLoc(asDerived()->getInnerType(), getNonLocalData()); | 454 | 37 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getInnerTypeLoc() const Line | Count | Source | 452 | 157k | TypeLoc getInnerTypeLoc() const { | 453 | 157k | return TypeLoc(asDerived()->getInnerType(), getNonLocalData()); | 454 | 157k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getInnerTypeLoc() const Line | Count | Source | 452 | 157k | TypeLoc getInnerTypeLoc() const { | 453 | 157k | return TypeLoc(asDerived()->getInnerType(), getNonLocalData()); | 454 | 157k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getInnerTypeLoc() const Line | Count | Source | 452 | 42.9k | TypeLoc getInnerTypeLoc() const { | 453 | 42.9k | return TypeLoc(asDerived()->getInnerType(), getNonLocalData()); | 454 | 42.9k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getInnerTypeLoc() const Line | Count | Source | 452 | 2.15k | TypeLoc getInnerTypeLoc() const { | 453 | 2.15k | return TypeLoc(asDerived()->getInnerType(), getNonLocalData()); | 454 | 2.15k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getInnerTypeLoc() const Line | Count | Source | 452 | 1.88M | TypeLoc getInnerTypeLoc() const { | 453 | 1.88M | return TypeLoc(asDerived()->getInnerType(), getNonLocalData()); | 454 | 1.88M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getInnerTypeLoc() const Line | Count | Source | 452 | 49.6k | TypeLoc getInnerTypeLoc() const { | 453 | 49.6k | return TypeLoc(asDerived()->getInnerType(), getNonLocalData()); | 454 | 49.6k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getInnerTypeLoc() const Line | Count | Source | 452 | 1 | TypeLoc getInnerTypeLoc() const { | 453 | 1 | return TypeLoc(asDerived()->getInnerType(), getNonLocalData()); | 454 | 1 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getInnerTypeLoc() const Line | Count | Source | 452 | 4 | TypeLoc getInnerTypeLoc() const { | 453 | 4 | return TypeLoc(asDerived()->getInnerType(), getNonLocalData()); | 454 | 4 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getInnerTypeLoc() const Line | Count | Source | 452 | 106 | TypeLoc getInnerTypeLoc() const { | 453 | 106 | return TypeLoc(asDerived()->getInnerType(), getNonLocalData()); | 454 | 106 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getInnerTypeLoc() const Line | Count | Source | 452 | 1.26k | TypeLoc getInnerTypeLoc() const { | 453 | 1.26k | return TypeLoc(asDerived()->getInnerType(), getNonLocalData()); | 454 | 1.26k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getInnerTypeLoc() const Line | Count | Source | 452 | 6.51M | TypeLoc getInnerTypeLoc() const { | 453 | 6.51M | return TypeLoc(asDerived()->getInnerType(), getNonLocalData()); | 454 | 6.51M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getInnerTypeLoc() const Line | Count | Source | 452 | 391k | TypeLoc getInnerTypeLoc() const { | 453 | 391k | return TypeLoc(asDerived()->getInnerType(), getNonLocalData()); | 454 | 391k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getInnerTypeLoc() const Line | Count | Source | 452 | 4.79k | TypeLoc getInnerTypeLoc() const { | 453 | 4.79k | return TypeLoc(asDerived()->getInnerType(), getNonLocalData()); | 454 | 4.79k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getInnerTypeLoc() const Line | Count | Source | 452 | 2 | TypeLoc getInnerTypeLoc() const { | 453 | 2 | return TypeLoc(asDerived()->getInnerType(), getNonLocalData()); | 454 | 2 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getInnerTypeLoc() const Line | Count | Source | 452 | 1.48k | TypeLoc getInnerTypeLoc() const { | 453 | 1.48k | return TypeLoc(asDerived()->getInnerType(), getNonLocalData()); | 454 | 1.48k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getInnerTypeLoc() const Line | Count | Source | 452 | 2.06k | TypeLoc getInnerTypeLoc() const { | 453 | 2.06k | return TypeLoc(asDerived()->getInnerType(), getNonLocalData()); | 454 | 2.06k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getInnerTypeLoc() const Line | Count | Source | 452 | 48.8k | TypeLoc getInnerTypeLoc() const { | 453 | 48.8k | return TypeLoc(asDerived()->getInnerType(), getNonLocalData()); | 454 | 48.8k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getInnerTypeLoc() const Line | Count | Source | 452 | 1.26M | TypeLoc getInnerTypeLoc() const { | 453 | 1.26M | return TypeLoc(asDerived()->getInnerType(), getNonLocalData()); | 454 | 1.26M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getInnerTypeLoc() const Line | Count | Source | 452 | 1.92M | TypeLoc getInnerTypeLoc() const { | 453 | 1.92M | return TypeLoc(asDerived()->getInnerType(), getNonLocalData()); | 454 | 1.92M | } |
|
455 | | |
456 | | private: |
457 | | unsigned getInnerTypeSize() const { |
458 | | return getInnerTypeSize(asDerived()->getInnerType()); |
459 | | } |
460 | | |
461 | | unsigned getInnerTypeSize(HasNoInnerType _) const { |
462 | | return 0; |
463 | | } |
464 | | |
465 | | unsigned getInnerTypeSize(QualType _) const { |
466 | | return getInnerTypeLoc().getFullDataSize(); |
467 | | } |
468 | | |
469 | 499M | unsigned getNextTypeAlign() const { |
470 | 499M | return getNextTypeAlign(asDerived()->getInnerType()); |
471 | 499M | } clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNextTypeAlign() const Line | Count | Source | 469 | 7.47M | unsigned getNextTypeAlign() const { | 470 | 7.47M | return getNextTypeAlign(asDerived()->getInnerType()); | 471 | 7.47M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getNextTypeAlign() const Line | Count | Source | 469 | 160 | unsigned getNextTypeAlign() const { | 470 | 160 | return getNextTypeAlign(asDerived()->getInnerType()); | 471 | 160 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNextTypeAlign() const Line | Count | Source | 469 | 1.08M | unsigned getNextTypeAlign() const { | 470 | 1.08M | return getNextTypeAlign(asDerived()->getInnerType()); | 471 | 1.08M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getNextTypeAlign() const Line | Count | Source | 469 | 500k | unsigned getNextTypeAlign() const { | 470 | 500k | return getNextTypeAlign(asDerived()->getInnerType()); | 471 | 500k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNextTypeAlign() const Line | Count | Source | 469 | 1.11M | unsigned getNextTypeAlign() const { | 470 | 1.11M | return getNextTypeAlign(asDerived()->getInnerType()); | 471 | 1.11M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNextTypeAlign() const Line | Count | Source | 469 | 19.4k | unsigned getNextTypeAlign() const { | 470 | 19.4k | return getNextTypeAlign(asDerived()->getInnerType()); | 471 | 19.4k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNextTypeAlign() const Line | Count | Source | 469 | 89.2M | unsigned getNextTypeAlign() const { | 470 | 89.2M | return getNextTypeAlign(asDerived()->getInnerType()); | 471 | 89.2M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNextTypeAlign() const Line | Count | Source | 469 | 1.31M | unsigned getNextTypeAlign() const { | 470 | 1.31M | return getNextTypeAlign(asDerived()->getInnerType()); | 471 | 1.31M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNextTypeAlign() const Line | Count | Source | 469 | 227 | unsigned getNextTypeAlign() const { | 470 | 227 | return getNextTypeAlign(asDerived()->getInnerType()); | 471 | 227 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getNextTypeAlign() const Line | Count | Source | 469 | 328k | unsigned getNextTypeAlign() const { | 470 | 328k | return getNextTypeAlign(asDerived()->getInnerType()); | 471 | 328k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getNextTypeAlign() const Line | Count | Source | 469 | 474 | unsigned getNextTypeAlign() const { | 470 | 474 | return getNextTypeAlign(asDerived()->getInnerType()); | 471 | 474 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getNextTypeAlign() const Line | Count | Source | 469 | 6.76k | unsigned getNextTypeAlign() const { | 470 | 6.76k | return getNextTypeAlign(asDerived()->getInnerType()); | 471 | 6.76k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNextTypeAlign() const Line | Count | Source | 469 | 348M | unsigned getNextTypeAlign() const { | 470 | 348M | return getNextTypeAlign(asDerived()->getInnerType()); | 471 | 348M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNextTypeAlign() const Line | Count | Source | 469 | 1.99M | unsigned getNextTypeAlign() const { | 470 | 1.99M | return getNextTypeAlign(asDerived()->getInnerType()); | 471 | 1.99M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNextTypeAlign() const Line | Count | Source | 469 | 40.8k | unsigned getNextTypeAlign() const { | 470 | 40.8k | return getNextTypeAlign(asDerived()->getInnerType()); | 471 | 40.8k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNextTypeAlign() const Line | Count | Source | 469 | 545 | unsigned getNextTypeAlign() const { | 470 | 545 | return getNextTypeAlign(asDerived()->getInnerType()); | 471 | 545 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNextTypeAlign() const Line | Count | Source | 469 | 161k | unsigned getNextTypeAlign() const { | 470 | 161k | return getNextTypeAlign(asDerived()->getInnerType()); | 471 | 161k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNextTypeAlign() const Line | Count | Source | 469 | 229k | unsigned getNextTypeAlign() const { | 470 | 229k | return getNextTypeAlign(asDerived()->getInnerType()); | 471 | 229k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNextTypeAlign() const Line | Count | Source | 469 | 3.14M | unsigned getNextTypeAlign() const { | 470 | 3.14M | return getNextTypeAlign(asDerived()->getInnerType()); | 471 | 3.14M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNextTypeAlign() const Line | Count | Source | 469 | 25.3M | unsigned getNextTypeAlign() const { | 470 | 25.3M | return getNextTypeAlign(asDerived()->getInnerType()); | 471 | 25.3M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNextTypeAlign() const Line | Count | Source | 469 | 19.2M | unsigned getNextTypeAlign() const { | 470 | 19.2M | return getNextTypeAlign(asDerived()->getInnerType()); | 471 | 19.2M | } |
|
472 | | |
473 | | unsigned getNextTypeAlign(HasNoInnerType _) const { |
474 | | return 1; |
475 | | } |
476 | | |
477 | 499M | unsigned getNextTypeAlign(QualType T) const { |
478 | 499M | return TypeLoc::getLocalAlignmentForType(T); |
479 | 499M | } clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNextTypeAlign(clang::QualType) const Line | Count | Source | 477 | 7.47M | unsigned getNextTypeAlign(QualType T) const { | 478 | 7.47M | return TypeLoc::getLocalAlignmentForType(T); | 479 | 7.47M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getNextTypeAlign(clang::QualType) const Line | Count | Source | 477 | 160 | unsigned getNextTypeAlign(QualType T) const { | 478 | 160 | return TypeLoc::getLocalAlignmentForType(T); | 479 | 160 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNextTypeAlign(clang::QualType) const Line | Count | Source | 477 | 1.08M | unsigned getNextTypeAlign(QualType T) const { | 478 | 1.08M | return TypeLoc::getLocalAlignmentForType(T); | 479 | 1.08M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getNextTypeAlign(clang::QualType) const Line | Count | Source | 477 | 500k | unsigned getNextTypeAlign(QualType T) const { | 478 | 500k | return TypeLoc::getLocalAlignmentForType(T); | 479 | 500k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNextTypeAlign(clang::QualType) const Line | Count | Source | 477 | 1.11M | unsigned getNextTypeAlign(QualType T) const { | 478 | 1.11M | return TypeLoc::getLocalAlignmentForType(T); | 479 | 1.11M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNextTypeAlign(clang::QualType) const Line | Count | Source | 477 | 19.4k | unsigned getNextTypeAlign(QualType T) const { | 478 | 19.4k | return TypeLoc::getLocalAlignmentForType(T); | 479 | 19.4k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNextTypeAlign(clang::QualType) const Line | Count | Source | 477 | 89.2M | unsigned getNextTypeAlign(QualType T) const { | 478 | 89.2M | return TypeLoc::getLocalAlignmentForType(T); | 479 | 89.2M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNextTypeAlign(clang::QualType) const Line | Count | Source | 477 | 1.31M | unsigned getNextTypeAlign(QualType T) const { | 478 | 1.31M | return TypeLoc::getLocalAlignmentForType(T); | 479 | 1.31M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNextTypeAlign(clang::QualType) const Line | Count | Source | 477 | 227 | unsigned getNextTypeAlign(QualType T) const { | 478 | 227 | return TypeLoc::getLocalAlignmentForType(T); | 479 | 227 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getNextTypeAlign(clang::QualType) const Line | Count | Source | 477 | 328k | unsigned getNextTypeAlign(QualType T) const { | 478 | 328k | return TypeLoc::getLocalAlignmentForType(T); | 479 | 328k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getNextTypeAlign(clang::QualType) const Line | Count | Source | 477 | 474 | unsigned getNextTypeAlign(QualType T) const { | 478 | 474 | return TypeLoc::getLocalAlignmentForType(T); | 479 | 474 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getNextTypeAlign(clang::QualType) const Line | Count | Source | 477 | 6.76k | unsigned getNextTypeAlign(QualType T) const { | 478 | 6.76k | return TypeLoc::getLocalAlignmentForType(T); | 479 | 6.76k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNextTypeAlign(clang::QualType) const Line | Count | Source | 477 | 348M | unsigned getNextTypeAlign(QualType T) const { | 478 | 348M | return TypeLoc::getLocalAlignmentForType(T); | 479 | 348M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNextTypeAlign(clang::QualType) const Line | Count | Source | 477 | 1.99M | unsigned getNextTypeAlign(QualType T) const { | 478 | 1.99M | return TypeLoc::getLocalAlignmentForType(T); | 479 | 1.99M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNextTypeAlign(clang::QualType) const Line | Count | Source | 477 | 40.8k | unsigned getNextTypeAlign(QualType T) const { | 478 | 40.8k | return TypeLoc::getLocalAlignmentForType(T); | 479 | 40.8k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNextTypeAlign(clang::QualType) const Line | Count | Source | 477 | 545 | unsigned getNextTypeAlign(QualType T) const { | 478 | 545 | return TypeLoc::getLocalAlignmentForType(T); | 479 | 545 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNextTypeAlign(clang::QualType) const Line | Count | Source | 477 | 161k | unsigned getNextTypeAlign(QualType T) const { | 478 | 161k | return TypeLoc::getLocalAlignmentForType(T); | 479 | 161k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNextTypeAlign(clang::QualType) const Line | Count | Source | 477 | 229k | unsigned getNextTypeAlign(QualType T) const { | 478 | 229k | return TypeLoc::getLocalAlignmentForType(T); | 479 | 229k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNextTypeAlign(clang::QualType) const Line | Count | Source | 477 | 3.14M | unsigned getNextTypeAlign(QualType T) const { | 478 | 3.14M | return TypeLoc::getLocalAlignmentForType(T); | 479 | 3.14M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNextTypeAlign(clang::QualType) const Line | Count | Source | 477 | 25.3M | unsigned getNextTypeAlign(QualType T) const { | 478 | 25.3M | return TypeLoc::getLocalAlignmentForType(T); | 479 | 25.3M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNextTypeAlign(clang::QualType) const Line | Count | Source | 477 | 19.2M | unsigned getNextTypeAlign(QualType T) const { | 478 | 19.2M | return TypeLoc::getLocalAlignmentForType(T); | 479 | 19.2M | } |
|
480 | | |
481 | 459M | 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 | 481 | 287M | 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 | 481 | 37.0M | TypeLoc getNextTypeLoc(HasNoInnerType _) const { return {}; } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::getNextTypeLoc(clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DecltypeTypeLoc, clang::DecltypeType, clang::DecltypeTypeLocInfo>::HasNoInnerType) const Line | Count | Source | 481 | 1.50M | TypeLoc getNextTypeLoc(HasNoInnerType _) const { return {}; } |
clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::getNextTypeLoc(clang::ConcreteTypeLoc<clang::DeducedTypeLoc, clang::AutoTypeLoc, clang::AutoType, clang::AutoTypeLocInfo>::HasNoInnerType) const Line | Count | Source | 481 | 1.03M | 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 | 481 | 10.5M | 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 | 481 | 385k | TypeLoc getNextTypeLoc(HasNoInnerType _) const { return {}; } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::getNextTypeLoc(clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MatrixTypeLoc, clang::MatrixType, clang::MatrixTypeLocInfo>::HasNoInnerType) const Line | Count | Source | 481 | 2.92k | 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 | 481 | 2.97M | 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 | 481 | 287k | 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 | 481 | 115M | 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 | 481 | 8.31k | 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 | 481 | 246 | 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 | 481 | 2.70M | TypeLoc getNextTypeLoc(HasNoInnerType _) const { return {}; } |
|
482 | | |
483 | 485M | TypeLoc getNextTypeLoc(QualType T) const { |
484 | 485M | return TypeLoc(T, getNonLocalData()); |
485 | 485M | } clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AdjustedTypeLoc, clang::AdjustedType, clang::AdjustedLocInfo>::getNextTypeLoc(clang::QualType) const Line | Count | Source | 483 | 17.2k | TypeLoc getNextTypeLoc(QualType T) const { | 484 | 17.2k | return TypeLoc(T, getNonLocalData()); | 485 | 17.2k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ArrayTypeLoc, clang::ArrayType, clang::ArrayLocInfo>::getNextTypeLoc(clang::QualType) const Line | Count | Source | 483 | 1.26M | TypeLoc getNextTypeLoc(QualType T) const { | 484 | 1.26M | return TypeLoc(T, getNonLocalData()); | 485 | 1.26M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AtomicTypeLoc, clang::AtomicType, clang::AtomicTypeLocInfo>::getNextTypeLoc(clang::QualType) const Line | Count | Source | 483 | 36.0k | TypeLoc getNextTypeLoc(QualType T) const { | 484 | 36.0k | return TypeLoc(T, getNonLocalData()); | 485 | 36.0k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::AttributedTypeLoc, clang::AttributedType, clang::AttributedLocInfo>::getNextTypeLoc(clang::QualType) const Line | Count | Source | 483 | 5.70M | TypeLoc getNextTypeLoc(QualType T) const { | 484 | 5.70M | return TypeLoc(T, getNonLocalData()); | 485 | 5.70M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BTFTagAttributedTypeLoc, clang::BTFTagAttributedType, clang::BTFTagAttributedLocInfo>::getNextTypeLoc(clang::QualType) const Line | Count | Source | 483 | 123 | TypeLoc getNextTypeLoc(QualType T) const { | 484 | 123 | return TypeLoc(T, getNonLocalData()); | 485 | 123 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getNextTypeLoc(clang::QualType) const Line | Count | Source | 483 | 160k | TypeLoc getNextTypeLoc(QualType T) const { | 484 | 160k | return TypeLoc(T, getNonLocalData()); | 485 | 160k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentAddressSpaceTypeLoc, clang::DependentAddressSpaceType, clang::DependentAddressSpaceLocInfo>::getNextTypeLoc(clang::QualType) const Line | Count | Source | 483 | 226 | TypeLoc getNextTypeLoc(QualType T) const { | 484 | 226 | return TypeLoc(T, getNonLocalData()); | 485 | 226 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentSizedExtVectorTypeLoc, clang::DependentSizedExtVectorType, clang::VectorTypeLocInfo>::getNextTypeLoc(clang::QualType) const Line | Count | Source | 483 | 5.49k | TypeLoc getNextTypeLoc(QualType T) const { | 484 | 5.49k | return TypeLoc(T, getNonLocalData()); | 485 | 5.49k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::DependentVectorTypeLoc, clang::DependentVectorType, clang::VectorTypeLocInfo>::getNextTypeLoc(clang::QualType) const Line | Count | Source | 483 | 368 | TypeLoc getNextTypeLoc(QualType T) const { | 484 | 368 | return TypeLoc(T, getNonLocalData()); | 485 | 368 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ElaboratedTypeLoc, clang::ElaboratedType, clang::ElaboratedLocInfo>::getNextTypeLoc(clang::QualType) const Line | Count | Source | 483 | 341M | TypeLoc getNextTypeLoc(QualType T) const { | 484 | 341M | return TypeLoc(T, getNonLocalData()); | 485 | 341M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::FunctionTypeLoc, clang::FunctionType, clang::FunctionLocInfo>::getNextTypeLoc(clang::QualType) const Line | Count | Source | 483 | 87.4M | TypeLoc getNextTypeLoc(QualType T) const { | 484 | 87.4M | return TypeLoc(T, getNonLocalData()); | 485 | 87.4M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MacroQualifiedTypeLoc, clang::MacroQualifiedType, clang::MacroQualifiedLocInfo>::getNextTypeLoc(clang::QualType) const Line | Count | Source | 483 | 342k | TypeLoc getNextTypeLoc(QualType T) const { | 484 | 342k | return TypeLoc(T, getNonLocalData()); | 485 | 342k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getNextTypeLoc(clang::QualType) const Line | Count | Source | 483 | 227k | TypeLoc getNextTypeLoc(QualType T) const { | 484 | 227k | return TypeLoc(T, getNonLocalData()); | 485 | 227k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getNextTypeLoc(clang::QualType) const Line | Count | Source | 483 | 3.09M | TypeLoc getNextTypeLoc(QualType T) const { | 484 | 3.09M | return TypeLoc(T, getNonLocalData()); | 485 | 3.09M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ObjCObjectTypeLoc, clang::ObjCObjectType, clang::ObjCObjectTypeLocInfo>::getNextTypeLoc(clang::QualType) const Line | Count | Source | 483 | 930k | TypeLoc getNextTypeLoc(QualType T) const { | 484 | 930k | return TypeLoc(T, getNonLocalData()); | 485 | 930k | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PackExpansionTypeLoc, clang::PackExpansionType, clang::PackExpansionTypeLocInfo>::getNextTypeLoc(clang::QualType) const Line | Count | Source | 483 | 1.60M | TypeLoc getNextTypeLoc(QualType T) const { | 484 | 1.60M | return TypeLoc(T, getNonLocalData()); | 485 | 1.60M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ParenTypeLoc, clang::ParenType, clang::ParenLocInfo>::getNextTypeLoc(clang::QualType) const Line | Count | Source | 483 | 1.07M | TypeLoc getNextTypeLoc(QualType T) const { | 484 | 1.07M | return TypeLoc(T, getNonLocalData()); | 485 | 1.07M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PipeTypeLoc, clang::PipeType, clang::PipeTypeLocInfo>::getNextTypeLoc(clang::QualType) const Line | Count | Source | 483 | 543 | TypeLoc getNextTypeLoc(QualType T) const { | 484 | 543 | return TypeLoc(T, getNonLocalData()); | 485 | 543 | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getNextTypeLoc(clang::QualType) const Line | Count | Source | 483 | 24.1M | TypeLoc getNextTypeLoc(QualType T) const { | 484 | 24.1M | return TypeLoc(T, getNonLocalData()); | 485 | 24.1M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getNextTypeLoc(clang::QualType) const Line | Count | Source | 483 | 17.2M | TypeLoc getNextTypeLoc(QualType T) const { | 484 | 17.2M | return TypeLoc(T, getNonLocalData()); | 485 | 17.2M | } |
clang::ConcreteTypeLoc<clang::UnqualTypeLoc, clang::VectorTypeLoc, clang::VectorType, clang::VectorTypeLocInfo>::getNextTypeLoc(clang::QualType) const Line | Count | Source | 483 | 328k | TypeLoc getNextTypeLoc(QualType T) const { | 484 | 328k | return TypeLoc(T, getNonLocalData()); | 485 | 328k | } |
|
486 | | }; |
487 | | |
488 | | /// A metaprogramming class designed for concrete subtypes of abstract |
489 | | /// types where all subtypes share equivalently-structured source |
490 | | /// information. See the note on ConcreteTypeLoc. |
491 | | template <class Base, class Derived, class TypeClass> |
492 | | class InheritingConcreteTypeLoc : public Base { |
493 | | friend class TypeLoc; |
494 | | |
495 | 1.61G | static bool classofType(const Type *Ty) { |
496 | 1.61G | return TypeClass::classof(Ty); |
497 | 1.61G | } clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TypedefTypeLoc, clang::TypedefType>::classofType(clang::Type const*) Line | Count | Source | 495 | 928M | static bool classofType(const Type *Ty) { | 496 | 928M | return TypeClass::classof(Ty); | 497 | 928M | } |
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::ConstantArrayTypeLoc, clang::ConstantArrayType>::classofType(clang::Type const*) Line | Count | Source | 495 | 2.34M | static bool classofType(const Type *Ty) { | 496 | 2.34M | return TypeClass::classof(Ty); | 497 | 2.34M | } |
clang::InheritingConcreteTypeLoc<clang::AdjustedTypeLoc, clang::DecayedTypeLoc, clang::DecayedType>::classofType(clang::Type const*) Line | Count | Source | 495 | 43.3k | static bool classofType(const Type *Ty) { | 496 | 43.3k | return TypeClass::classof(Ty); | 497 | 43.3k | } |
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::DependentSizedArrayTypeLoc, clang::DependentSizedArrayType>::classofType(clang::Type const*) Line | Count | Source | 495 | 239k | static bool classofType(const Type *Ty) { | 496 | 239k | return TypeClass::classof(Ty); | 497 | 239k | } |
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::IncompleteArrayTypeLoc, clang::IncompleteArrayType>::classofType(clang::Type const*) Line | Count | Source | 495 | 510k | static bool classofType(const Type *Ty) { | 496 | 510k | return TypeClass::classof(Ty); | 497 | 510k | } |
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::VariableArrayTypeLoc, clang::VariableArrayType>::classofType(clang::Type const*) Line | Count | Source | 495 | 127k | static bool classofType(const Type *Ty) { | 496 | 127k | return TypeClass::classof(Ty); | 497 | 127k | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::BitIntTypeLoc, clang::BitIntType>::classofType(clang::Type const*) Line | Count | Source | 495 | 11.6k | static bool classofType(const Type *Ty) { | 496 | 11.6k | return TypeClass::classof(Ty); | 497 | 11.6k | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::ComplexTypeLoc, clang::ComplexType>::classofType(clang::Type const*) Line | Count | Source | 495 | 49.7k | static bool classofType(const Type *Ty) { | 496 | 49.7k | return TypeClass::classof(Ty); | 497 | 49.7k | } |
clang::InheritingConcreteTypeLoc<clang::DeducedTypeLoc, clang::DeducedTemplateSpecializationTypeLoc, clang::DeducedTemplateSpecializationType>::classofType(clang::Type const*) Line | Count | Source | 495 | 726k | static bool classofType(const Type *Ty) { | 496 | 726k | return TypeClass::classof(Ty); | 497 | 726k | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DependentBitIntTypeLoc, clang::DependentBitIntType>::classofType(clang::Type const*) Line | Count | Source | 495 | 1.29k | static bool classofType(const Type *Ty) { | 496 | 1.29k | return TypeClass::classof(Ty); | 497 | 1.29k | } |
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionNoProtoTypeLoc, clang::FunctionNoProtoType>::classofType(clang::Type const*) Line | Count | Source | 495 | 64.2k | static bool classofType(const Type *Ty) { | 496 | 64.2k | return TypeClass::classof(Ty); | 497 | 64.2k | } |
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionProtoTypeLoc, clang::FunctionProtoType>::classofType(clang::Type const*) Line | Count | Source | 495 | 227M | static bool classofType(const Type *Ty) { | 496 | 227M | return TypeClass::classof(Ty); | 497 | 227M | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::InjectedClassNameTypeLoc, clang::InjectedClassNameType>::classofType(clang::Type const*) Line | Count | Source | 495 | 14.6M | static bool classofType(const Type *Ty) { | 496 | 14.6M | return TypeClass::classof(Ty); | 497 | 14.6M | } |
clang::InheritingConcreteTypeLoc<clang::MatrixTypeLoc, clang::ConstantMatrixTypeLoc, clang::ConstantMatrixType>::classofType(clang::Type const*) Line | Count | Source | 495 | 4.82k | static bool classofType(const Type *Ty) { | 496 | 4.82k | return TypeClass::classof(Ty); | 497 | 4.82k | } |
clang::InheritingConcreteTypeLoc<clang::MatrixTypeLoc, clang::DependentSizedMatrixTypeLoc, clang::DependentSizedMatrixType>::classofType(clang::Type const*) Line | Count | Source | 495 | 3.04k | static bool classofType(const Type *Ty) { | 496 | 3.04k | return TypeClass::classof(Ty); | 497 | 3.04k | } |
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::LValueReferenceTypeLoc, clang::LValueReferenceType>::classofType(clang::Type const*) Line | Count | Source | 495 | 37.6M | static bool classofType(const Type *Ty) { | 496 | 37.6M | return TypeClass::classof(Ty); | 497 | 37.6M | } |
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::RValueReferenceTypeLoc, clang::RValueReferenceType>::classofType(clang::Type const*) Line | Count | Source | 495 | 11.3M | static bool classofType(const Type *Ty) { | 496 | 11.3M | return TypeClass::classof(Ty); | 497 | 11.3M | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmPackTypeLoc, clang::SubstTemplateTypeParmPackType>::classofType(clang::Type const*) Line | Count | Source | 495 | 578k | static bool classofType(const Type *Ty) { | 496 | 578k | return TypeClass::classof(Ty); | 497 | 578k | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmTypeLoc, clang::SubstTemplateTypeParmType>::classofType(clang::Type const*) Line | Count | Source | 495 | 87.0M | static bool classofType(const Type *Ty) { | 496 | 87.0M | return TypeClass::classof(Ty); | 497 | 87.0M | } |
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::EnumTypeLoc, clang::EnumType>::classofType(clang::Type const*) Line | Count | Source | 495 | 5.11M | static bool classofType(const Type *Ty) { | 496 | 5.11M | return TypeClass::classof(Ty); | 497 | 5.11M | } |
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::RecordTypeLoc, clang::RecordType>::classofType(clang::Type const*) Line | Count | Source | 495 | 82.5M | static bool classofType(const Type *Ty) { | 496 | 82.5M | return TypeClass::classof(Ty); | 497 | 82.5M | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TemplateTypeParmTypeLoc, clang::TemplateTypeParmType>::classofType(clang::Type const*) Line | Count | Source | 495 | 202M | static bool classofType(const Type *Ty) { | 496 | 202M | return TypeClass::classof(Ty); | 497 | 202M | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::UnresolvedUsingTypeLoc, clang::UnresolvedUsingType>::classofType(clang::Type const*) Line | Count | Source | 495 | 4.16k | static bool classofType(const Type *Ty) { | 496 | 4.16k | return TypeClass::classof(Ty); | 497 | 4.16k | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::UsingTypeLoc, clang::UsingType>::classofType(clang::Type const*) Line | Count | Source | 495 | 6.40M | static bool classofType(const Type *Ty) { | 496 | 6.40M | return TypeClass::classof(Ty); | 497 | 6.40M | } |
clang::InheritingConcreteTypeLoc<clang::VectorTypeLoc, clang::ExtVectorTypeLoc, clang::ExtVectorType>::classofType(clang::Type const*) Line | Count | Source | 495 | 41.0k | static bool classofType(const Type *Ty) { | 496 | 41.0k | return TypeClass::classof(Ty); | 497 | 41.0k | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DeducedTypeLoc, clang::DeducedType>::classofType(clang::Type const*) Line | Count | Source | 495 | 2.06k | static bool classofType(const Type *Ty) { | 496 | 2.06k | return TypeClass::classof(Ty); | 497 | 2.06k | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TagTypeLoc, clang::TagType>::classofType(clang::Type const*) Line | Count | Source | 495 | 2.24M | static bool classofType(const Type *Ty) { | 496 | 2.24M | return TypeClass::classof(Ty); | 497 | 2.24M | } |
|
498 | | |
499 | 1.61G | static bool isKind(const TypeLoc &TL) { |
500 | 1.61G | return !TL.getType().hasLocalQualifiers() && |
501 | 1.61G | Derived::classofType(TL.getTypePtr())1.61G ; |
502 | 1.61G | } clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TypedefTypeLoc, clang::TypedefType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 928M | static bool isKind(const TypeLoc &TL) { | 500 | 928M | return !TL.getType().hasLocalQualifiers() && | 501 | 928M | Derived::classofType(TL.getTypePtr()); | 502 | 928M | } |
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::ConstantArrayTypeLoc, clang::ConstantArrayType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 2.34M | static bool isKind(const TypeLoc &TL) { | 500 | 2.34M | return !TL.getType().hasLocalQualifiers() && | 501 | 2.34M | Derived::classofType(TL.getTypePtr()); | 502 | 2.34M | } |
clang::InheritingConcreteTypeLoc<clang::AdjustedTypeLoc, clang::DecayedTypeLoc, clang::DecayedType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 43.3k | static bool isKind(const TypeLoc &TL) { | 500 | 43.3k | return !TL.getType().hasLocalQualifiers() && | 501 | 43.3k | Derived::classofType(TL.getTypePtr()); | 502 | 43.3k | } |
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::DependentSizedArrayTypeLoc, clang::DependentSizedArrayType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 239k | static bool isKind(const TypeLoc &TL) { | 500 | 239k | return !TL.getType().hasLocalQualifiers() && | 501 | 239k | Derived::classofType(TL.getTypePtr()); | 502 | 239k | } |
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::IncompleteArrayTypeLoc, clang::IncompleteArrayType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 510k | static bool isKind(const TypeLoc &TL) { | 500 | 510k | return !TL.getType().hasLocalQualifiers() && | 501 | 510k | Derived::classofType(TL.getTypePtr())510k ; | 502 | 510k | } |
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::VariableArrayTypeLoc, clang::VariableArrayType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 127k | static bool isKind(const TypeLoc &TL) { | 500 | 127k | return !TL.getType().hasLocalQualifiers() && | 501 | 127k | Derived::classofType(TL.getTypePtr())127k ; | 502 | 127k | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::BitIntTypeLoc, clang::BitIntType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 11.6k | static bool isKind(const TypeLoc &TL) { | 500 | 11.6k | return !TL.getType().hasLocalQualifiers() && | 501 | 11.6k | Derived::classofType(TL.getTypePtr()); | 502 | 11.6k | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::ComplexTypeLoc, clang::ComplexType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 49.7k | static bool isKind(const TypeLoc &TL) { | 500 | 49.7k | return !TL.getType().hasLocalQualifiers() && | 501 | 49.7k | Derived::classofType(TL.getTypePtr()); | 502 | 49.7k | } |
clang::InheritingConcreteTypeLoc<clang::DeducedTypeLoc, clang::DeducedTemplateSpecializationTypeLoc, clang::DeducedTemplateSpecializationType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 731k | static bool isKind(const TypeLoc &TL) { | 500 | 731k | return !TL.getType().hasLocalQualifiers() && | 501 | 731k | Derived::classofType(TL.getTypePtr())726k ; | 502 | 731k | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DependentBitIntTypeLoc, clang::DependentBitIntType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 1.29k | static bool isKind(const TypeLoc &TL) { | 500 | 1.29k | return !TL.getType().hasLocalQualifiers() && | 501 | 1.29k | Derived::classofType(TL.getTypePtr()); | 502 | 1.29k | } |
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionNoProtoTypeLoc, clang::FunctionNoProtoType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 64.2k | static bool isKind(const TypeLoc &TL) { | 500 | 64.2k | return !TL.getType().hasLocalQualifiers() && | 501 | 64.2k | Derived::classofType(TL.getTypePtr()); | 502 | 64.2k | } |
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionProtoTypeLoc, clang::FunctionProtoType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 227M | static bool isKind(const TypeLoc &TL) { | 500 | 227M | return !TL.getType().hasLocalQualifiers() && | 501 | 227M | Derived::classofType(TL.getTypePtr()); | 502 | 227M | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::InjectedClassNameTypeLoc, clang::InjectedClassNameType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 14.6M | static bool isKind(const TypeLoc &TL) { | 500 | 14.6M | return !TL.getType().hasLocalQualifiers() && | 501 | 14.6M | Derived::classofType(TL.getTypePtr()); | 502 | 14.6M | } |
clang::InheritingConcreteTypeLoc<clang::MatrixTypeLoc, clang::ConstantMatrixTypeLoc, clang::ConstantMatrixType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 4.82k | static bool isKind(const TypeLoc &TL) { | 500 | 4.82k | return !TL.getType().hasLocalQualifiers() && | 501 | 4.82k | Derived::classofType(TL.getTypePtr()); | 502 | 4.82k | } |
clang::InheritingConcreteTypeLoc<clang::MatrixTypeLoc, clang::DependentSizedMatrixTypeLoc, clang::DependentSizedMatrixType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 3.04k | static bool isKind(const TypeLoc &TL) { | 500 | 3.04k | return !TL.getType().hasLocalQualifiers() && | 501 | 3.04k | Derived::classofType(TL.getTypePtr()); | 502 | 3.04k | } |
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::LValueReferenceTypeLoc, clang::LValueReferenceType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 37.6M | static bool isKind(const TypeLoc &TL) { | 500 | 37.6M | return !TL.getType().hasLocalQualifiers() && | 501 | 37.6M | Derived::classofType(TL.getTypePtr()); | 502 | 37.6M | } |
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::RValueReferenceTypeLoc, clang::RValueReferenceType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 11.3M | static bool isKind(const TypeLoc &TL) { | 500 | 11.3M | return !TL.getType().hasLocalQualifiers() && | 501 | 11.3M | Derived::classofType(TL.getTypePtr()); | 502 | 11.3M | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmPackTypeLoc, clang::SubstTemplateTypeParmPackType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 578k | static bool isKind(const TypeLoc &TL) { | 500 | 578k | return !TL.getType().hasLocalQualifiers() && | 501 | 578k | Derived::classofType(TL.getTypePtr()); | 502 | 578k | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmTypeLoc, clang::SubstTemplateTypeParmType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 87.0M | static bool isKind(const TypeLoc &TL) { | 500 | 87.0M | return !TL.getType().hasLocalQualifiers() && | 501 | 87.0M | Derived::classofType(TL.getTypePtr()); | 502 | 87.0M | } |
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::EnumTypeLoc, clang::EnumType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 5.11M | static bool isKind(const TypeLoc &TL) { | 500 | 5.11M | return !TL.getType().hasLocalQualifiers() && | 501 | 5.11M | Derived::classofType(TL.getTypePtr()); | 502 | 5.11M | } |
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::RecordTypeLoc, clang::RecordType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 82.5M | static bool isKind(const TypeLoc &TL) { | 500 | 82.5M | return !TL.getType().hasLocalQualifiers() && | 501 | 82.5M | Derived::classofType(TL.getTypePtr())82.5M ; | 502 | 82.5M | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TemplateTypeParmTypeLoc, clang::TemplateTypeParmType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 202M | static bool isKind(const TypeLoc &TL) { | 500 | 202M | return !TL.getType().hasLocalQualifiers() && | 501 | 202M | Derived::classofType(TL.getTypePtr()); | 502 | 202M | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::UnresolvedUsingTypeLoc, clang::UnresolvedUsingType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 4.16k | static bool isKind(const TypeLoc &TL) { | 500 | 4.16k | return !TL.getType().hasLocalQualifiers() && | 501 | 4.16k | Derived::classofType(TL.getTypePtr()); | 502 | 4.16k | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::UsingTypeLoc, clang::UsingType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 6.40M | static bool isKind(const TypeLoc &TL) { | 500 | 6.40M | return !TL.getType().hasLocalQualifiers() && | 501 | 6.40M | Derived::classofType(TL.getTypePtr()); | 502 | 6.40M | } |
clang::InheritingConcreteTypeLoc<clang::VectorTypeLoc, clang::ExtVectorTypeLoc, clang::ExtVectorType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 41.0k | static bool isKind(const TypeLoc &TL) { | 500 | 41.0k | return !TL.getType().hasLocalQualifiers() && | 501 | 41.0k | Derived::classofType(TL.getTypePtr()); | 502 | 41.0k | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DeducedTypeLoc, clang::DeducedType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 2.06k | static bool isKind(const TypeLoc &TL) { | 500 | 2.06k | return !TL.getType().hasLocalQualifiers() && | 501 | 2.06k | Derived::classofType(TL.getTypePtr()); | 502 | 2.06k | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TagTypeLoc, clang::TagType>::isKind(clang::TypeLoc const&) Line | Count | Source | 499 | 2.24M | static bool isKind(const TypeLoc &TL) { | 500 | 2.24M | return !TL.getType().hasLocalQualifiers() && | 501 | 2.24M | Derived::classofType(TL.getTypePtr()); | 502 | 2.24M | } |
|
503 | | static bool isKind(const UnqualTypeLoc &TL) { |
504 | | return Derived::classofType(TL.getTypePtr()); |
505 | | } |
506 | | |
507 | | public: |
508 | 23.5M | const TypeClass *getTypePtr() const { |
509 | 23.5M | return cast<TypeClass>(Base::getTypePtr()); |
510 | 23.5M | } clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::UsingTypeLoc, clang::UsingType>::getTypePtr() const Line | Count | Source | 508 | 6.45k | const TypeClass *getTypePtr() const { | 509 | 6.45k | return cast<TypeClass>(Base::getTypePtr()); | 510 | 6.45k | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TypedefTypeLoc, clang::TypedefType>::getTypePtr() const Line | Count | Source | 508 | 1.94M | const TypeClass *getTypePtr() const { | 509 | 1.94M | return cast<TypeClass>(Base::getTypePtr()); | 510 | 1.94M | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::InjectedClassNameTypeLoc, clang::InjectedClassNameType>::getTypePtr() const Line | Count | Source | 508 | 823k | const TypeClass *getTypePtr() const { | 509 | 823k | return cast<TypeClass>(Base::getTypePtr()); | 510 | 823k | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::UnresolvedUsingTypeLoc, clang::UnresolvedUsingType>::getTypePtr() const Line | Count | Source | 508 | 122 | const TypeClass *getTypePtr() const { | 509 | 122 | return cast<TypeClass>(Base::getTypePtr()); | 510 | 122 | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TagTypeLoc, clang::TagType>::getTypePtr() const Line | Count | Source | 508 | 207k | const TypeClass *getTypePtr() const { | 509 | 207k | return cast<TypeClass>(Base::getTypePtr()); | 510 | 207k | } |
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::RecordTypeLoc, clang::RecordType>::getTypePtr() const Line | Count | Source | 508 | 197k | const TypeClass *getTypePtr() const { | 509 | 197k | return cast<TypeClass>(Base::getTypePtr()); | 510 | 197k | } |
clang::InheritingConcreteTypeLoc<clang::TagTypeLoc, clang::EnumTypeLoc, clang::EnumType>::getTypePtr() const Line | Count | Source | 508 | 7.72k | const TypeClass *getTypePtr() const { | 509 | 7.72k | return cast<TypeClass>(Base::getTypePtr()); | 510 | 7.72k | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::TemplateTypeParmTypeLoc, clang::TemplateTypeParmType>::getTypePtr() const Line | Count | Source | 508 | 9.48M | const TypeClass *getTypePtr() const { | 509 | 9.48M | return cast<TypeClass>(Base::getTypePtr()); | 510 | 9.48M | } |
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::DependentSizedArrayTypeLoc, clang::DependentSizedArrayType>::getTypePtr() const Line | Count | Source | 508 | 13.4k | const TypeClass *getTypePtr() const { | 509 | 13.4k | return cast<TypeClass>(Base::getTypePtr()); | 510 | 13.4k | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DeducedTypeLoc, clang::DeducedType>::getTypePtr() const Line | Count | Source | 508 | 754k | const TypeClass *getTypePtr() const { | 509 | 754k | return cast<TypeClass>(Base::getTypePtr()); | 510 | 754k | } |
Unexecuted instantiation: clang::InheritingConcreteTypeLoc<clang::AdjustedTypeLoc, clang::DecayedTypeLoc, clang::DecayedType>::getTypePtr() const clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::ConstantArrayTypeLoc, clang::ConstantArrayType>::getTypePtr() const Line | Count | Source | 508 | 28.4k | const TypeClass *getTypePtr() const { | 509 | 28.4k | return cast<TypeClass>(Base::getTypePtr()); | 510 | 28.4k | } |
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::IncompleteArrayTypeLoc, clang::IncompleteArrayType>::getTypePtr() const Line | Count | Source | 508 | 6.77k | const TypeClass *getTypePtr() const { | 509 | 6.77k | return cast<TypeClass>(Base::getTypePtr()); | 510 | 6.77k | } |
clang::InheritingConcreteTypeLoc<clang::ArrayTypeLoc, clang::VariableArrayTypeLoc, clang::VariableArrayType>::getTypePtr() const Line | Count | Source | 508 | 253 | const TypeClass *getTypePtr() const { | 509 | 253 | return cast<TypeClass>(Base::getTypePtr()); | 510 | 253 | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::BitIntTypeLoc, clang::BitIntType>::getTypePtr() const Line | Count | Source | 508 | 4 | const TypeClass *getTypePtr() const { | 509 | 4 | return cast<TypeClass>(Base::getTypePtr()); | 510 | 4 | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::ComplexTypeLoc, clang::ComplexType>::getTypePtr() const Line | Count | Source | 508 | 1.71k | const TypeClass *getTypePtr() const { | 509 | 1.71k | return cast<TypeClass>(Base::getTypePtr()); | 510 | 1.71k | } |
clang::InheritingConcreteTypeLoc<clang::DeducedTypeLoc, clang::DeducedTemplateSpecializationTypeLoc, clang::DeducedTemplateSpecializationType>::getTypePtr() const Line | Count | Source | 508 | 2.71k | const TypeClass *getTypePtr() const { | 509 | 2.71k | return cast<TypeClass>(Base::getTypePtr()); | 510 | 2.71k | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::DependentBitIntTypeLoc, clang::DependentBitIntType>::getTypePtr() const Line | Count | Source | 508 | 192 | const TypeClass *getTypePtr() const { | 509 | 192 | return cast<TypeClass>(Base::getTypePtr()); | 510 | 192 | } |
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionNoProtoTypeLoc, clang::FunctionNoProtoType>::getTypePtr() const Line | Count | Source | 508 | 1.68k | const TypeClass *getTypePtr() const { | 509 | 1.68k | return cast<TypeClass>(Base::getTypePtr()); | 510 | 1.68k | } |
clang::InheritingConcreteTypeLoc<clang::FunctionTypeLoc, clang::FunctionProtoTypeLoc, clang::FunctionProtoType>::getTypePtr() const Line | Count | Source | 508 | 9.76M | const TypeClass *getTypePtr() const { | 509 | 9.76M | return cast<TypeClass>(Base::getTypePtr()); | 510 | 9.76M | } |
clang::InheritingConcreteTypeLoc<clang::MatrixTypeLoc, clang::ConstantMatrixTypeLoc, clang::ConstantMatrixType>::getTypePtr() const Line | Count | Source | 508 | 146 | const TypeClass *getTypePtr() const { | 509 | 146 | return cast<TypeClass>(Base::getTypePtr()); | 510 | 146 | } |
clang::InheritingConcreteTypeLoc<clang::MatrixTypeLoc, clang::DependentSizedMatrixTypeLoc, clang::DependentSizedMatrixType>::getTypePtr() const Line | Count | Source | 508 | 245 | const TypeClass *getTypePtr() const { | 509 | 245 | return cast<TypeClass>(Base::getTypePtr()); | 510 | 245 | } |
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::LValueReferenceTypeLoc, clang::LValueReferenceType>::getTypePtr() const Line | Count | Source | 508 | 80.8k | const TypeClass *getTypePtr() const { | 509 | 80.8k | return cast<TypeClass>(Base::getTypePtr()); | 510 | 80.8k | } |
clang::InheritingConcreteTypeLoc<clang::ReferenceTypeLoc, clang::RValueReferenceTypeLoc, clang::RValueReferenceType>::getTypePtr() const Line | Count | Source | 508 | 53.8k | const TypeClass *getTypePtr() const { | 509 | 53.8k | return cast<TypeClass>(Base::getTypePtr()); | 510 | 53.8k | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmPackTypeLoc, clang::SubstTemplateTypeParmPackType>::getTypePtr() const Line | Count | Source | 508 | 1.09k | const TypeClass *getTypePtr() const { | 509 | 1.09k | return cast<TypeClass>(Base::getTypePtr()); | 510 | 1.09k | } |
clang::InheritingConcreteTypeLoc<clang::TypeSpecTypeLoc, clang::SubstTemplateTypeParmTypeLoc, clang::SubstTemplateTypeParmType>::getTypePtr() const Line | Count | Source | 508 | 116k | const TypeClass *getTypePtr() const { | 509 | 116k | return cast<TypeClass>(Base::getTypePtr()); | 510 | 116k | } |
clang::InheritingConcreteTypeLoc<clang::VectorTypeLoc, clang::ExtVectorTypeLoc, clang::ExtVectorType>::getTypePtr() const Line | Count | Source | 508 | 99 | const TypeClass *getTypePtr() const { | 509 | 99 | return cast<TypeClass>(Base::getTypePtr()); | 510 | 99 | } |
|
511 | | }; |
512 | | |
513 | | struct TypeSpecLocInfo { |
514 | | SourceLocation NameLoc; |
515 | | }; |
516 | | |
517 | | /// A reasonable base class for TypeLocs that correspond to |
518 | | /// types that are written as a type-specifier. |
519 | | class TypeSpecTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, |
520 | | TypeSpecTypeLoc, |
521 | | Type, |
522 | | TypeSpecLocInfo> { |
523 | | public: |
524 | | enum { |
525 | | LocalDataSize = sizeof(TypeSpecLocInfo), |
526 | | LocalDataAlignment = alignof(TypeSpecLocInfo) |
527 | | }; |
528 | | |
529 | 316M | SourceLocation getNameLoc() const { |
530 | 316M | return this->getLocalData()->NameLoc; |
531 | 316M | } |
532 | | |
533 | 159M | void setNameLoc(SourceLocation Loc) { |
534 | 159M | this->getLocalData()->NameLoc = Loc; |
535 | 159M | } |
536 | | |
537 | 149M | SourceRange getLocalSourceRange() const { |
538 | 149M | return SourceRange(getNameLoc(), getNameLoc()); |
539 | 149M | } |
540 | | |
541 | 14.0M | void initializeLocal(ASTContext &Context, SourceLocation Loc) { |
542 | 14.0M | setNameLoc(Loc); |
543 | 14.0M | } |
544 | | |
545 | | private: |
546 | | friend class TypeLoc; |
547 | | |
548 | | static bool isKind(const TypeLoc &TL); |
549 | | }; |
550 | | |
551 | | struct BuiltinLocInfo { |
552 | | SourceRange BuiltinRange; |
553 | | }; |
554 | | |
555 | | /// Wrapper for source info for builtin types. |
556 | | class BuiltinTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, |
557 | | BuiltinTypeLoc, |
558 | | BuiltinType, |
559 | | BuiltinLocInfo> { |
560 | | public: |
561 | 946k | SourceLocation getBuiltinLoc() const { |
562 | 946k | return getLocalData()->BuiltinRange.getBegin(); |
563 | 946k | } |
564 | | |
565 | 17.6M | void setBuiltinLoc(SourceLocation Loc) { |
566 | 17.6M | getLocalData()->BuiltinRange = Loc; |
567 | 17.6M | } |
568 | | |
569 | 1.76M | void expandBuiltinRange(SourceRange Range) { |
570 | 1.76M | SourceRange &BuiltinRange = getLocalData()->BuiltinRange; |
571 | 1.76M | if (!BuiltinRange.getBegin().isValid()) { |
572 | 758k | BuiltinRange = Range; |
573 | 1.00M | } else { |
574 | 1.00M | BuiltinRange.setBegin(std::min(Range.getBegin(), BuiltinRange.getBegin())); |
575 | 1.00M | BuiltinRange.setEnd(std::max(Range.getEnd(), BuiltinRange.getEnd())); |
576 | 1.00M | } |
577 | 1.76M | } |
578 | | |
579 | 0 | SourceLocation getNameLoc() const { return getBuiltinLoc(); } |
580 | | |
581 | 8.24M | WrittenBuiltinSpecs& getWrittenBuiltinSpecs() { |
582 | 8.24M | return *(static_cast<WrittenBuiltinSpecs*>(getExtraLocalData())); |
583 | 8.24M | } |
584 | 10.2M | const WrittenBuiltinSpecs& getWrittenBuiltinSpecs() const { |
585 | 10.2M | return *(static_cast<WrittenBuiltinSpecs*>(getExtraLocalData())); |
586 | 10.2M | } |
587 | | |
588 | 144M | bool needsExtraLocalData() const { |
589 | 144M | BuiltinType::Kind bk = getTypePtr()->getKind(); |
590 | 144M | return (bk >= BuiltinType::UShort && bk <= BuiltinType::UInt12882.0M ) || |
591 | 144M | (135M bk >= BuiltinType::Short135M && bk <= BuiltinType::Ibm12859.6M ) || |
592 | 144M | bk == BuiltinType::UChar76.8M || bk == BuiltinType::SChar75.3M ; |
593 | 144M | } |
594 | | |
595 | 23.8M | unsigned getExtraLocalDataSize() const { |
596 | 23.8M | return needsExtraLocalData() ? sizeof(WrittenBuiltinSpecs)9.05M : 014.8M ; |
597 | 23.8M | } |
598 | | |
599 | 91.3M | unsigned getExtraLocalDataAlignment() const { |
600 | 91.3M | return needsExtraLocalData() ? alignof(WrittenBuiltinSpecs)41.4M : 149.9M ; |
601 | 91.3M | } |
602 | | |
603 | 17.7M | SourceRange getLocalSourceRange() const { |
604 | 17.7M | return getLocalData()->BuiltinRange; |
605 | 17.7M | } |
606 | | |
607 | 4.90M | TypeSpecifierSign getWrittenSignSpec() const { |
608 | 4.90M | if (needsExtraLocalData()) |
609 | 4.90M | return static_cast<TypeSpecifierSign>(getWrittenBuiltinSpecs().Sign); |
610 | 0 | else |
611 | 0 | return TypeSpecifierSign::Unspecified; |
612 | 4.90M | } |
613 | | |
614 | 0 | bool hasWrittenSignSpec() const { |
615 | 0 | return getWrittenSignSpec() != TypeSpecifierSign::Unspecified; |
616 | 0 | } |
617 | | |
618 | 162k | void setWrittenSignSpec(TypeSpecifierSign written) { |
619 | 162k | if (needsExtraLocalData()) |
620 | 162k | getWrittenBuiltinSpecs().Sign = static_cast<unsigned>(written); |
621 | 162k | } |
622 | | |
623 | 4.90M | TypeSpecifierWidth getWrittenWidthSpec() const { |
624 | 4.90M | if (needsExtraLocalData()) |
625 | 4.90M | return static_cast<TypeSpecifierWidth>(getWrittenBuiltinSpecs().Width); |
626 | 0 | else |
627 | 0 | return TypeSpecifierWidth::Unspecified; |
628 | 4.90M | } |
629 | | |
630 | 0 | bool hasWrittenWidthSpec() const { |
631 | 0 | return getWrittenWidthSpec() != TypeSpecifierWidth::Unspecified; |
632 | 0 | } |
633 | | |
634 | 162k | void setWrittenWidthSpec(TypeSpecifierWidth written) { |
635 | 162k | if (needsExtraLocalData()) |
636 | 162k | getWrittenBuiltinSpecs().Width = static_cast<unsigned>(written); |
637 | 162k | } |
638 | | |
639 | | TypeSpecifierType getWrittenTypeSpec() const; |
640 | | |
641 | 0 | bool hasWrittenTypeSpec() const { |
642 | 0 | return getWrittenTypeSpec() != TST_unspecified; |
643 | 0 | } |
644 | | |
645 | 162k | void setWrittenTypeSpec(TypeSpecifierType written) { |
646 | 162k | if (needsExtraLocalData()) |
647 | 162k | getWrittenBuiltinSpecs().Type = written; |
648 | 162k | } |
649 | | |
650 | 238k | bool hasModeAttr() const { |
651 | 238k | if (needsExtraLocalData()) |
652 | 238k | return getWrittenBuiltinSpecs().ModeAttr; |
653 | 0 | else |
654 | 0 | return false; |
655 | 238k | } |
656 | | |
657 | 162k | void setModeAttr(bool written) { |
658 | 162k | if (needsExtraLocalData()) |
659 | 162k | getWrittenBuiltinSpecs().ModeAttr = written; |
660 | 162k | } |
661 | | |
662 | 4.79M | void initializeLocal(ASTContext &Context, SourceLocation Loc) { |
663 | 4.79M | setBuiltinLoc(Loc); |
664 | 4.79M | if (needsExtraLocalData()) { |
665 | 2.86M | WrittenBuiltinSpecs &wbs = getWrittenBuiltinSpecs(); |
666 | 2.86M | wbs.Sign = static_cast<unsigned>(TypeSpecifierSign::Unspecified); |
667 | 2.86M | wbs.Width = static_cast<unsigned>(TypeSpecifierWidth::Unspecified); |
668 | 2.86M | wbs.Type = TST_unspecified; |
669 | 2.86M | wbs.ModeAttr = false; |
670 | 2.86M | } |
671 | 4.79M | } |
672 | | }; |
673 | | |
674 | | /// Wrapper for source info for types used via transparent aliases. |
675 | | class UsingTypeLoc : public InheritingConcreteTypeLoc<TypeSpecTypeLoc, |
676 | | UsingTypeLoc, UsingType> { |
677 | | public: |
678 | 3 | QualType getUnderlyingType() const { |
679 | 3 | return getTypePtr()->getUnderlyingType(); |
680 | 3 | } |
681 | | UsingShadowDecl *getFoundDecl() const { return getTypePtr()->getFoundDecl(); } |
682 | | }; |
683 | | |
684 | | /// Wrapper for source info for typedefs. |
685 | | class TypedefTypeLoc : public InheritingConcreteTypeLoc<TypeSpecTypeLoc, |
686 | | TypedefTypeLoc, |
687 | | TypedefType> { |
688 | | public: |
689 | 11.2k | TypedefNameDecl *getTypedefNameDecl() const { |
690 | 11.2k | return getTypePtr()->getDecl(); |
691 | 11.2k | } |
692 | | }; |
693 | | |
694 | | /// Wrapper for source info for injected class names of class |
695 | | /// templates. |
696 | | class InjectedClassNameTypeLoc : |
697 | | public InheritingConcreteTypeLoc<TypeSpecTypeLoc, |
698 | | InjectedClassNameTypeLoc, |
699 | | InjectedClassNameType> { |
700 | | public: |
701 | 16 | CXXRecordDecl *getDecl() const { |
702 | 16 | return getTypePtr()->getDecl(); |
703 | 16 | } |
704 | | }; |
705 | | |
706 | | /// Wrapper for source info for unresolved typename using decls. |
707 | | class UnresolvedUsingTypeLoc : |
708 | | public InheritingConcreteTypeLoc<TypeSpecTypeLoc, |
709 | | UnresolvedUsingTypeLoc, |
710 | | UnresolvedUsingType> { |
711 | | public: |
712 | 0 | UnresolvedUsingTypenameDecl *getDecl() const { |
713 | 0 | return getTypePtr()->getDecl(); |
714 | 0 | } |
715 | | }; |
716 | | |
717 | | /// Wrapper for source info for tag types. Note that this only |
718 | | /// records source info for the name itself; a type written 'struct foo' |
719 | | /// should be represented as an ElaboratedTypeLoc. We currently |
720 | | /// only do that when C++ is enabled because of the expense of |
721 | | /// creating an ElaboratedType node for so many type references in C. |
722 | | class TagTypeLoc : public InheritingConcreteTypeLoc<TypeSpecTypeLoc, |
723 | | TagTypeLoc, |
724 | | TagType> { |
725 | | public: |
726 | 1.60k | TagDecl *getDecl() const { return getTypePtr()->getDecl(); } |
727 | | |
728 | | /// True if the tag was defined in this type specifier. |
729 | | bool isDefinition() const; |
730 | | }; |
731 | | |
732 | | /// Wrapper for source info for record types. |
733 | | class RecordTypeLoc : public InheritingConcreteTypeLoc<TagTypeLoc, |
734 | | RecordTypeLoc, |
735 | | RecordType> { |
736 | | public: |
737 | 54 | RecordDecl *getDecl() const { return getTypePtr()->getDecl(); } |
738 | | }; |
739 | | |
740 | | /// Wrapper for source info for enum types. |
741 | | class EnumTypeLoc : public InheritingConcreteTypeLoc<TagTypeLoc, |
742 | | EnumTypeLoc, |
743 | | EnumType> { |
744 | | public: |
745 | 0 | EnumDecl *getDecl() const { return getTypePtr()->getDecl(); } |
746 | | }; |
747 | | |
748 | | /// Wrapper for template type parameters. |
749 | | class TemplateTypeParmTypeLoc : |
750 | | public InheritingConcreteTypeLoc<TypeSpecTypeLoc, |
751 | | TemplateTypeParmTypeLoc, |
752 | | TemplateTypeParmType> { |
753 | | public: |
754 | 1.47k | TemplateTypeParmDecl *getDecl() const { return getTypePtr()->getDecl(); } |
755 | | }; |
756 | | |
757 | | struct ObjCTypeParamTypeLocInfo { |
758 | | SourceLocation NameLoc; |
759 | | }; |
760 | | |
761 | | /// ProtocolLAngleLoc, ProtocolRAngleLoc, and the source locations for |
762 | | /// protocol qualifiers are stored after Info. |
763 | | class ObjCTypeParamTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, |
764 | | ObjCTypeParamTypeLoc, |
765 | | ObjCTypeParamType, |
766 | | ObjCTypeParamTypeLocInfo> { |
767 | | // SourceLocations are stored after Info, one for each protocol qualifier. |
768 | 3.60k | SourceLocation *getProtocolLocArray() const { |
769 | 3.60k | return (SourceLocation*)this->getExtraLocalData() + 2; |
770 | 3.60k | } |
771 | | |
772 | | public: |
773 | 5 | ObjCTypeParamDecl *getDecl() const { return getTypePtr()->getDecl(); } |
774 | | |
775 | 46.4k | SourceLocation getNameLoc() const { |
776 | 46.4k | return this->getLocalData()->NameLoc; |
777 | 46.4k | } |
778 | | |
779 | 130k | void setNameLoc(SourceLocation Loc) { |
780 | 130k | this->getLocalData()->NameLoc = Loc; |
781 | 130k | } |
782 | | |
783 | 30 | SourceLocation getProtocolLAngleLoc() const { |
784 | 30 | return getNumProtocols() ? |
785 | 30 | *((SourceLocation*)this->getExtraLocalData()) : |
786 | 30 | SourceLocation()0 ; |
787 | 30 | } |
788 | | |
789 | 3.55k | void setProtocolLAngleLoc(SourceLocation Loc) { |
790 | 3.55k | *((SourceLocation*)this->getExtraLocalData()) = Loc; |
791 | 3.55k | } |
792 | | |
793 | 46.5k | SourceLocation getProtocolRAngleLoc() const { |
794 | 46.5k | return getNumProtocols() ? |
795 | 2.23k | *((SourceLocation*)this->getExtraLocalData() + 1) : |
796 | 46.5k | SourceLocation()44.2k ; |
797 | 46.5k | } |
798 | | |
799 | 3.55k | void setProtocolRAngleLoc(SourceLocation Loc) { |
800 | 3.55k | *((SourceLocation*)this->getExtraLocalData() + 1) = Loc; |
801 | 3.55k | } |
802 | | |
803 | 326k | unsigned getNumProtocols() const { |
804 | 326k | return this->getTypePtr()->getNumProtocols(); |
805 | 326k | } |
806 | | |
807 | 47 | SourceLocation getProtocolLoc(unsigned i) const { |
808 | 47 | assert(i < getNumProtocols() && "Index is out of bounds!"); |
809 | 47 | return getProtocolLocArray()[i]; |
810 | 47 | } |
811 | | |
812 | 3.55k | void setProtocolLoc(unsigned i, SourceLocation Loc) { |
813 | 3.55k | assert(i < getNumProtocols() && "Index is out of bounds!"); |
814 | 3.55k | getProtocolLocArray()[i] = Loc; |
815 | 3.55k | } |
816 | | |
817 | 16 | ObjCProtocolDecl *getProtocol(unsigned i) const { |
818 | 16 | assert(i < getNumProtocols() && "Index is out of bounds!"); |
819 | 16 | return *(this->getTypePtr()->qual_begin() + i); |
820 | 16 | } |
821 | | |
822 | 0 | ArrayRef<SourceLocation> getProtocolLocs() const { |
823 | 0 | return llvm::ArrayRef(getProtocolLocArray(), getNumProtocols()); |
824 | 0 | } |
825 | | |
826 | | void initializeLocal(ASTContext &Context, SourceLocation Loc); |
827 | | |
828 | 132k | unsigned getExtraLocalDataSize() const { |
829 | 132k | if (!this->getNumProtocols()) return 0129k ; |
830 | | // When there are protocol qualifers, we have LAngleLoc and RAngleLoc |
831 | | // as well. |
832 | 3.55k | return (this->getNumProtocols() + 2) * sizeof(SourceLocation) ; |
833 | 132k | } |
834 | | |
835 | 368k | unsigned getExtraLocalDataAlignment() const { |
836 | 368k | return alignof(SourceLocation); |
837 | 368k | } |
838 | | |
839 | 46.4k | SourceRange getLocalSourceRange() const { |
840 | 46.4k | SourceLocation start = getNameLoc(); |
841 | 46.4k | SourceLocation end = getProtocolRAngleLoc(); |
842 | 46.4k | if (end.isInvalid()) return SourceRange(start, start)44.2k ; |
843 | 2.20k | return SourceRange(start, end); |
844 | 46.4k | } |
845 | | }; |
846 | | |
847 | | /// Wrapper for substituted template type parameters. |
848 | | class SubstTemplateTypeParmTypeLoc : |
849 | | public InheritingConcreteTypeLoc<TypeSpecTypeLoc, |
850 | | SubstTemplateTypeParmTypeLoc, |
851 | | SubstTemplateTypeParmType> { |
852 | | }; |
853 | | |
854 | | /// Wrapper for substituted template type parameters. |
855 | | class SubstTemplateTypeParmPackTypeLoc : |
856 | | public InheritingConcreteTypeLoc<TypeSpecTypeLoc, |
857 | | SubstTemplateTypeParmPackTypeLoc, |
858 | | SubstTemplateTypeParmPackType> { |
859 | | }; |
860 | | |
861 | | struct AttributedLocInfo { |
862 | | const Attr *TypeAttr; |
863 | | }; |
864 | | |
865 | | /// Type source information for an attributed type. |
866 | | class AttributedTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, |
867 | | AttributedTypeLoc, |
868 | | AttributedType, |
869 | | AttributedLocInfo> { |
870 | | public: |
871 | 352 | attr::Kind getAttrKind() const { |
872 | 352 | return getTypePtr()->getAttrKind(); |
873 | 352 | } |
874 | | |
875 | 25 | bool isQualifier() const { |
876 | 25 | return getTypePtr()->isQualifier(); |
877 | 25 | } |
878 | | |
879 | | /// The modified type, which is generally canonically different from |
880 | | /// the attribute type. |
881 | | /// int main(int, char**) __attribute__((noreturn)) |
882 | | /// ~~~ ~~~~~~~~~~~~~ |
883 | 1.76M | TypeLoc getModifiedLoc() const { |
884 | 1.76M | return getInnerTypeLoc(); |
885 | 1.76M | } |
886 | | |
887 | | /// The type attribute. |
888 | 1.64M | const Attr *getAttr() const { |
889 | 1.64M | return getLocalData()->TypeAttr; |
890 | 1.64M | } |
891 | 3.28M | void setAttr(const Attr *A) { |
892 | 3.28M | getLocalData()->TypeAttr = A; |
893 | 3.28M | } |
894 | | |
895 | 16.1k | template<typename T> const T *getAttrAs() { |
896 | 16.1k | return dyn_cast_or_null<T>(getAttr()); |
897 | 16.1k | } clang::LifetimeBoundAttr const* clang::AttributedTypeLoc::getAttrAs<clang::LifetimeBoundAttr>() Line | Count | Source | 895 | 15.8k | template<typename T> const T *getAttrAs() { | 896 | 15.8k | return dyn_cast_or_null<T>(getAttr()); | 897 | 15.8k | } |
clang::ObjCOwnershipAttr const* clang::AttributedTypeLoc::getAttrAs<clang::ObjCOwnershipAttr>() Line | Count | Source | 895 | 340 | template<typename T> const T *getAttrAs() { | 896 | 340 | return dyn_cast_or_null<T>(getAttr()); | 897 | 340 | } |
|
898 | | |
899 | | SourceRange getLocalSourceRange() const; |
900 | | |
901 | 1.65k | void initializeLocal(ASTContext &Context, SourceLocation loc) { |
902 | 1.65k | setAttr(nullptr); |
903 | 1.65k | } |
904 | | |
905 | 14.9M | QualType getInnerType() const { |
906 | 14.9M | return getTypePtr()->getModifiedType(); |
907 | 14.9M | } |
908 | | }; |
909 | | |
910 | | struct BTFTagAttributedLocInfo {}; // Nothing. |
911 | | |
912 | | /// Type source information for an btf_tag attributed type. |
913 | | class BTFTagAttributedTypeLoc |
914 | | : public ConcreteTypeLoc<UnqualTypeLoc, BTFTagAttributedTypeLoc, |
915 | | BTFTagAttributedType, BTFTagAttributedLocInfo> { |
916 | | public: |
917 | 37 | TypeLoc getWrappedLoc() const { return getInnerTypeLoc(); } |
918 | | |
919 | | /// The btf_type_tag attribute. |
920 | 40 | const BTFTypeTagAttr *getAttr() const { return getTypePtr()->getAttr(); } |
921 | | |
922 | | template <typename T> T *getAttrAs() { |
923 | | return dyn_cast_or_null<T>(getAttr()); |
924 | | } |
925 | | |
926 | | SourceRange getLocalSourceRange() const; |
927 | | |
928 | 0 | void initializeLocal(ASTContext &Context, SourceLocation loc) {} |
929 | | |
930 | 320 | QualType getInnerType() const { return getTypePtr()->getWrappedType(); } |
931 | | }; |
932 | | |
933 | | struct ObjCObjectTypeLocInfo { |
934 | | SourceLocation TypeArgsLAngleLoc; |
935 | | SourceLocation TypeArgsRAngleLoc; |
936 | | SourceLocation ProtocolLAngleLoc; |
937 | | SourceLocation ProtocolRAngleLoc; |
938 | | bool HasBaseTypeAsWritten; |
939 | | }; |
940 | | |
941 | | // A helper class for defining ObjC TypeLocs that can qualified with |
942 | | // protocols. |
943 | | // |
944 | | // TypeClass basically has to be either ObjCInterfaceType or |
945 | | // ObjCObjectPointerType. |
946 | | class ObjCObjectTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, |
947 | | ObjCObjectTypeLoc, |
948 | | ObjCObjectType, |
949 | | ObjCObjectTypeLocInfo> { |
950 | | // TypeSourceInfo*'s are stored after Info, one for each type argument. |
951 | 195k | TypeSourceInfo **getTypeArgLocArray() const { |
952 | 195k | return (TypeSourceInfo**)this->getExtraLocalData(); |
953 | 195k | } |
954 | | |
955 | | // SourceLocations are stored after the type argument information, one for |
956 | | // each Protocol. |
957 | 25.5k | SourceLocation *getProtocolLocArray() const { |
958 | 25.5k | return (SourceLocation*)(getTypeArgLocArray() + getNumTypeArgs()); |
959 | 25.5k | } |
960 | | |
961 | | public: |
962 | 69.1k | SourceLocation getTypeArgsLAngleLoc() const { |
963 | 69.1k | return this->getLocalData()->TypeArgsLAngleLoc; |
964 | 69.1k | } |
965 | | |
966 | 206k | void setTypeArgsLAngleLoc(SourceLocation Loc) { |
967 | 206k | this->getLocalData()->TypeArgsLAngleLoc = Loc; |
968 | 206k | } |
969 | | |
970 | 60.4k | SourceLocation getTypeArgsRAngleLoc() const { |
971 | 60.4k | return this->getLocalData()->TypeArgsRAngleLoc; |
972 | 60.4k | } |
973 | | |
974 | 206k | void setTypeArgsRAngleLoc(SourceLocation Loc) { |
975 | 206k | this->getLocalData()->TypeArgsRAngleLoc = Loc; |
976 | 206k | } |
977 | | |
978 | 2.43M | unsigned getNumTypeArgs() const { |
979 | 2.43M | return this->getTypePtr()->getTypeArgsAsWritten().size(); |
980 | 2.43M | } |
981 | | |
982 | 7.72k | TypeSourceInfo *getTypeArgTInfo(unsigned i) const { |
983 | 7.72k | assert(i < getNumTypeArgs() && "Index is out of bounds!"); |
984 | 7.72k | return getTypeArgLocArray()[i]; |
985 | 7.72k | } |
986 | | |
987 | 161k | void setTypeArgTInfo(unsigned i, TypeSourceInfo *TInfo) { |
988 | 161k | assert(i < getNumTypeArgs() && "Index is out of bounds!"); |
989 | 161k | getTypeArgLocArray()[i] = TInfo; |
990 | 161k | } |
991 | | |
992 | 14.2k | SourceLocation getProtocolLAngleLoc() const { |
993 | 14.2k | return this->getLocalData()->ProtocolLAngleLoc; |
994 | 14.2k | } |
995 | | |
996 | 206k | void setProtocolLAngleLoc(SourceLocation Loc) { |
997 | 206k | this->getLocalData()->ProtocolLAngleLoc = Loc; |
998 | 206k | } |
999 | | |
1000 | 69.1k | SourceLocation getProtocolRAngleLoc() const { |
1001 | 69.1k | return this->getLocalData()->ProtocolRAngleLoc; |
1002 | 69.1k | } |
1003 | | |
1004 | 206k | void setProtocolRAngleLoc(SourceLocation Loc) { |
1005 | 206k | this->getLocalData()->ProtocolRAngleLoc = Loc; |
1006 | 206k | } |
1007 | | |
1008 | 2.16M | unsigned getNumProtocols() const { |
1009 | 2.16M | return this->getTypePtr()->getNumProtocols(); |
1010 | 2.16M | } |
1011 | | |
1012 | 3.13k | SourceLocation getProtocolLoc(unsigned i) const { |
1013 | 3.13k | assert(i < getNumProtocols() && "Index is out of bounds!"); |
1014 | 3.13k | return getProtocolLocArray()[i]; |
1015 | 3.13k | } |
1016 | | |
1017 | 22.3k | void setProtocolLoc(unsigned i, SourceLocation Loc) { |
1018 | 22.3k | assert(i < getNumProtocols() && "Index is out of bounds!"); |
1019 | 22.3k | getProtocolLocArray()[i] = Loc; |
1020 | 22.3k | } |
1021 | | |
1022 | 1.27k | ObjCProtocolDecl *getProtocol(unsigned i) const { |
1023 | 1.27k | assert(i < getNumProtocols() && "Index is out of bounds!"); |
1024 | 1.27k | return *(this->getTypePtr()->qual_begin() + i); |
1025 | 1.27k | } |
1026 | | |
1027 | | |
1028 | 17 | ArrayRef<SourceLocation> getProtocolLocs() const { |
1029 | 17 | return llvm::ArrayRef(getProtocolLocArray(), getNumProtocols()); |
1030 | 17 | } |
1031 | | |
1032 | 5.57k | bool hasBaseTypeAsWritten() const { |
1033 | 5.57k | return getLocalData()->HasBaseTypeAsWritten; |
1034 | 5.57k | } |
1035 | | |
1036 | 206k | void setHasBaseTypeAsWritten(bool HasBaseType) { |
1037 | 206k | getLocalData()->HasBaseTypeAsWritten = HasBaseType; |
1038 | 206k | } |
1039 | | |
1040 | 157k | TypeLoc getBaseLoc() const { |
1041 | 157k | return getInnerTypeLoc(); |
1042 | 157k | } |
1043 | | |
1044 | 63.5k | SourceRange getLocalSourceRange() const { |
1045 | 63.5k | SourceLocation start = getTypeArgsLAngleLoc(); |
1046 | 63.5k | if (start.isInvalid()) |
1047 | 8.67k | start = getProtocolLAngleLoc(); |
1048 | 63.5k | SourceLocation end = getProtocolRAngleLoc(); |
1049 | 63.5k | if (end.isInvalid()) |
1050 | 54.8k | end = getTypeArgsRAngleLoc(); |
1051 | 63.5k | return SourceRange(start, end); |
1052 | 63.5k | } |
1053 | | |
1054 | | void initializeLocal(ASTContext &Context, SourceLocation Loc); |
1055 | | |
1056 | 1.89M | unsigned getExtraLocalDataSize() const { |
1057 | 1.89M | return this->getNumTypeArgs() * sizeof(TypeSourceInfo *) |
1058 | 1.89M | + this->getNumProtocols() * sizeof(SourceLocation); |
1059 | 1.89M | } |
1060 | | |
1061 | 3.44M | unsigned getExtraLocalDataAlignment() const { |
1062 | 3.44M | static_assert(alignof(ObjCObjectTypeLoc) >= alignof(TypeSourceInfo *), |
1063 | 3.44M | "not enough alignment for tail-allocated data"); |
1064 | 3.44M | return alignof(TypeSourceInfo *); |
1065 | 3.44M | } |
1066 | | |
1067 | 2.17M | QualType getInnerType() const { |
1068 | 2.17M | return getTypePtr()->getBaseType(); |
1069 | 2.17M | } |
1070 | | }; |
1071 | | |
1072 | | struct ObjCInterfaceLocInfo { |
1073 | | SourceLocation NameLoc; |
1074 | | SourceLocation NameEndLoc; |
1075 | | }; |
1076 | | |
1077 | | /// Wrapper for source info for ObjC interfaces. |
1078 | | class ObjCInterfaceTypeLoc : public ConcreteTypeLoc<ObjCObjectTypeLoc, |
1079 | | ObjCInterfaceTypeLoc, |
1080 | | ObjCInterfaceType, |
1081 | | ObjCInterfaceLocInfo> { |
1082 | | public: |
1083 | 395 | ObjCInterfaceDecl *getIFaceDecl() const { |
1084 | 395 | return getTypePtr()->getDecl(); |
1085 | 395 | } |
1086 | | |
1087 | 1.60M | SourceLocation getNameLoc() const { |
1088 | 1.60M | return getLocalData()->NameLoc; |
1089 | 1.60M | } |
1090 | | |
1091 | 1.37M | void setNameLoc(SourceLocation Loc) { |
1092 | 1.37M | getLocalData()->NameLoc = Loc; |
1093 | 1.37M | } |
1094 | | |
1095 | 1.57M | SourceRange getLocalSourceRange() const { |
1096 | 1.57M | return SourceRange(getNameLoc(), getNameEndLoc()); |
1097 | 1.57M | } |
1098 | | |
1099 | 1.60M | SourceLocation getNameEndLoc() const { |
1100 | 1.60M | return getLocalData()->NameEndLoc; |
1101 | 1.60M | } |
1102 | | |
1103 | 1.37M | void setNameEndLoc(SourceLocation Loc) { |
1104 | 1.37M | getLocalData()->NameEndLoc = Loc; |
1105 | 1.37M | } |
1106 | | |
1107 | 342k | void initializeLocal(ASTContext &Context, SourceLocation Loc) { |
1108 | 342k | setNameLoc(Loc); |
1109 | 342k | setNameEndLoc(Loc); |
1110 | 342k | } |
1111 | | }; |
1112 | | |
1113 | | struct MacroQualifiedLocInfo { |
1114 | | SourceLocation ExpansionLoc; |
1115 | | }; |
1116 | | |
1117 | | class MacroQualifiedTypeLoc |
1118 | | : public ConcreteTypeLoc<UnqualTypeLoc, MacroQualifiedTypeLoc, |
1119 | | MacroQualifiedType, MacroQualifiedLocInfo> { |
1120 | | public: |
1121 | 57 | void initializeLocal(ASTContext &Context, SourceLocation Loc) { |
1122 | 57 | setExpansionLoc(Loc); |
1123 | 57 | } |
1124 | | |
1125 | 157k | TypeLoc getInnerLoc() const { return getInnerTypeLoc(); } |
1126 | | |
1127 | 23 | const IdentifierInfo *getMacroIdentifier() const { |
1128 | 23 | return getTypePtr()->getMacroIdentifier(); |
1129 | 23 | } |
1130 | | |
1131 | 5.66k | SourceLocation getExpansionLoc() const { |
1132 | 5.66k | return this->getLocalData()->ExpansionLoc; |
1133 | 5.66k | } |
1134 | | |
1135 | 238k | void setExpansionLoc(SourceLocation Loc) { |
1136 | 238k | this->getLocalData()->ExpansionLoc = Loc; |
1137 | 238k | } |
1138 | | |
1139 | 1.00M | QualType getInnerType() const { return getTypePtr()->getUnderlyingType(); } |
1140 | | |
1141 | 489 | SourceRange getLocalSourceRange() const { |
1142 | 489 | return getInnerLoc().getLocalSourceRange(); |
1143 | 489 | } |
1144 | | }; |
1145 | | |
1146 | | struct ParenLocInfo { |
1147 | | SourceLocation LParenLoc; |
1148 | | SourceLocation RParenLoc; |
1149 | | }; |
1150 | | |
1151 | | class ParenTypeLoc |
1152 | | : public ConcreteTypeLoc<UnqualTypeLoc, ParenTypeLoc, ParenType, |
1153 | | ParenLocInfo> { |
1154 | | public: |
1155 | 226k | SourceLocation getLParenLoc() const { |
1156 | 226k | return this->getLocalData()->LParenLoc; |
1157 | 226k | } |
1158 | | |
1159 | 226k | SourceLocation getRParenLoc() const { |
1160 | 226k | return this->getLocalData()->RParenLoc; |
1161 | 226k | } |
1162 | | |
1163 | 340k | void setLParenLoc(SourceLocation Loc) { |
1164 | 340k | this->getLocalData()->LParenLoc = Loc; |
1165 | 340k | } |
1166 | | |
1167 | 340k | void setRParenLoc(SourceLocation Loc) { |
1168 | 340k | this->getLocalData()->RParenLoc = Loc; |
1169 | 340k | } |
1170 | | |
1171 | 199k | SourceRange getLocalSourceRange() const { |
1172 | 199k | return SourceRange(getLParenLoc(), getRParenLoc()); |
1173 | 199k | } |
1174 | | |
1175 | 8.87k | void initializeLocal(ASTContext &Context, SourceLocation Loc) { |
1176 | 8.87k | setLParenLoc(Loc); |
1177 | 8.87k | setRParenLoc(Loc); |
1178 | 8.87k | } |
1179 | | |
1180 | 42.9k | TypeLoc getInnerLoc() const { |
1181 | 42.9k | return getInnerTypeLoc(); |
1182 | 42.9k | } |
1183 | | |
1184 | 2.23M | QualType getInnerType() const { |
1185 | 2.23M | return this->getTypePtr()->getInnerType(); |
1186 | 2.23M | } |
1187 | | }; |
1188 | | |
1189 | 5.34M | inline TypeLoc TypeLoc::IgnoreParens() const { |
1190 | 5.34M | if (ParenTypeLoc::isKind(*this)) |
1191 | 173 | return IgnoreParensImpl(*this); |
1192 | 5.34M | return *this; |
1193 | 5.34M | } |
1194 | | |
1195 | | struct AdjustedLocInfo {}; // Nothing. |
1196 | | |
1197 | | class AdjustedTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, AdjustedTypeLoc, |
1198 | | AdjustedType, AdjustedLocInfo> { |
1199 | | public: |
1200 | 2.15k | TypeLoc getOriginalLoc() const { |
1201 | 2.15k | return getInnerTypeLoc(); |
1202 | 2.15k | } |
1203 | | |
1204 | 4.35k | void initializeLocal(ASTContext &Context, SourceLocation Loc) { |
1205 | | // do nothing |
1206 | 4.35k | } |
1207 | | |
1208 | 38.9k | QualType getInnerType() const { |
1209 | | // The inner type is the undecayed type, since that's what we have source |
1210 | | // location information for. |
1211 | 38.9k | return getTypePtr()->getOriginalType(); |
1212 | 38.9k | } |
1213 | | |
1214 | 4.84k | SourceRange getLocalSourceRange() const { return {}; } |
1215 | | |
1216 | 29.1k | unsigned getLocalDataSize() const { |
1217 | | // sizeof(AdjustedLocInfo) is 1, but we don't need its address to be unique |
1218 | | // anyway. TypeLocBuilder can't handle data sizes of 1. |
1219 | 29.1k | return 0; // No data. |
1220 | 29.1k | } |
1221 | | }; |
1222 | | |
1223 | | /// Wrapper for source info for pointers decayed from arrays and |
1224 | | /// functions. |
1225 | | class DecayedTypeLoc : public InheritingConcreteTypeLoc< |
1226 | | AdjustedTypeLoc, DecayedTypeLoc, DecayedType> { |
1227 | | }; |
1228 | | |
1229 | | struct PointerLikeLocInfo { |
1230 | | SourceLocation StarLoc; |
1231 | | }; |
1232 | | |
1233 | | /// A base class for |
1234 | | template <class Derived, class TypeClass, class LocalData = PointerLikeLocInfo> |
1235 | | class PointerLikeTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, Derived, |
1236 | | TypeClass, LocalData> { |
1237 | | public: |
1238 | 17.9M | SourceLocation getSigilLoc() const { |
1239 | 17.9M | return this->getLocalData()->StarLoc; |
1240 | 17.9M | } clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getSigilLoc() const Line | Count | Source | 1238 | 5.56M | SourceLocation getSigilLoc() const { | 1239 | 5.56M | return this->getLocalData()->StarLoc; | 1240 | 5.56M | } |
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getSigilLoc() const Line | Count | Source | 1238 | 67.8k | SourceLocation getSigilLoc() const { | 1239 | 67.8k | return this->getLocalData()->StarLoc; | 1240 | 67.8k | } |
clang::PointerLikeTypeLoc<clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getSigilLoc() const Line | Count | Source | 1238 | 74.9k | SourceLocation getSigilLoc() const { | 1239 | 74.9k | return this->getLocalData()->StarLoc; | 1240 | 74.9k | } |
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getSigilLoc() const Line | Count | Source | 1238 | 1.11M | SourceLocation getSigilLoc() const { | 1239 | 1.11M | return this->getLocalData()->StarLoc; | 1240 | 1.11M | } |
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getSigilLoc() const Line | Count | Source | 1238 | 11.1M | SourceLocation getSigilLoc() const { | 1239 | 11.1M | return this->getLocalData()->StarLoc; | 1240 | 11.1M | } |
|
1241 | | |
1242 | 15.9M | void setSigilLoc(SourceLocation Loc) { |
1243 | 15.9M | this->getLocalData()->StarLoc = Loc; |
1244 | 15.9M | } clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::setSigilLoc(clang::SourceLocation) Line | Count | Source | 1242 | 9.93M | void setSigilLoc(SourceLocation Loc) { | 1243 | 9.93M | this->getLocalData()->StarLoc = Loc; | 1244 | 9.93M | } |
clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::setSigilLoc(clang::SourceLocation) Line | Count | Source | 1242 | 62.2k | void setSigilLoc(SourceLocation Loc) { | 1243 | 62.2k | this->getLocalData()->StarLoc = Loc; | 1244 | 62.2k | } |
clang::PointerLikeTypeLoc<clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::setSigilLoc(clang::SourceLocation) Line | Count | Source | 1242 | 55.5k | void setSigilLoc(SourceLocation Loc) { | 1243 | 55.5k | this->getLocalData()->StarLoc = Loc; | 1244 | 55.5k | } |
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::setSigilLoc(clang::SourceLocation) Line | Count | Source | 1242 | 1.23M | void setSigilLoc(SourceLocation Loc) { | 1243 | 1.23M | this->getLocalData()->StarLoc = Loc; | 1244 | 1.23M | } |
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::setSigilLoc(clang::SourceLocation) Line | Count | Source | 1242 | 4.64M | void setSigilLoc(SourceLocation Loc) { | 1243 | 4.64M | this->getLocalData()->StarLoc = Loc; | 1244 | 4.64M | } |
|
1245 | | |
1246 | 3.24M | TypeLoc getPointeeLoc() const { |
1247 | 3.24M | return this->getInnerTypeLoc(); |
1248 | 3.24M | } clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getPointeeLoc() const Line | Count | Source | 1246 | 1.48k | TypeLoc getPointeeLoc() const { | 1247 | 1.48k | return this->getInnerTypeLoc(); | 1248 | 1.48k | } |
clang::PointerLikeTypeLoc<clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getPointeeLoc() const Line | Count | Source | 1246 | 2.06k | TypeLoc getPointeeLoc() const { | 1247 | 2.06k | return this->getInnerTypeLoc(); | 1248 | 2.06k | } |
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getPointeeLoc() const Line | Count | Source | 1246 | 48.8k | TypeLoc getPointeeLoc() const { | 1247 | 48.8k | return this->getInnerTypeLoc(); | 1248 | 48.8k | } |
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getPointeeLoc() const Line | Count | Source | 1246 | 1.26M | TypeLoc getPointeeLoc() const { | 1247 | 1.26M | return this->getInnerTypeLoc(); | 1248 | 1.26M | } |
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getPointeeLoc() const Line | Count | Source | 1246 | 1.92M | TypeLoc getPointeeLoc() const { | 1247 | 1.92M | return this->getInnerTypeLoc(); | 1248 | 1.92M | } |
|
1249 | | |
1250 | 6.69M | SourceRange getLocalSourceRange() const { |
1251 | 6.69M | return SourceRange(getSigilLoc(), getSigilLoc()); |
1252 | 6.69M | } clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getLocalSourceRange() const Line | Count | Source | 1250 | 33.2k | SourceRange getLocalSourceRange() const { | 1251 | 33.2k | return SourceRange(getSigilLoc(), getSigilLoc()); | 1252 | 33.2k | } |
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getLocalSourceRange() const Line | Count | Source | 1250 | 541k | SourceRange getLocalSourceRange() const { | 1251 | 541k | return SourceRange(getSigilLoc(), getSigilLoc()); | 1252 | 541k | } |
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getLocalSourceRange() const Line | Count | Source | 1250 | 2.23M | SourceRange getLocalSourceRange() const { | 1251 | 2.23M | return SourceRange(getSigilLoc(), getSigilLoc()); | 1252 | 2.23M | } |
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::getLocalSourceRange() const Line | Count | Source | 1250 | 3.88M | SourceRange getLocalSourceRange() const { | 1251 | 3.88M | return SourceRange(getSigilLoc(), getSigilLoc()); | 1252 | 3.88M | } |
|
1253 | | |
1254 | 1.56M | void initializeLocal(ASTContext &Context, SourceLocation Loc) { |
1255 | 1.56M | setSigilLoc(Loc); |
1256 | 1.56M | } clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation) Line | Count | Source | 1254 | 793 | void initializeLocal(ASTContext &Context, SourceLocation Loc) { | 1255 | 793 | setSigilLoc(Loc); | 1256 | 793 | } |
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation) Line | Count | Source | 1254 | 56.0k | void initializeLocal(ASTContext &Context, SourceLocation Loc) { | 1255 | 56.0k | setSigilLoc(Loc); | 1256 | 56.0k | } |
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation) Line | Count | Source | 1254 | 746k | void initializeLocal(ASTContext &Context, SourceLocation Loc) { | 1255 | 746k | setSigilLoc(Loc); | 1256 | 746k | } |
clang::PointerLikeTypeLoc<clang::ReferenceTypeLoc, clang::ReferenceType, clang::PointerLikeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation) Line | Count | Source | 1254 | 761k | void initializeLocal(ASTContext &Context, SourceLocation Loc) { | 1255 | 761k | setSigilLoc(Loc); | 1256 | 761k | } |
|
1257 | | |
1258 | 57.8M | QualType getInnerType() const { |
1259 | 57.8M | return this->getTypePtr()->getPointeeType(); |
1260 | 57.8M | } clang::PointerLikeTypeLoc<clang::BlockPointerTypeLoc, clang::BlockPointerType, clang::PointerLikeLocInfo>::getInnerType() const Line | Count | Source | 1258 | 323k | QualType getInnerType() const { | 1259 | 323k | return this->getTypePtr()->getPointeeType(); | 1260 | 323k | } |
clang::PointerLikeTypeLoc<clang::MemberPointerTypeLoc, clang::MemberPointerType, clang::MemberPointerLocInfo>::getInnerType() const Line | Count | Source | 1258 | 459k | QualType getInnerType() const { | 1259 | 459k | return this->getTypePtr()->getPointeeType(); | 1260 | 459k | } |
clang::PointerLikeTypeLoc<clang::ObjCObjectPointerTypeLoc, clang::ObjCObjectPointerType, clang::PointerLikeLocInfo>::getInnerType() const Line | Count | Source | 1258 | 6.28M | QualType getInnerType() const { | 1259 | 6.28M | return this->getTypePtr()->getPointeeType(); | 1260 | 6.28M | } |
clang::PointerLikeTypeLoc<clang::PointerTypeLoc, clang::PointerType, clang::PointerLikeLocInfo>::getInnerType() const Line | Count | Source | 1258 | 50.7M | QualType getInnerType() const { | 1259 | 50.7M | return this->getTypePtr()->getPointeeType(); | 1260 | 50.7M | } |
|
1261 | | }; |
1262 | | |
1263 | | /// Wrapper for source info for pointers. |
1264 | | class PointerTypeLoc : public PointerLikeTypeLoc<PointerTypeLoc, |
1265 | | PointerType> { |
1266 | | public: |
1267 | 133k | SourceLocation getStarLoc() const { |
1268 | 133k | return getSigilLoc(); |
1269 | 133k | } |
1270 | | |
1271 | 8.69M | void setStarLoc(SourceLocation Loc) { |
1272 | 8.69M | setSigilLoc(Loc); |
1273 | 8.69M | } |
1274 | | }; |
1275 | | |
1276 | | /// Wrapper for source info for block pointers. |
1277 | | class BlockPointerTypeLoc : public PointerLikeTypeLoc<BlockPointerTypeLoc, |
1278 | | BlockPointerType> { |
1279 | | public: |
1280 | 1.28k | SourceLocation getCaretLoc() const { |
1281 | 1.28k | return getSigilLoc(); |
1282 | 1.28k | } |
1283 | | |
1284 | 61.4k | void setCaretLoc(SourceLocation Loc) { |
1285 | 61.4k | setSigilLoc(Loc); |
1286 | 61.4k | } |
1287 | | }; |
1288 | | |
1289 | | struct MemberPointerLocInfo : public PointerLikeLocInfo { |
1290 | | TypeSourceInfo *ClassTInfo; |
1291 | | }; |
1292 | | |
1293 | | /// Wrapper for source info for member pointers. |
1294 | | class MemberPointerTypeLoc : public PointerLikeTypeLoc<MemberPointerTypeLoc, |
1295 | | MemberPointerType, |
1296 | | MemberPointerLocInfo> { |
1297 | | public: |
1298 | 74.3k | SourceLocation getStarLoc() const { |
1299 | 74.3k | return getSigilLoc(); |
1300 | 74.3k | } |
1301 | | |
1302 | 32.6k | void setStarLoc(SourceLocation Loc) { |
1303 | 32.6k | setSigilLoc(Loc); |
1304 | 32.6k | } |
1305 | | |
1306 | 32.5k | const Type *getClass() const { |
1307 | 32.5k | return getTypePtr()->getClass(); |
1308 | 32.5k | } |
1309 | | |
1310 | 75.4k | TypeSourceInfo *getClassTInfo() const { |
1311 | 75.4k | return getLocalData()->ClassTInfo; |
1312 | 75.4k | } |
1313 | | |
1314 | 55.5k | void setClassTInfo(TypeSourceInfo* TI) { |
1315 | 55.5k | getLocalData()->ClassTInfo = TI; |
1316 | 55.5k | } |
1317 | | |
1318 | 22.2k | void initializeLocal(ASTContext &Context, SourceLocation Loc) { |
1319 | 22.2k | setSigilLoc(Loc); |
1320 | 22.2k | setClassTInfo(nullptr); |
1321 | 22.2k | } |
1322 | | |
1323 | 73.2k | SourceRange getLocalSourceRange() const { |
1324 | 73.2k | if (TypeSourceInfo *TI = getClassTInfo()) |
1325 | 49.1k | return SourceRange(TI->getTypeLoc().getBeginLoc(), getStarLoc()); |
1326 | 24.1k | else |
1327 | 24.1k | return SourceRange(getStarLoc()); |
1328 | 73.2k | } |
1329 | | }; |
1330 | | |
1331 | | /// Wraps an ObjCPointerType with source location information. |
1332 | | class ObjCObjectPointerTypeLoc : |
1333 | | public PointerLikeTypeLoc<ObjCObjectPointerTypeLoc, |
1334 | | ObjCObjectPointerType> { |
1335 | | public: |
1336 | 34.7k | SourceLocation getStarLoc() const { |
1337 | 34.7k | return getSigilLoc(); |
1338 | 34.7k | } |
1339 | | |
1340 | 1.17M | void setStarLoc(SourceLocation Loc) { |
1341 | 1.17M | setSigilLoc(Loc); |
1342 | 1.17M | } |
1343 | | }; |
1344 | | |
1345 | | class ReferenceTypeLoc : public PointerLikeTypeLoc<ReferenceTypeLoc, |
1346 | | ReferenceType> { |
1347 | | public: |
1348 | 38.4M | QualType getInnerType() const { |
1349 | 38.4M | return getTypePtr()->getPointeeTypeAsWritten(); |
1350 | 38.4M | } |
1351 | | }; |
1352 | | |
1353 | | class LValueReferenceTypeLoc : |
1354 | | public InheritingConcreteTypeLoc<ReferenceTypeLoc, |
1355 | | LValueReferenceTypeLoc, |
1356 | | LValueReferenceType> { |
1357 | | public: |
1358 | 60.0k | SourceLocation getAmpLoc() const { |
1359 | 60.0k | return getSigilLoc(); |
1360 | 60.0k | } |
1361 | | |
1362 | 1.88M | void setAmpLoc(SourceLocation Loc) { |
1363 | 1.88M | setSigilLoc(Loc); |
1364 | 1.88M | } |
1365 | | }; |
1366 | | |
1367 | | class RValueReferenceTypeLoc : |
1368 | | public InheritingConcreteTypeLoc<ReferenceTypeLoc, |
1369 | | RValueReferenceTypeLoc, |
1370 | | RValueReferenceType> { |
1371 | | public: |
1372 | 6.49k | SourceLocation getAmpAmpLoc() const { |
1373 | 6.49k | return getSigilLoc(); |
1374 | 6.49k | } |
1375 | | |
1376 | 330k | void setAmpAmpLoc(SourceLocation Loc) { |
1377 | 330k | setSigilLoc(Loc); |
1378 | 330k | } |
1379 | | }; |
1380 | | |
1381 | | struct FunctionLocInfo { |
1382 | | SourceLocation LocalRangeBegin; |
1383 | | SourceLocation LParenLoc; |
1384 | | SourceLocation RParenLoc; |
1385 | | SourceLocation LocalRangeEnd; |
1386 | | }; |
1387 | | |
1388 | | /// Wrapper for source info for functions. |
1389 | | class FunctionTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, |
1390 | | FunctionTypeLoc, |
1391 | | FunctionType, |
1392 | | FunctionLocInfo> { |
1393 | 176M | bool hasExceptionSpec() const { |
1394 | 176M | if (auto *FPT = dyn_cast<FunctionProtoType>(getTypePtr())) { |
1395 | 176M | return FPT->hasExceptionSpec(); |
1396 | 176M | } |
1397 | 52.8k | return false; |
1398 | 176M | } |
1399 | | |
1400 | 2.28M | SourceRange *getExceptionSpecRangePtr() const { |
1401 | 2.28M | assert(hasExceptionSpec() && "No exception spec range"); |
1402 | | // After the Info comes the ParmVarDecl array, and after that comes the |
1403 | | // exception specification information. |
1404 | 2.28M | return (SourceRange *)(getParmArray() + getNumParams()); |
1405 | 2.28M | } |
1406 | | |
1407 | | public: |
1408 | 3.43M | SourceLocation getLocalRangeBegin() const { |
1409 | 3.43M | return getLocalData()->LocalRangeBegin; |
1410 | 3.43M | } |
1411 | | |
1412 | 39.3M | void setLocalRangeBegin(SourceLocation L) { |
1413 | 39.3M | getLocalData()->LocalRangeBegin = L; |
1414 | 39.3M | } |
1415 | | |
1416 | 3.43M | SourceLocation getLocalRangeEnd() const { |
1417 | 3.43M | return getLocalData()->LocalRangeEnd; |
1418 | 3.43M | } |
1419 | | |
1420 | 39.3M | void setLocalRangeEnd(SourceLocation L) { |
1421 | 39.3M | getLocalData()->LocalRangeEnd = L; |
1422 | 39.3M | } |
1423 | | |
1424 | 1.73M | SourceLocation getLParenLoc() const { |
1425 | 1.73M | return this->getLocalData()->LParenLoc; |
1426 | 1.73M | } |
1427 | | |
1428 | 39.3M | void setLParenLoc(SourceLocation Loc) { |
1429 | 39.3M | this->getLocalData()->LParenLoc = Loc; |
1430 | 39.3M | } |
1431 | | |
1432 | 1.72M | SourceLocation getRParenLoc() const { |
1433 | 1.72M | return this->getLocalData()->RParenLoc; |
1434 | 1.72M | } |
1435 | | |
1436 | 39.3M | void setRParenLoc(SourceLocation Loc) { |
1437 | 39.3M | this->getLocalData()->RParenLoc = Loc; |
1438 | 39.3M | } |
1439 | | |
1440 | 0 | SourceRange getParensRange() const { |
1441 | 0 | return SourceRange(getLParenLoc(), getRParenLoc()); |
1442 | 0 | } |
1443 | | |
1444 | 1.72M | SourceRange getExceptionSpecRange() const { |
1445 | 1.72M | if (hasExceptionSpec()) |
1446 | 580k | return *getExceptionSpecRangePtr(); |
1447 | 1.14M | return {}; |
1448 | 1.72M | } |
1449 | | |
1450 | 38.7M | void setExceptionSpecRange(SourceRange R) { |
1451 | 38.7M | if (hasExceptionSpec()) |
1452 | 1.70M | *getExceptionSpecRangePtr() = R; |
1453 | 38.7M | } |
1454 | | |
1455 | 1.80M | ArrayRef<ParmVarDecl *> getParams() const { |
1456 | 1.80M | return llvm::ArrayRef(getParmArray(), getNumParams()); |
1457 | 1.80M | } |
1458 | | |
1459 | | // ParmVarDecls* are stored after Info, one for each parameter. |
1460 | 107M | ParmVarDecl **getParmArray() const { |
1461 | 107M | return (ParmVarDecl**) getExtraLocalData(); |
1462 | 107M | } |
1463 | | |
1464 | 178M | unsigned getNumParams() const { |
1465 | 178M | if (isa<FunctionNoProtoType>(getTypePtr())) |
1466 | 53.0k | return 0; |
1467 | 178M | return cast<FunctionProtoType>(getTypePtr())->getNumParams(); |
1468 | 178M | } |
1469 | | |
1470 | 5.64M | ParmVarDecl *getParam(unsigned i) const { return getParmArray()[i]; } |
1471 | 97.7M | void setParam(unsigned i, ParmVarDecl *VD) { getParmArray()[i] = VD; } |
1472 | | |
1473 | 1.88M | TypeLoc getReturnLoc() const { |
1474 | 1.88M | return getInnerTypeLoc(); |
1475 | 1.88M | } |
1476 | | |
1477 | 1.70M | SourceRange getLocalSourceRange() const { |
1478 | 1.70M | return SourceRange(getLocalRangeBegin(), getLocalRangeEnd()); |
1479 | 1.70M | } |
1480 | | |
1481 | 655k | void initializeLocal(ASTContext &Context, SourceLocation Loc) { |
1482 | 655k | setLocalRangeBegin(Loc); |
1483 | 655k | setLParenLoc(Loc); |
1484 | 655k | setRParenLoc(Loc); |
1485 | 655k | setLocalRangeEnd(Loc); |
1486 | 1.24M | for (unsigned i = 0, e = getNumParams(); i != e; ++i594k ) |
1487 | 594k | setParam(i, nullptr); |
1488 | 655k | if (hasExceptionSpec()) |
1489 | 55.4k | setExceptionSpecRange(Loc); |
1490 | 655k | } |
1491 | | |
1492 | | /// Returns the size of the type source info data block that is |
1493 | | /// specific to this type. |
1494 | 133M | unsigned getExtraLocalDataSize() const { |
1495 | 133M | unsigned ExceptSpecSize = hasExceptionSpec() ? sizeof(SourceRange)10.5M : 0122M ; |
1496 | 133M | return (getNumParams() * sizeof(ParmVarDecl *)) + ExceptSpecSize; |
1497 | 133M | } |
1498 | | |
1499 | 285M | unsigned getExtraLocalDataAlignment() const { return alignof(ParmVarDecl *); } |
1500 | | |
1501 | 178M | QualType getInnerType() const { return getTypePtr()->getReturnType(); } |
1502 | | }; |
1503 | | |
1504 | | class FunctionProtoTypeLoc : |
1505 | | public InheritingConcreteTypeLoc<FunctionTypeLoc, |
1506 | | FunctionProtoTypeLoc, |
1507 | | FunctionProtoType> { |
1508 | | }; |
1509 | | |
1510 | | class FunctionNoProtoTypeLoc : |
1511 | | public InheritingConcreteTypeLoc<FunctionTypeLoc, |
1512 | | FunctionNoProtoTypeLoc, |
1513 | | FunctionNoProtoType> { |
1514 | | }; |
1515 | | |
1516 | | struct ArrayLocInfo { |
1517 | | SourceLocation LBracketLoc, RBracketLoc; |
1518 | | Expr *Size; |
1519 | | }; |
1520 | | |
1521 | | /// Wrapper for source info for arrays. |
1522 | | class ArrayTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, |
1523 | | ArrayTypeLoc, |
1524 | | ArrayType, |
1525 | | ArrayLocInfo> { |
1526 | | public: |
1527 | 100k | SourceLocation getLBracketLoc() const { |
1528 | 100k | return getLocalData()->LBracketLoc; |
1529 | 100k | } |
1530 | | |
1531 | 532k | void setLBracketLoc(SourceLocation Loc) { |
1532 | 532k | getLocalData()->LBracketLoc = Loc; |
1533 | 532k | } |
1534 | | |
1535 | 100k | SourceLocation getRBracketLoc() const { |
1536 | 100k | return getLocalData()->RBracketLoc; |
1537 | 100k | } |
1538 | | |
1539 | 532k | void setRBracketLoc(SourceLocation Loc) { |
1540 | 532k | getLocalData()->RBracketLoc = Loc; |
1541 | 532k | } |
1542 | | |
1543 | 20.6k | SourceRange getBracketsRange() const { |
1544 | 20.6k | return SourceRange(getLBracketLoc(), getRBracketLoc()); |
1545 | 20.6k | } |
1546 | | |
1547 | 118k | Expr *getSizeExpr() const { |
1548 | 118k | return getLocalData()->Size; |
1549 | 118k | } |
1550 | | |
1551 | 537k | void setSizeExpr(Expr *Size) { |
1552 | 537k | getLocalData()->Size = Size; |
1553 | 537k | } |
1554 | | |
1555 | 49.6k | TypeLoc getElementLoc() const { |
1556 | 49.6k | return getInnerTypeLoc(); |
1557 | 49.6k | } |
1558 | | |
1559 | 34.3k | SourceRange getLocalSourceRange() const { |
1560 | 34.3k | return SourceRange(getLBracketLoc(), getRBracketLoc()); |
1561 | 34.3k | } |
1562 | | |
1563 | 144k | void initializeLocal(ASTContext &Context, SourceLocation Loc) { |
1564 | 144k | setLBracketLoc(Loc); |
1565 | 144k | setRBracketLoc(Loc); |
1566 | 144k | setSizeExpr(nullptr); |
1567 | 144k | } |
1568 | | |
1569 | 2.62M | QualType getInnerType() const { return getTypePtr()->getElementType(); } |
1570 | | }; |
1571 | | |
1572 | | class ConstantArrayTypeLoc : |
1573 | | public InheritingConcreteTypeLoc<ArrayTypeLoc, |
1574 | | ConstantArrayTypeLoc, |
1575 | | ConstantArrayType> { |
1576 | | }; |
1577 | | |
1578 | | class IncompleteArrayTypeLoc : |
1579 | | public InheritingConcreteTypeLoc<ArrayTypeLoc, |
1580 | | IncompleteArrayTypeLoc, |
1581 | | IncompleteArrayType> { |
1582 | | }; |
1583 | | |
1584 | | class DependentSizedArrayTypeLoc : |
1585 | | public InheritingConcreteTypeLoc<ArrayTypeLoc, |
1586 | | DependentSizedArrayTypeLoc, |
1587 | | DependentSizedArrayType> { |
1588 | | public: |
1589 | 4.44k | void initializeLocal(ASTContext &Context, SourceLocation Loc) { |
1590 | 4.44k | ArrayTypeLoc::initializeLocal(Context, Loc); |
1591 | 4.44k | setSizeExpr(getTypePtr()->getSizeExpr()); |
1592 | 4.44k | } |
1593 | | }; |
1594 | | |
1595 | | class VariableArrayTypeLoc : |
1596 | | public InheritingConcreteTypeLoc<ArrayTypeLoc, |
1597 | | VariableArrayTypeLoc, |
1598 | | VariableArrayType> { |
1599 | | }; |
1600 | | |
1601 | | // Location information for a TemplateName. Rudimentary for now. |
1602 | | struct TemplateNameLocInfo { |
1603 | | SourceLocation NameLoc; |
1604 | | }; |
1605 | | |
1606 | | struct TemplateSpecializationLocInfo : TemplateNameLocInfo { |
1607 | | SourceLocation TemplateKWLoc; |
1608 | | SourceLocation LAngleLoc; |
1609 | | SourceLocation RAngleLoc; |
1610 | | }; |
1611 | | |
1612 | | class TemplateSpecializationTypeLoc : |
1613 | | public ConcreteTypeLoc<UnqualTypeLoc, |
1614 | | TemplateSpecializationTypeLoc, |
1615 | | TemplateSpecializationType, |
1616 | | TemplateSpecializationLocInfo> { |
1617 | | public: |
1618 | 166M | SourceLocation getTemplateKeywordLoc() const { |
1619 | 166M | return getLocalData()->TemplateKWLoc; |
1620 | 166M | } |
1621 | | |
1622 | 12.7M | void setTemplateKeywordLoc(SourceLocation Loc) { |
1623 | 12.7M | getLocalData()->TemplateKWLoc = Loc; |
1624 | 12.7M | } |
1625 | | |
1626 | 12.7M | SourceLocation getLAngleLoc() const { |
1627 | 12.7M | return getLocalData()->LAngleLoc; |
1628 | 12.7M | } |
1629 | | |
1630 | 12.7M | void setLAngleLoc(SourceLocation Loc) { |
1631 | 12.7M | getLocalData()->LAngleLoc = Loc; |
1632 | 12.7M | } |
1633 | | |
1634 | 147M | SourceLocation getRAngleLoc() const { |
1635 | 147M | return getLocalData()->RAngleLoc; |
1636 | 147M | } |
1637 | | |
1638 | 12.7M | void setRAngleLoc(SourceLocation Loc) { |
1639 | 12.7M | getLocalData()->RAngleLoc = Loc; |
1640 | 12.7M | } |
1641 | | |
1642 | 55.4M | unsigned getNumArgs() const { |
1643 | 55.4M | return getTypePtr()->template_arguments().size(); |
1644 | 55.4M | } |
1645 | | |
1646 | 17.3M | void setArgLocInfo(unsigned i, TemplateArgumentLocInfo AI) { |
1647 | 17.3M | getArgInfos()[i] = AI; |
1648 | 17.3M | } |
1649 | | |
1650 | 11.9M | TemplateArgumentLocInfo getArgLocInfo(unsigned i) const { |
1651 | 11.9M | return getArgInfos()[i]; |
1652 | 11.9M | } |
1653 | | |
1654 | 11.9M | TemplateArgumentLoc getArgLoc(unsigned i) const { |
1655 | 11.9M | return TemplateArgumentLoc(getTypePtr()->template_arguments()[i], |
1656 | 11.9M | getArgLocInfo(i)); |
1657 | 11.9M | } |
1658 | | |
1659 | 128M | SourceLocation getTemplateNameLoc() const { |
1660 | 128M | return getLocalData()->NameLoc; |
1661 | 128M | } |
1662 | | |
1663 | 12.7M | void setTemplateNameLoc(SourceLocation Loc) { |
1664 | 12.7M | getLocalData()->NameLoc = Loc; |
1665 | 12.7M | } |
1666 | | |
1667 | | /// - Copy the location information from the given info. |
1668 | 0 | void copy(TemplateSpecializationTypeLoc Loc) { |
1669 | 0 | unsigned size = getFullDataSize(); |
1670 | 0 | assert(size == Loc.getFullDataSize()); |
1671 | | |
1672 | | // We're potentially copying Expr references here. We don't |
1673 | | // bother retaining them because TypeSourceInfos live forever, so |
1674 | | // as long as the Expr was retained when originally written into |
1675 | | // the TypeLoc, we're okay. |
1676 | 0 | memcpy(Data, Loc.Data, size); |
1677 | 0 | } |
1678 | | |
1679 | 135M | SourceRange getLocalSourceRange() const { |
1680 | 135M | if (getTemplateKeywordLoc().isValid()) |
1681 | 25.3M | return SourceRange(getTemplateKeywordLoc(), getRAngleLoc()); |
1682 | 109M | else |
1683 | 109M | return SourceRange(getTemplateNameLoc(), getRAngleLoc()); |
1684 | 135M | } |
1685 | | |
1686 | 2.39M | void initializeLocal(ASTContext &Context, SourceLocation Loc) { |
1687 | 2.39M | setTemplateKeywordLoc(Loc); |
1688 | 2.39M | setTemplateNameLoc(Loc); |
1689 | 2.39M | setLAngleLoc(Loc); |
1690 | 2.39M | setRAngleLoc(Loc); |
1691 | 2.39M | initializeArgLocs(Context, getTypePtr()->template_arguments(), |
1692 | 2.39M | getArgInfos(), Loc); |
1693 | 2.39M | } |
1694 | | |
1695 | | static void initializeArgLocs(ASTContext &Context, |
1696 | | ArrayRef<TemplateArgument> Args, |
1697 | | TemplateArgumentLocInfo *ArgInfos, |
1698 | | SourceLocation Loc); |
1699 | | |
1700 | 45.7M | unsigned getExtraLocalDataSize() const { |
1701 | 45.7M | return getNumArgs() * sizeof(TemplateArgumentLocInfo); |
1702 | 45.7M | } |
1703 | | |
1704 | 162M | unsigned getExtraLocalDataAlignment() const { |
1705 | 162M | return alignof(TemplateArgumentLocInfo); |
1706 | 162M | } |
1707 | | |
1708 | | private: |
1709 | 31.7M | TemplateArgumentLocInfo *getArgInfos() const { |
1710 | 31.7M | return static_cast<TemplateArgumentLocInfo*>(getExtraLocalData()); |
1711 | 31.7M | } |
1712 | | }; |
1713 | | |
1714 | | struct DependentAddressSpaceLocInfo { |
1715 | | Expr *ExprOperand; |
1716 | | SourceRange OperandParens; |
1717 | | SourceLocation AttrLoc; |
1718 | | }; |
1719 | | |
1720 | | class DependentAddressSpaceTypeLoc |
1721 | | : public ConcreteTypeLoc<UnqualTypeLoc, |
1722 | | DependentAddressSpaceTypeLoc, |
1723 | | DependentAddressSpaceType, |
1724 | | DependentAddressSpaceLocInfo> { |
1725 | | public: |
1726 | | /// The location of the attribute name, i.e. |
1727 | | /// int * __attribute__((address_space(11))) |
1728 | | /// ^~~~~~~~~~~~~ |
1729 | 85 | SourceLocation getAttrNameLoc() const { |
1730 | 85 | return getLocalData()->AttrLoc; |
1731 | 85 | } |
1732 | 64 | void setAttrNameLoc(SourceLocation loc) { |
1733 | 64 | getLocalData()->AttrLoc = loc; |
1734 | 64 | } |
1735 | | |
1736 | | /// The attribute's expression operand, if it has one. |
1737 | | /// int * __attribute__((address_space(11))) |
1738 | | /// ^~ |
1739 | 11 | Expr *getAttrExprOperand() const { |
1740 | 11 | return getLocalData()->ExprOperand; |
1741 | 11 | } |
1742 | 64 | void setAttrExprOperand(Expr *e) { |
1743 | 64 | getLocalData()->ExprOperand = e; |
1744 | 64 | } |
1745 | | |
1746 | | /// The location of the parentheses around the operand, if there is |
1747 | | /// an operand. |
1748 | | /// int * __attribute__((address_space(11))) |
1749 | | /// ^ ^ |
1750 | 85 | SourceRange getAttrOperandParensRange() const { |
1751 | 85 | return getLocalData()->OperandParens; |
1752 | 85 | } |
1753 | 122 | void setAttrOperandParensRange(SourceRange range) { |
1754 | 122 | getLocalData()->OperandParens = range; |
1755 | 122 | } |
1756 | | |
1757 | 74 | SourceRange getLocalSourceRange() const { |
1758 | 74 | SourceRange range(getAttrNameLoc()); |
1759 | 74 | range.setEnd(getAttrOperandParensRange().getEnd()); |
1760 | 74 | return range; |
1761 | 74 | } |
1762 | | |
1763 | | /// Returns the type before the address space attribute application |
1764 | | /// area. |
1765 | | /// int * __attribute__((address_space(11))) * |
1766 | | /// ^ ^ |
1767 | 454 | QualType getInnerType() const { |
1768 | 454 | return this->getTypePtr()->getPointeeType(); |
1769 | 454 | } |
1770 | | |
1771 | 1 | TypeLoc getPointeeTypeLoc() const { |
1772 | 1 | return this->getInnerTypeLoc(); |
1773 | 1 | } |
1774 | | |
1775 | 58 | void initializeLocal(ASTContext &Context, SourceLocation loc) { |
1776 | 58 | setAttrNameLoc(loc); |
1777 | 58 | setAttrOperandParensRange(loc); |
1778 | 58 | setAttrOperandParensRange(SourceRange(loc)); |
1779 | 58 | setAttrExprOperand(getTypePtr()->getAddrSpaceExpr()); |
1780 | 58 | } |
1781 | | }; |
1782 | | |
1783 | | //===----------------------------------------------------------------------===// |
1784 | | // |
1785 | | // All of these need proper implementations. |
1786 | | // |
1787 | | //===----------------------------------------------------------------------===// |
1788 | | |
1789 | | // FIXME: size expression and attribute locations (or keyword if we |
1790 | | // ever fully support altivec syntax). |
1791 | | struct VectorTypeLocInfo { |
1792 | | SourceLocation NameLoc; |
1793 | | }; |
1794 | | |
1795 | | class VectorTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, VectorTypeLoc, |
1796 | | VectorType, VectorTypeLocInfo> { |
1797 | | public: |
1798 | 115k | SourceLocation getNameLoc() const { return this->getLocalData()->NameLoc; } |
1799 | | |
1800 | 149k | void setNameLoc(SourceLocation Loc) { this->getLocalData()->NameLoc = Loc; } |
1801 | | |
1802 | 57.0k | SourceRange getLocalSourceRange() const { |
1803 | 57.0k | return SourceRange(getNameLoc(), getNameLoc()); |
1804 | 57.0k | } |
1805 | | |
1806 | 148k | void initializeLocal(ASTContext &Context, SourceLocation Loc) { |
1807 | 148k | setNameLoc(Loc); |
1808 | 148k | } |
1809 | | |
1810 | 4 | TypeLoc getElementLoc() const { return getInnerTypeLoc(); } |
1811 | | |
1812 | 656k | QualType getInnerType() const { return this->getTypePtr()->getElementType(); } |
1813 | | }; |
1814 | | |
1815 | | // FIXME: size expression and attribute locations (or keyword if we |
1816 | | // ever fully support altivec syntax). |
1817 | | class DependentVectorTypeLoc |
1818 | | : public ConcreteTypeLoc<UnqualTypeLoc, DependentVectorTypeLoc, |
1819 | | DependentVectorType, VectorTypeLocInfo> { |
1820 | | public: |
1821 | 326 | SourceLocation getNameLoc() const { return this->getLocalData()->NameLoc; } |
1822 | | |
1823 | 70 | void setNameLoc(SourceLocation Loc) { this->getLocalData()->NameLoc = Loc; } |
1824 | | |
1825 | 134 | SourceRange getLocalSourceRange() const { |
1826 | 134 | return SourceRange(getNameLoc(), getNameLoc()); |
1827 | 134 | } |
1828 | | |
1829 | 52 | void initializeLocal(ASTContext &Context, SourceLocation Loc) { |
1830 | 52 | setNameLoc(Loc); |
1831 | 52 | } |
1832 | | |
1833 | 106 | TypeLoc getElementLoc() const { return getInnerTypeLoc(); } |
1834 | | |
1835 | 948 | QualType getInnerType() const { return this->getTypePtr()->getElementType(); } |
1836 | | }; |
1837 | | |
1838 | | // FIXME: size expression and attribute locations. |
1839 | | class ExtVectorTypeLoc |
1840 | | : public InheritingConcreteTypeLoc<VectorTypeLoc, ExtVectorTypeLoc, |
1841 | | ExtVectorType> {}; |
1842 | | |
1843 | | // FIXME: attribute locations. |
1844 | | // For some reason, this isn't a subtype of VectorType. |
1845 | | class DependentSizedExtVectorTypeLoc |
1846 | | : public ConcreteTypeLoc<UnqualTypeLoc, DependentSizedExtVectorTypeLoc, |
1847 | | DependentSizedExtVectorType, VectorTypeLocInfo> { |
1848 | | public: |
1849 | 6.84k | SourceLocation getNameLoc() const { return this->getLocalData()->NameLoc; } |
1850 | | |
1851 | 1.43k | void setNameLoc(SourceLocation Loc) { this->getLocalData()->NameLoc = Loc; } |
1852 | | |
1853 | 2.78k | SourceRange getLocalSourceRange() const { |
1854 | 2.78k | return SourceRange(getNameLoc(), getNameLoc()); |
1855 | 2.78k | } |
1856 | | |
1857 | 1.42k | void initializeLocal(ASTContext &Context, SourceLocation Loc) { |
1858 | 1.42k | setNameLoc(Loc); |
1859 | 1.42k | } |
1860 | | |
1861 | 1.26k | TypeLoc getElementLoc() const { return getInnerTypeLoc(); } |
1862 | | |
1863 | 13.5k | QualType getInnerType() const { return this->getTypePtr()->getElementType(); } |
1864 | | }; |
1865 | | |
1866 | | struct MatrixTypeLocInfo { |
1867 | | SourceLocation AttrLoc; |
1868 | | SourceRange OperandParens; |
1869 | | Expr *RowOperand; |
1870 | | Expr *ColumnOperand; |
1871 | | }; |
1872 | | |
1873 | | class MatrixTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, MatrixTypeLoc, |
1874 | | MatrixType, MatrixTypeLocInfo> { |
1875 | | public: |
1876 | | /// The location of the attribute name, i.e. |
1877 | | /// float __attribute__((matrix_type(4, 2))) |
1878 | | /// ^~~~~~~~~~~~~~~~~ |
1879 | 1.20k | SourceLocation getAttrNameLoc() const { return getLocalData()->AttrLoc; } |
1880 | 895 | void setAttrNameLoc(SourceLocation loc) { getLocalData()->AttrLoc = loc; } |
1881 | | |
1882 | | /// The attribute's row operand, if it has one. |
1883 | | /// float __attribute__((matrix_type(4, 2))) |
1884 | | /// ^ |
1885 | 383 | Expr *getAttrRowOperand() const { return getLocalData()->RowOperand; } |
1886 | 895 | void setAttrRowOperand(Expr *e) { getLocalData()->RowOperand = e; } |
1887 | | |
1888 | | /// The attribute's column operand, if it has one. |
1889 | | /// float __attribute__((matrix_type(4, 2))) |
1890 | | /// ^ |
1891 | 383 | Expr *getAttrColumnOperand() const { return getLocalData()->ColumnOperand; } |
1892 | 895 | void setAttrColumnOperand(Expr *e) { getLocalData()->ColumnOperand = e; } |
1893 | | |
1894 | | /// The location of the parentheses around the operand, if there is |
1895 | | /// an operand. |
1896 | | /// float __attribute__((matrix_type(4, 2))) |
1897 | | /// ^ ^ |
1898 | 1.20k | SourceRange getAttrOperandParensRange() const { |
1899 | 1.20k | return getLocalData()->OperandParens; |
1900 | 1.20k | } |
1901 | 895 | void setAttrOperandParensRange(SourceRange range) { |
1902 | 895 | getLocalData()->OperandParens = range; |
1903 | 895 | } |
1904 | | |
1905 | 842 | SourceRange getLocalSourceRange() const { |
1906 | 842 | SourceRange range(getAttrNameLoc()); |
1907 | 842 | range.setEnd(getAttrOperandParensRange().getEnd()); |
1908 | 842 | return range; |
1909 | 842 | } |
1910 | | |
1911 | 532 | void initializeLocal(ASTContext &Context, SourceLocation loc) { |
1912 | 532 | setAttrNameLoc(loc); |
1913 | 532 | setAttrOperandParensRange(loc); |
1914 | 532 | setAttrRowOperand(nullptr); |
1915 | 532 | setAttrColumnOperand(nullptr); |
1916 | 532 | } |
1917 | | }; |
1918 | | |
1919 | | class ConstantMatrixTypeLoc |
1920 | | : public InheritingConcreteTypeLoc<MatrixTypeLoc, ConstantMatrixTypeLoc, |
1921 | | ConstantMatrixType> {}; |
1922 | | |
1923 | | class DependentSizedMatrixTypeLoc |
1924 | | : public InheritingConcreteTypeLoc<MatrixTypeLoc, |
1925 | | DependentSizedMatrixTypeLoc, |
1926 | | DependentSizedMatrixType> {}; |
1927 | | |
1928 | | // FIXME: location of the '_Complex' keyword. |
1929 | | class ComplexTypeLoc : public InheritingConcreteTypeLoc<TypeSpecTypeLoc, |
1930 | | ComplexTypeLoc, |
1931 | | ComplexType> { |
1932 | | }; |
1933 | | |
1934 | | struct TypeofLocInfo { |
1935 | | SourceLocation TypeofLoc; |
1936 | | SourceLocation LParenLoc; |
1937 | | SourceLocation RParenLoc; |
1938 | | }; |
1939 | | |
1940 | | struct TypeOfExprTypeLocInfo : public TypeofLocInfo { |
1941 | | }; |
1942 | | |
1943 | | struct TypeOfTypeLocInfo : public TypeofLocInfo { |
1944 | | TypeSourceInfo *UnmodifiedTInfo; |
1945 | | }; |
1946 | | |
1947 | | template <class Derived, class TypeClass, class LocalData = TypeofLocInfo> |
1948 | | class TypeofLikeTypeLoc |
1949 | | : public ConcreteTypeLoc<UnqualTypeLoc, Derived, TypeClass, LocalData> { |
1950 | | public: |
1951 | 7.40k | SourceLocation getTypeofLoc() const { |
1952 | 7.40k | return this->getLocalData()->TypeofLoc; |
1953 | 7.40k | } clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getTypeofLoc() const Line | Count | Source | 1951 | 92 | SourceLocation getTypeofLoc() const { | 1952 | 92 | return this->getLocalData()->TypeofLoc; | 1953 | 92 | } |
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getTypeofLoc() const Line | Count | Source | 1951 | 7.31k | SourceLocation getTypeofLoc() const { | 1952 | 7.31k | return this->getLocalData()->TypeofLoc; | 1953 | 7.31k | } |
|
1954 | | |
1955 | 3.83k | void setTypeofLoc(SourceLocation Loc) { |
1956 | 3.83k | this->getLocalData()->TypeofLoc = Loc; |
1957 | 3.83k | } clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::setTypeofLoc(clang::SourceLocation) Line | Count | Source | 1955 | 3.66k | void setTypeofLoc(SourceLocation Loc) { | 1956 | 3.66k | this->getLocalData()->TypeofLoc = Loc; | 1957 | 3.66k | } |
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::setTypeofLoc(clang::SourceLocation) Line | Count | Source | 1955 | 173 | void setTypeofLoc(SourceLocation Loc) { | 1956 | 173 | this->getLocalData()->TypeofLoc = Loc; | 1957 | 173 | } |
|
1958 | | |
1959 | 405 | SourceLocation getLParenLoc() const { |
1960 | 405 | return this->getLocalData()->LParenLoc; |
1961 | 405 | } clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getLParenLoc() const Line | Count | Source | 1959 | 384 | SourceLocation getLParenLoc() const { | 1960 | 384 | return this->getLocalData()->LParenLoc; | 1961 | 384 | } |
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getLParenLoc() const Line | Count | Source | 1959 | 21 | SourceLocation getLParenLoc() const { | 1960 | 21 | return this->getLocalData()->LParenLoc; | 1961 | 21 | } |
|
1962 | | |
1963 | 3.83k | void setLParenLoc(SourceLocation Loc) { |
1964 | 3.83k | this->getLocalData()->LParenLoc = Loc; |
1965 | 3.83k | } clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::setLParenLoc(clang::SourceLocation) Line | Count | Source | 1963 | 3.66k | void setLParenLoc(SourceLocation Loc) { | 1964 | 3.66k | this->getLocalData()->LParenLoc = Loc; | 1965 | 3.66k | } |
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::setLParenLoc(clang::SourceLocation) Line | Count | Source | 1963 | 173 | void setLParenLoc(SourceLocation Loc) { | 1964 | 173 | this->getLocalData()->LParenLoc = Loc; | 1965 | 173 | } |
|
1966 | | |
1967 | 13.6k | SourceLocation getRParenLoc() const { |
1968 | 13.6k | return this->getLocalData()->RParenLoc; |
1969 | 13.6k | } clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::getRParenLoc() const Line | Count | Source | 1967 | 92 | SourceLocation getRParenLoc() const { | 1968 | 92 | return this->getLocalData()->RParenLoc; | 1969 | 92 | } |
clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::getRParenLoc() const Line | Count | Source | 1967 | 13.6k | SourceLocation getRParenLoc() const { | 1968 | 13.6k | return this->getLocalData()->RParenLoc; | 1969 | 13.6k | } |
|
1970 | | |
1971 | 3.83k | void setRParenLoc(SourceLocation Loc) { |
1972 | 3.83k | this->getLocalData()->RParenLoc = Loc; |
1973 | 3.83k | } clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::setRParenLoc(clang::SourceLocation) Line | Count | Source | 1971 | 3.66k | void setRParenLoc(SourceLocation Loc) { | 1972 | 3.66k | this->getLocalData()->RParenLoc = Loc; | 1973 | 3.66k | } |
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::setRParenLoc(clang::SourceLocation) Line | Count | Source | 1971 | 173 | void setRParenLoc(SourceLocation Loc) { | 1972 | 173 | this->getLocalData()->RParenLoc = Loc; | 1973 | 173 | } |
|
1974 | | |
1975 | | SourceRange getParensRange() const { |
1976 | | return SourceRange(getLParenLoc(), getRParenLoc()); |
1977 | | } |
1978 | | |
1979 | 3.41k | void setParensRange(SourceRange range) { |
1980 | 3.41k | setLParenLoc(range.getBegin()); |
1981 | 3.41k | setRParenLoc(range.getEnd()); |
1982 | 3.41k | } clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::setParensRange(clang::SourceRange) Line | Count | Source | 1979 | 3.25k | void setParensRange(SourceRange range) { | 1980 | 3.25k | setLParenLoc(range.getBegin()); | 1981 | 3.25k | setRParenLoc(range.getEnd()); | 1982 | 3.25k | } |
clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::setParensRange(clang::SourceRange) Line | Count | Source | 1979 | 157 | void setParensRange(SourceRange range) { | 1980 | 157 | setLParenLoc(range.getBegin()); | 1981 | 157 | setRParenLoc(range.getEnd()); | 1982 | 157 | } |
|
1983 | | |
1984 | 71 | SourceRange getLocalSourceRange() const { |
1985 | 71 | return SourceRange(getTypeofLoc(), getRParenLoc()); |
1986 | 71 | } |
1987 | | |
1988 | 29 | void initializeLocal(ASTContext &Context, SourceLocation Loc) { |
1989 | 29 | setTypeofLoc(Loc); |
1990 | 29 | setLParenLoc(Loc); |
1991 | 29 | setRParenLoc(Loc); |
1992 | 29 | } clang::TypeofLikeTypeLoc<clang::TypeOfExprTypeLoc, clang::TypeOfExprType, clang::TypeOfExprTypeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation) Line | Count | Source | 1988 | 29 | void initializeLocal(ASTContext &Context, SourceLocation Loc) { | 1989 | 29 | setTypeofLoc(Loc); | 1990 | 29 | setLParenLoc(Loc); | 1991 | 29 | setRParenLoc(Loc); | 1992 | 29 | } |
Unexecuted instantiation: clang::TypeofLikeTypeLoc<clang::TypeOfTypeLoc, clang::TypeOfType, clang::TypeOfTypeLocInfo>::initializeLocal(clang::ASTContext&, clang::SourceLocation) |
1993 | | }; |
1994 | | |
1995 | | class TypeOfExprTypeLoc : public TypeofLikeTypeLoc<TypeOfExprTypeLoc, |
1996 | | TypeOfExprType, |
1997 | | TypeOfExprTypeLocInfo> { |
1998 | | public: |
1999 | 4.63k | Expr* getUnderlyingExpr() const { |
2000 | 4.63k | return getTypePtr()->getUnderlyingExpr(); |
2001 | 4.63k | } |
2002 | | |
2003 | | // Reimplemented to account for GNU/C++ extension |
2004 | | // typeof unary-expression |
2005 | | // where there are no parentheses. |
2006 | | SourceRange getLocalSourceRange() const; |
2007 | | }; |
2008 | | |
2009 | | class TypeOfTypeLoc |
2010 | | : public TypeofLikeTypeLoc<TypeOfTypeLoc, TypeOfType, TypeOfTypeLocInfo> { |
2011 | | public: |
2012 | 0 | QualType getUnmodifiedType() const { |
2013 | 0 | return this->getTypePtr()->getUnmodifiedType(); |
2014 | 0 | } |
2015 | | |
2016 | 24 | TypeSourceInfo *getUnmodifiedTInfo() const { |
2017 | 24 | return this->getLocalData()->UnmodifiedTInfo; |
2018 | 24 | } |
2019 | | |
2020 | 173 | void setUnmodifiedTInfo(TypeSourceInfo *TI) const { |
2021 | 173 | this->getLocalData()->UnmodifiedTInfo = TI; |
2022 | 173 | } |
2023 | | |
2024 | | void initializeLocal(ASTContext &Context, SourceLocation Loc); |
2025 | | }; |
2026 | | |
2027 | | // decltype(expression) abc; |
2028 | | // ~~~~~~~~ DecltypeLoc |
2029 | | // ~ RParenLoc |
2030 | | // FIXME: add LParenLoc, it is tricky to support due to the limitation of |
2031 | | // annotated-decltype token. |
2032 | | struct DecltypeTypeLocInfo { |
2033 | | SourceLocation DecltypeLoc; |
2034 | | SourceLocation RParenLoc; |
2035 | | }; |
2036 | | class DecltypeTypeLoc |
2037 | | : public ConcreteTypeLoc<UnqualTypeLoc, DecltypeTypeLoc, DecltypeType, |
2038 | | DecltypeTypeLocInfo> { |
2039 | | public: |
2040 | 1 | Expr *getUnderlyingExpr() const { return getTypePtr()->getUnderlyingExpr(); } |
2041 | | |
2042 | 1.30M | SourceLocation getDecltypeLoc() const { return getLocalData()->DecltypeLoc; } |
2043 | 368k | void setDecltypeLoc(SourceLocation Loc) { getLocalData()->DecltypeLoc = Loc; } |
2044 | | |
2045 | 1.13M | SourceLocation getRParenLoc() const { return getLocalData()->RParenLoc; } |
2046 | 368k | void setRParenLoc(SourceLocation Loc) { getLocalData()->RParenLoc = Loc; } |
2047 | | |
2048 | 973k | SourceRange getLocalSourceRange() const { |
2049 | 973k | return SourceRange(getDecltypeLoc(), getRParenLoc()); |
2050 | 973k | } |
2051 | | |
2052 | 133k | void initializeLocal(ASTContext &Context, SourceLocation Loc) { |
2053 | 133k | setDecltypeLoc(Loc); |
2054 | 133k | setRParenLoc(Loc); |
2055 | 133k | } |
2056 | | }; |
2057 | | |
2058 | | struct UnaryTransformTypeLocInfo { |
2059 | | // FIXME: While there's only one unary transform right now, future ones may |
2060 | | // need different representations |
2061 | | SourceLocation KWLoc, LParenLoc, RParenLoc; |
2062 | | TypeSourceInfo *UnderlyingTInfo; |
2063 | | }; |
2064 | | |
2065 | | class UnaryTransformTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, |
2066 | | UnaryTransformTypeLoc, |
2067 | | UnaryTransformType, |
2068 | | UnaryTransformTypeLocInfo> { |
2069 | | public: |
2070 | 1.54M | SourceLocation getKWLoc() const { return getLocalData()->KWLoc; } |
2071 | 782k | void setKWLoc(SourceLocation Loc) { getLocalData()->KWLoc = Loc; } |
2072 | | |
2073 | 385k | SourceLocation getLParenLoc() const { return getLocalData()->LParenLoc; } |
2074 | 782k | void setLParenLoc(SourceLocation Loc) { getLocalData()->LParenLoc = Loc; } |
2075 | | |
2076 | 1.15M | SourceLocation getRParenLoc() const { return getLocalData()->RParenLoc; } |
2077 | 782k | void setRParenLoc(SourceLocation Loc) { getLocalData()->RParenLoc = Loc; } |
2078 | | |
2079 | 770k | TypeSourceInfo* getUnderlyingTInfo() const { |
2080 | 770k | return getLocalData()->UnderlyingTInfo; |
2081 | 770k | } |
2082 | | |
2083 | 782k | void setUnderlyingTInfo(TypeSourceInfo *TInfo) { |
2084 | 782k | getLocalData()->UnderlyingTInfo = TInfo; |
2085 | 782k | } |
2086 | | |
2087 | 772k | SourceRange getLocalSourceRange() const { |
2088 | 772k | return SourceRange(getKWLoc(), getRParenLoc()); |
2089 | 772k | } |
2090 | | |
2091 | 384k | SourceRange getParensRange() const { |
2092 | 384k | return SourceRange(getLParenLoc(), getRParenLoc()); |
2093 | 384k | } |
2094 | | |
2095 | 396k | void setParensRange(SourceRange Range) { |
2096 | 396k | setLParenLoc(Range.getBegin()); |
2097 | 396k | setRParenLoc(Range.getEnd()); |
2098 | 396k | } |
2099 | | |
2100 | | void initializeLocal(ASTContext &Context, SourceLocation Loc); |
2101 | | }; |
2102 | | |
2103 | | class DeducedTypeLoc |
2104 | | : public InheritingConcreteTypeLoc<TypeSpecTypeLoc, DeducedTypeLoc, |
2105 | | DeducedType> {}; |
2106 | | |
2107 | | struct AutoTypeLocInfo : TypeSpecLocInfo { |
2108 | | // For decltype(auto). |
2109 | | SourceLocation RParenLoc; |
2110 | | |
2111 | | ConceptReference *CR = nullptr; |
2112 | | }; |
2113 | | |
2114 | | class AutoTypeLoc |
2115 | | : public ConcreteTypeLoc<DeducedTypeLoc, |
2116 | | AutoTypeLoc, |
2117 | | AutoType, |
2118 | | AutoTypeLocInfo> { |
2119 | | public: |
2120 | 30 | AutoTypeKeyword getAutoKeyword() const { |
2121 | 30 | return getTypePtr()->getKeyword(); |
2122 | 30 | } |
2123 | | |
2124 | 115k | bool isDecltypeAuto() const { return getTypePtr()->isDecltypeAuto(); } |
2125 | 11.9k | SourceLocation getRParenLoc() const { return getLocalData()->RParenLoc; } |
2126 | 49.7k | void setRParenLoc(SourceLocation Loc) { getLocalData()->RParenLoc = Loc; } |
2127 | | |
2128 | 126k | bool isConstrained() const { |
2129 | 126k | return getTypePtr()->isConstrained(); |
2130 | 126k | } |
2131 | | |
2132 | 49.4k | void setConceptReference(ConceptReference *CR) { getLocalData()->CR = CR; } |
2133 | | |
2134 | 6.32k | ConceptReference *getConceptReference() const { return getLocalData()->CR; } |
2135 | | |
2136 | | // FIXME: Several of the following functions can be removed. Instead the |
2137 | | // caller can directly work with the ConceptReference. |
2138 | 1.33k | const NestedNameSpecifierLoc getNestedNameSpecifierLoc() const { |
2139 | 1.33k | if (const auto *CR = getConceptReference()) |
2140 | 1.33k | return CR->getNestedNameSpecifierLoc(); |
2141 | 0 | return NestedNameSpecifierLoc(); |
2142 | 1.33k | } |
2143 | | |
2144 | 1.35k | SourceLocation getTemplateKWLoc() const { |
2145 | 1.35k | if (const auto *CR = getConceptReference()) |
2146 | 1.35k | return CR->getTemplateKWLoc(); |
2147 | 0 | return SourceLocation(); |
2148 | 1.35k | } |
2149 | | |
2150 | 1.24k | SourceLocation getConceptNameLoc() const { |
2151 | 1.24k | if (const auto *CR = getConceptReference()) |
2152 | 1.24k | return CR->getConceptNameLoc(); |
2153 | 0 | return SourceLocation(); |
2154 | 1.24k | } |
2155 | | |
2156 | 108 | NamedDecl *getFoundDecl() const { |
2157 | 108 | if (const auto *CR = getConceptReference()) |
2158 | 108 | return CR->getFoundDecl(); |
2159 | 0 | return nullptr; |
2160 | 108 | } |
2161 | | |
2162 | 43 | ConceptDecl *getNamedConcept() const { |
2163 | 43 | if (const auto *CR = getConceptReference()) |
2164 | 30 | return CR->getNamedConcept(); |
2165 | 13 | return nullptr; |
2166 | 43 | } |
2167 | | |
2168 | 30 | DeclarationNameInfo getConceptNameInfo() const { |
2169 | 30 | return getConceptReference()->getConceptNameInfo(); |
2170 | 30 | } |
2171 | | |
2172 | 22 | bool hasExplicitTemplateArgs() const { |
2173 | 22 | return (getConceptReference() && |
2174 | 22 | getConceptReference()->getTemplateArgsAsWritten() && |
2175 | 22 | getConceptReference() |
2176 | 22 | ->getTemplateArgsAsWritten() |
2177 | 22 | ->getLAngleLoc() |
2178 | 22 | .isValid()); |
2179 | 22 | } |
2180 | | |
2181 | 245 | SourceLocation getLAngleLoc() const { |
2182 | 245 | if (const auto *CR = getConceptReference()) |
2183 | 245 | if (const auto *TAAW = CR->getTemplateArgsAsWritten()) |
2184 | 245 | return TAAW->getLAngleLoc(); |
2185 | 0 | return SourceLocation(); |
2186 | 245 | } |
2187 | | |
2188 | 245 | SourceLocation getRAngleLoc() const { |
2189 | 245 | if (const auto *CR = getConceptReference()) |
2190 | 245 | if (const auto *TAAW = CR->getTemplateArgsAsWritten()) |
2191 | 245 | return TAAW->getRAngleLoc(); |
2192 | 0 | return SourceLocation(); |
2193 | 245 | } |
2194 | | |
2195 | 245 | unsigned getNumArgs() const { |
2196 | 245 | return getTypePtr()->getTypeConstraintArguments().size(); |
2197 | 245 | } |
2198 | | |
2199 | 86 | TemplateArgumentLoc getArgLoc(unsigned i) const { |
2200 | 86 | const auto *CR = getConceptReference(); |
2201 | 86 | assert(CR && "No ConceptReference"); |
2202 | 86 | return CR->getTemplateArgsAsWritten()->getTemplateArgs()[i]; |
2203 | 86 | } |
2204 | | |
2205 | 112k | SourceRange getLocalSourceRange() const { |
2206 | 112k | return {isConstrained() |
2207 | 112k | ? (1.16k getNestedNameSpecifierLoc()1.16k |
2208 | 1.16k | ? getNestedNameSpecifierLoc().getBeginLoc()38 |
2209 | 1.16k | : (1.12k getTemplateKWLoc().isValid()1.12k ? getTemplateKWLoc()120 |
2210 | 1.12k | : getConceptNameLoc()1.00k )) |
2211 | 112k | : getNameLoc()111k , |
2212 | 112k | isDecltypeAuto() ? getRParenLoc()3.48k : getNameLoc()109k }; |
2213 | 112k | } |
2214 | | |
2215 | 147k | void copy(AutoTypeLoc Loc) { |
2216 | 147k | unsigned size = getFullDataSize(); |
2217 | 147k | assert(size == Loc.getFullDataSize()); |
2218 | 147k | memcpy(Data, Loc.Data, size); |
2219 | 147k | } |
2220 | | |
2221 | | void initializeLocal(ASTContext &Context, SourceLocation Loc); |
2222 | | }; |
2223 | | |
2224 | | class DeducedTemplateSpecializationTypeLoc |
2225 | | : public InheritingConcreteTypeLoc<DeducedTypeLoc, |
2226 | | DeducedTemplateSpecializationTypeLoc, |
2227 | | DeducedTemplateSpecializationType> { |
2228 | | public: |
2229 | 1.59k | SourceLocation getTemplateNameLoc() const { |
2230 | 1.59k | return getNameLoc(); |
2231 | 1.59k | } |
2232 | | |
2233 | 136 | void setTemplateNameLoc(SourceLocation Loc) { |
2234 | 136 | setNameLoc(Loc); |
2235 | 136 | } |
2236 | | }; |
2237 | | |
2238 | | struct ElaboratedLocInfo { |
2239 | | SourceLocation ElaboratedKWLoc; |
2240 | | |
2241 | | /// Data associated with the nested-name-specifier location. |
2242 | | void *QualifierData; |
2243 | | }; |
2244 | | |
2245 | | class ElaboratedTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, |
2246 | | ElaboratedTypeLoc, |
2247 | | ElaboratedType, |
2248 | | ElaboratedLocInfo> { |
2249 | | public: |
2250 | 33.6M | SourceLocation getElaboratedKeywordLoc() const { |
2251 | 33.6M | return !isEmpty() ? getLocalData()->ElaboratedKWLoc2.02M : SourceLocation()31.6M ; |
2252 | 33.6M | } |
2253 | | |
2254 | 141M | void setElaboratedKeywordLoc(SourceLocation Loc) { |
2255 | 141M | if (isEmpty()) { |
2256 | 139M | assert(Loc.isInvalid()); |
2257 | 139M | return; |
2258 | 139M | } |
2259 | 2.38M | getLocalData()->ElaboratedKWLoc = Loc; |
2260 | 2.38M | } |
2261 | | |
2262 | 34.6M | NestedNameSpecifierLoc getQualifierLoc() const { |
2263 | 34.6M | return !isEmpty() ? NestedNameSpecifierLoc(getTypePtr()->getQualifier(), |
2264 | 2.07M | getLocalData()->QualifierData) |
2265 | 34.6M | : NestedNameSpecifierLoc()32.5M ; |
2266 | 34.6M | } |
2267 | | |
2268 | 140M | void setQualifierLoc(NestedNameSpecifierLoc QualifierLoc) { |
2269 | 140M | assert(QualifierLoc.getNestedNameSpecifier() == |
2270 | 140M | getTypePtr()->getQualifier() && |
2271 | 140M | "Inconsistent nested-name-specifier pointer"); |
2272 | 140M | if (isEmpty()) { |
2273 | 137M | assert(!QualifierLoc.hasQualifier()); |
2274 | 137M | return; |
2275 | 137M | } |
2276 | 2.38M | getLocalData()->QualifierData = QualifierLoc.getOpaqueData(); |
2277 | 2.38M | } |
2278 | | |
2279 | 22.5M | SourceRange getLocalSourceRange() const { |
2280 | 22.5M | if (getElaboratedKeywordLoc().isValid()) |
2281 | 572k | if (getQualifierLoc()) |
2282 | 366k | return SourceRange(getElaboratedKeywordLoc(), |
2283 | 366k | getQualifierLoc().getEndLoc()); |
2284 | 206k | else |
2285 | 206k | return SourceRange(getElaboratedKeywordLoc()); |
2286 | 22.0M | else |
2287 | 22.0M | return getQualifierLoc().getSourceRange(); |
2288 | 22.5M | } |
2289 | | |
2290 | | void initializeLocal(ASTContext &Context, SourceLocation Loc); |
2291 | | |
2292 | 6.51M | TypeLoc getNamedTypeLoc() const { return getInnerTypeLoc(); } |
2293 | | |
2294 | 696M | QualType getInnerType() const { return getTypePtr()->getNamedType(); } |
2295 | | |
2296 | 876M | bool isEmpty() const { |
2297 | 876M | return getTypePtr()->getKeyword() == ElaboratedTypeKeyword::None && |
2298 | 876M | !getTypePtr()->getQualifier()861M ; |
2299 | 876M | } |
2300 | | |
2301 | 268M | unsigned getLocalDataAlignment() const { |
2302 | | // FIXME: We want to return 1 here in the empty case, but |
2303 | | // there are bugs in how alignment is handled in TypeLocs |
2304 | | // that prevent this from working. |
2305 | 268M | return ConcreteTypeLoc::getLocalDataAlignment(); |
2306 | 268M | } |
2307 | | |
2308 | 522M | unsigned getLocalDataSize() const { |
2309 | 522M | return !isEmpty() ? ConcreteTypeLoc::getLocalDataSize()12.5M : 0509M ; |
2310 | 522M | } |
2311 | | |
2312 | 2.09M | void copy(ElaboratedTypeLoc Loc) { |
2313 | 2.09M | unsigned size = getFullDataSize(); |
2314 | 2.09M | assert(size == Loc.getFullDataSize()); |
2315 | 2.09M | memcpy(Data, Loc.Data, size); |
2316 | 2.09M | } |
2317 | | }; |
2318 | | |
2319 | | // This is exactly the structure of an ElaboratedTypeLoc whose inner |
2320 | | // type is some sort of TypeDeclTypeLoc. |
2321 | | struct DependentNameLocInfo : ElaboratedLocInfo { |
2322 | | SourceLocation NameLoc; |
2323 | | }; |
2324 | | |
2325 | | class DependentNameTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, |
2326 | | DependentNameTypeLoc, |
2327 | | DependentNameType, |
2328 | | DependentNameLocInfo> { |
2329 | | public: |
2330 | 11.3M | SourceLocation getElaboratedKeywordLoc() const { |
2331 | 11.3M | return this->getLocalData()->ElaboratedKWLoc; |
2332 | 11.3M | } |
2333 | | |
2334 | 2.60M | void setElaboratedKeywordLoc(SourceLocation Loc) { |
2335 | 2.60M | this->getLocalData()->ElaboratedKWLoc = Loc; |
2336 | 2.60M | } |
2337 | | |
2338 | 1.62M | NestedNameSpecifierLoc getQualifierLoc() const { |
2339 | 1.62M | return NestedNameSpecifierLoc(getTypePtr()->getQualifier(), |
2340 | 1.62M | getLocalData()->QualifierData); |
2341 | 1.62M | } |
2342 | | |
2343 | 2.60M | void setQualifierLoc(NestedNameSpecifierLoc QualifierLoc) { |
2344 | 2.60M | assert(QualifierLoc.getNestedNameSpecifier() |
2345 | 2.60M | == getTypePtr()->getQualifier() && |
2346 | 2.60M | "Inconsistent nested-name-specifier pointer"); |
2347 | 2.60M | getLocalData()->QualifierData = QualifierLoc.getOpaqueData(); |
2348 | 2.60M | } |
2349 | | |
2350 | 7.14M | SourceLocation getNameLoc() const { |
2351 | 7.14M | return this->getLocalData()->NameLoc; |
2352 | 7.14M | } |
2353 | | |
2354 | 2.60M | void setNameLoc(SourceLocation Loc) { |
2355 | 2.60M | this->getLocalData()->NameLoc = Loc; |
2356 | 2.60M | } |
2357 | | |
2358 | 4.16M | SourceRange getLocalSourceRange() const { |
2359 | 4.16M | if (getElaboratedKeywordLoc().isValid()) |
2360 | 4.15M | return SourceRange(getElaboratedKeywordLoc(), getNameLoc()); |
2361 | 9.54k | else |
2362 | 9.54k | return SourceRange(getQualifierLoc().getBeginLoc(), getNameLoc()); |
2363 | 4.16M | } |
2364 | | |
2365 | 453k | void copy(DependentNameTypeLoc Loc) { |
2366 | 453k | unsigned size = getFullDataSize(); |
2367 | 453k | assert(size == Loc.getFullDataSize()); |
2368 | 453k | memcpy(Data, Loc.Data, size); |
2369 | 453k | } |
2370 | | |
2371 | | void initializeLocal(ASTContext &Context, SourceLocation Loc); |
2372 | | }; |
2373 | | |
2374 | | struct DependentTemplateSpecializationLocInfo : DependentNameLocInfo { |
2375 | | SourceLocation TemplateKWLoc; |
2376 | | SourceLocation LAngleLoc; |
2377 | | SourceLocation RAngleLoc; |
2378 | | // followed by a TemplateArgumentLocInfo[] |
2379 | | }; |
2380 | | |
2381 | | class DependentTemplateSpecializationTypeLoc : |
2382 | | public ConcreteTypeLoc<UnqualTypeLoc, |
2383 | | DependentTemplateSpecializationTypeLoc, |
2384 | | DependentTemplateSpecializationType, |
2385 | | DependentTemplateSpecializationLocInfo> { |
2386 | | public: |
2387 | 277k | SourceLocation getElaboratedKeywordLoc() const { |
2388 | 277k | return this->getLocalData()->ElaboratedKWLoc; |
2389 | 277k | } |
2390 | | |
2391 | 95.0k | void setElaboratedKeywordLoc(SourceLocation Loc) { |
2392 | 95.0k | this->getLocalData()->ElaboratedKWLoc = Loc; |
2393 | 95.0k | } |
2394 | | |
2395 | 144k | NestedNameSpecifierLoc getQualifierLoc() const { |
2396 | 144k | if (!getLocalData()->QualifierData) |
2397 | 244 | return NestedNameSpecifierLoc(); |
2398 | | |
2399 | 143k | return NestedNameSpecifierLoc(getTypePtr()->getQualifier(), |
2400 | 143k | getLocalData()->QualifierData); |
2401 | 144k | } |
2402 | | |
2403 | 95.0k | void setQualifierLoc(NestedNameSpecifierLoc QualifierLoc) { |
2404 | 95.0k | if (!QualifierLoc) { |
2405 | | // Even if we have a nested-name-specifier in the dependent |
2406 | | // template specialization type, we won't record the nested-name-specifier |
2407 | | // location information when this type-source location information is |
2408 | | // part of a nested-name-specifier. |
2409 | 43 | getLocalData()->QualifierData = nullptr; |
2410 | 43 | return; |
2411 | 43 | } |
2412 | | |
2413 | 95.0k | assert(QualifierLoc.getNestedNameSpecifier() |
2414 | 95.0k | == getTypePtr()->getQualifier() && |
2415 | 95.0k | "Inconsistent nested-name-specifier pointer"); |
2416 | 95.0k | getLocalData()->QualifierData = QualifierLoc.getOpaqueData(); |
2417 | 95.0k | } |
2418 | | |
2419 | 111k | SourceLocation getTemplateKeywordLoc() const { |
2420 | 111k | return getLocalData()->TemplateKWLoc; |
2421 | 111k | } |
2422 | | |
2423 | 95.0k | void setTemplateKeywordLoc(SourceLocation Loc) { |
2424 | 95.0k | getLocalData()->TemplateKWLoc = Loc; |
2425 | 95.0k | } |
2426 | | |
2427 | 114k | SourceLocation getTemplateNameLoc() const { |
2428 | 114k | return this->getLocalData()->NameLoc; |
2429 | 114k | } |
2430 | | |
2431 | 95.0k | void setTemplateNameLoc(SourceLocation Loc) { |
2432 | 95.0k | this->getLocalData()->NameLoc = Loc; |
2433 | 95.0k | } |
2434 | | |
2435 | 110k | SourceLocation getLAngleLoc() const { |
2436 | 110k | return this->getLocalData()->LAngleLoc; |
2437 | 110k | } |
2438 | | |
2439 | 95.0k | void setLAngleLoc(SourceLocation Loc) { |
2440 | 95.0k | this->getLocalData()->LAngleLoc = Loc; |
2441 | 95.0k | } |
2442 | | |
2443 | 233k | SourceLocation getRAngleLoc() const { |
2444 | 233k | return this->getLocalData()->RAngleLoc; |
2445 | 233k | } |
2446 | | |
2447 | 95.0k | void setRAngleLoc(SourceLocation Loc) { |
2448 | 95.0k | this->getLocalData()->RAngleLoc = Loc; |
2449 | 95.0k | } |
2450 | | |
2451 | 333k | unsigned getNumArgs() const { |
2452 | 333k | return getTypePtr()->template_arguments().size(); |
2453 | 333k | } |
2454 | | |
2455 | 95.1k | void setArgLocInfo(unsigned i, TemplateArgumentLocInfo AI) { |
2456 | 95.1k | getArgInfos()[i] = AI; |
2457 | 95.1k | } |
2458 | | |
2459 | 83.9k | TemplateArgumentLocInfo getArgLocInfo(unsigned i) const { |
2460 | 83.9k | return getArgInfos()[i]; |
2461 | 83.9k | } |
2462 | | |
2463 | 83.9k | TemplateArgumentLoc getArgLoc(unsigned i) const { |
2464 | 83.9k | return TemplateArgumentLoc(getTypePtr()->template_arguments()[i], |
2465 | 83.9k | getArgLocInfo(i)); |
2466 | 83.9k | } |
2467 | | |
2468 | 122k | SourceRange getLocalSourceRange() const { |
2469 | 122k | if (getElaboratedKeywordLoc().isValid()) |
2470 | 103k | return SourceRange(getElaboratedKeywordLoc(), getRAngleLoc()); |
2471 | 19.7k | else if (getQualifierLoc()) |
2472 | 19.4k | return SourceRange(getQualifierLoc().getBeginLoc(), getRAngleLoc()); |
2473 | 244 | else if (getTemplateKeywordLoc().isValid()) |
2474 | 192 | return SourceRange(getTemplateKeywordLoc(), getRAngleLoc()); |
2475 | 52 | else |
2476 | 52 | return SourceRange(getTemplateNameLoc(), getRAngleLoc()); |
2477 | 122k | } |
2478 | | |
2479 | 12.0k | void copy(DependentTemplateSpecializationTypeLoc Loc) { |
2480 | 12.0k | unsigned size = getFullDataSize(); |
2481 | 12.0k | assert(size == Loc.getFullDataSize()); |
2482 | 12.0k | memcpy(Data, Loc.Data, size); |
2483 | 12.0k | } |
2484 | | |
2485 | | void initializeLocal(ASTContext &Context, SourceLocation Loc); |
2486 | | |
2487 | 275k | unsigned getExtraLocalDataSize() const { |
2488 | 275k | return getNumArgs() * sizeof(TemplateArgumentLocInfo); |
2489 | 275k | } |
2490 | | |
2491 | 780k | unsigned getExtraLocalDataAlignment() const { |
2492 | 780k | return alignof(TemplateArgumentLocInfo); |
2493 | 780k | } |
2494 | | |
2495 | | private: |
2496 | 225k | TemplateArgumentLocInfo *getArgInfos() const { |
2497 | 225k | return static_cast<TemplateArgumentLocInfo*>(getExtraLocalData()); |
2498 | 225k | } |
2499 | | }; |
2500 | | |
2501 | | struct PackExpansionTypeLocInfo { |
2502 | | SourceLocation EllipsisLoc; |
2503 | | }; |
2504 | | |
2505 | | class PackExpansionTypeLoc |
2506 | | : public ConcreteTypeLoc<UnqualTypeLoc, PackExpansionTypeLoc, |
2507 | | PackExpansionType, PackExpansionTypeLocInfo> { |
2508 | | public: |
2509 | 1.17M | SourceLocation getEllipsisLoc() const { |
2510 | 1.17M | return this->getLocalData()->EllipsisLoc; |
2511 | 1.17M | } |
2512 | | |
2513 | 468k | void setEllipsisLoc(SourceLocation Loc) { |
2514 | 468k | this->getLocalData()->EllipsisLoc = Loc; |
2515 | 468k | } |
2516 | | |
2517 | 410k | SourceRange getLocalSourceRange() const { |
2518 | 410k | return SourceRange(getEllipsisLoc(), getEllipsisLoc()); |
2519 | 410k | } |
2520 | | |
2521 | 108k | void initializeLocal(ASTContext &Context, SourceLocation Loc) { |
2522 | 108k | setEllipsisLoc(Loc); |
2523 | 108k | } |
2524 | | |
2525 | 391k | TypeLoc getPatternLoc() const { |
2526 | 391k | return getInnerTypeLoc(); |
2527 | 391k | } |
2528 | | |
2529 | 3.99M | QualType getInnerType() const { |
2530 | 3.99M | return this->getTypePtr()->getPattern(); |
2531 | 3.99M | } |
2532 | | }; |
2533 | | |
2534 | | struct AtomicTypeLocInfo { |
2535 | | SourceLocation KWLoc, LParenLoc, RParenLoc; |
2536 | | }; |
2537 | | |
2538 | | class AtomicTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, AtomicTypeLoc, |
2539 | | AtomicType, AtomicTypeLocInfo> { |
2540 | | public: |
2541 | 4.79k | TypeLoc getValueLoc() const { |
2542 | 4.79k | return this->getInnerTypeLoc(); |
2543 | 4.79k | } |
2544 | | |
2545 | 13.4k | SourceRange getLocalSourceRange() const { |
2546 | 13.4k | return SourceRange(getKWLoc(), getRParenLoc()); |
2547 | 13.4k | } |
2548 | | |
2549 | 15.2k | SourceLocation getKWLoc() const { |
2550 | 15.2k | return this->getLocalData()->KWLoc; |
2551 | 15.2k | } |
2552 | | |
2553 | 15.2k | void setKWLoc(SourceLocation Loc) { |
2554 | 15.2k | this->getLocalData()->KWLoc = Loc; |
2555 | 15.2k | } |
2556 | | |
2557 | 1.21k | SourceLocation getLParenLoc() const { |
2558 | 1.21k | return this->getLocalData()->LParenLoc; |
2559 | 1.21k | } |
2560 | | |
2561 | 15.2k | void setLParenLoc(SourceLocation Loc) { |
2562 | 15.2k | this->getLocalData()->LParenLoc = Loc; |
2563 | 15.2k | } |
2564 | | |
2565 | 14.6k | SourceLocation getRParenLoc() const { |
2566 | 14.6k | return this->getLocalData()->RParenLoc; |
2567 | 14.6k | } |
2568 | | |
2569 | 15.2k | void setRParenLoc(SourceLocation Loc) { |
2570 | 15.2k | this->getLocalData()->RParenLoc = Loc; |
2571 | 15.2k | } |
2572 | | |
2573 | 0 | SourceRange getParensRange() const { |
2574 | 0 | return SourceRange(getLParenLoc(), getRParenLoc()); |
2575 | 0 | } |
2576 | | |
2577 | 3.32k | void setParensRange(SourceRange Range) { |
2578 | 3.32k | setLParenLoc(Range.getBegin()); |
2579 | 3.32k | setRParenLoc(Range.getEnd()); |
2580 | 3.32k | } |
2581 | | |
2582 | 11.1k | void initializeLocal(ASTContext &Context, SourceLocation Loc) { |
2583 | 11.1k | setKWLoc(Loc); |
2584 | 11.1k | setLParenLoc(Loc); |
2585 | 11.1k | setRParenLoc(Loc); |
2586 | 11.1k | } |
2587 | | |
2588 | 81.7k | QualType getInnerType() const { |
2589 | 81.7k | return this->getTypePtr()->getValueType(); |
2590 | 81.7k | } |
2591 | | }; |
2592 | | |
2593 | | struct PipeTypeLocInfo { |
2594 | | SourceLocation KWLoc; |
2595 | | }; |
2596 | | |
2597 | | class PipeTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, PipeTypeLoc, PipeType, |
2598 | | PipeTypeLocInfo> { |
2599 | | public: |
2600 | 2 | TypeLoc getValueLoc() const { return this->getInnerTypeLoc(); } |
2601 | | |
2602 | 6 | SourceRange getLocalSourceRange() const { return SourceRange(getKWLoc()); } |
2603 | | |
2604 | 21 | SourceLocation getKWLoc() const { return this->getLocalData()->KWLoc; } |
2605 | 261 | void setKWLoc(SourceLocation Loc) { this->getLocalData()->KWLoc = Loc; } |
2606 | | |
2607 | 0 | void initializeLocal(ASTContext &Context, SourceLocation Loc) { |
2608 | 0 | setKWLoc(Loc); |
2609 | 0 | } |
2610 | | |
2611 | 1.09k | QualType getInnerType() const { return this->getTypePtr()->getElementType(); } |
2612 | | }; |
2613 | | |
2614 | | template <typename T> |
2615 | 36.7M | inline T TypeLoc::getAsAdjusted() const { |
2616 | 36.7M | TypeLoc Cur = *this; |
2617 | 36.7M | while (!T::isKind(Cur)) { |
2618 | 36.6M | if (auto PTL = Cur.getAs<ParenTypeLoc>()) |
2619 | 144 | Cur = PTL.getInnerLoc(); |
2620 | 36.6M | else if (auto ATL = Cur.getAs<AttributedTypeLoc>()) |
2621 | 52 | Cur = ATL.getModifiedLoc(); |
2622 | 36.6M | else if (auto ATL = Cur.getAs<BTFTagAttributedTypeLoc>()) |
2623 | 0 | Cur = ATL.getWrappedLoc(); |
2624 | 36.6M | else if (auto ETL = Cur.getAs<ElaboratedTypeLoc>()) |
2625 | 1.75k | Cur = ETL.getNamedTypeLoc(); |
2626 | 36.6M | else if (auto ATL = Cur.getAs<AdjustedTypeLoc>()) |
2627 | 0 | Cur = ATL.getOriginalLoc(); |
2628 | 36.6M | else if (auto MQL = Cur.getAs<MacroQualifiedTypeLoc>()) |
2629 | 13.1k | Cur = MQL.getInnerLoc(); |
2630 | 36.6M | else |
2631 | 36.6M | break; |
2632 | 36.6M | } |
2633 | 36.7M | return Cur.getAs<T>(); |
2634 | 36.7M | } clang::TypedefTypeLoc clang::TypeLoc::getAsAdjusted<clang::TypedefTypeLoc>() const Line | Count | Source | 2615 | 15.7k | inline T TypeLoc::getAsAdjusted() const { | 2616 | 15.7k | TypeLoc Cur = *this; | 2617 | 15.8k | while (!T::isKind(Cur)) { | 2618 | 15.7k | if (auto PTL = Cur.getAs<ParenTypeLoc>()) | 2619 | 0 | Cur = PTL.getInnerLoc(); | 2620 | 15.7k | else if (auto ATL = Cur.getAs<AttributedTypeLoc>()) | 2621 | 4 | Cur = ATL.getModifiedLoc(); | 2622 | 15.7k | else if (auto ATL = Cur.getAs<BTFTagAttributedTypeLoc>()) | 2623 | 0 | Cur = ATL.getWrappedLoc(); | 2624 | 15.7k | else if (auto ETL = Cur.getAs<ElaboratedTypeLoc>()) | 2625 | 22 | Cur = ETL.getNamedTypeLoc(); | 2626 | 15.7k | else if (auto ATL = Cur.getAs<AdjustedTypeLoc>()) | 2627 | 0 | Cur = ATL.getOriginalLoc(); | 2628 | 15.7k | else if (auto MQL = Cur.getAs<MacroQualifiedTypeLoc>()) | 2629 | 0 | Cur = MQL.getInnerLoc(); | 2630 | 15.7k | else | 2631 | 15.7k | break; | 2632 | 15.7k | } | 2633 | 15.7k | return Cur.getAs<T>(); | 2634 | 15.7k | } |
clang::FunctionProtoTypeLoc clang::TypeLoc::getAsAdjusted<clang::FunctionProtoTypeLoc>() const Line | Count | Source | 2615 | 17.2k | inline T TypeLoc::getAsAdjusted() const { | 2616 | 17.2k | TypeLoc Cur = *this; | 2617 | 17.3k | while (!T::isKind(Cur)) { | 2618 | 1.05k | if (auto PTL = Cur.getAs<ParenTypeLoc>()) | 2619 | 0 | Cur = PTL.getInnerLoc(); | 2620 | 1.05k | else if (auto ATL = Cur.getAs<AttributedTypeLoc>()) | 2621 | 47 | Cur = ATL.getModifiedLoc(); | 2622 | 1.00k | else if (auto ATL = Cur.getAs<BTFTagAttributedTypeLoc>()) | 2623 | 0 | Cur = ATL.getWrappedLoc(); | 2624 | 1.00k | else if (auto ETL = Cur.getAs<ElaboratedTypeLoc>()) | 2625 | 4 | Cur = ETL.getNamedTypeLoc(); | 2626 | 1.00k | else if (auto ATL = Cur.getAs<AdjustedTypeLoc>()) | 2627 | 0 | Cur = ATL.getOriginalLoc(); | 2628 | 1.00k | else if (auto MQL = Cur.getAs<MacroQualifiedTypeLoc>()) | 2629 | 1 | Cur = MQL.getInnerLoc(); | 2630 | 1.00k | else | 2631 | 1.00k | break; | 2632 | 1.05k | } | 2633 | 17.2k | return Cur.getAs<T>(); | 2634 | 17.2k | } |
clang::AttributedTypeLoc clang::TypeLoc::getAsAdjusted<clang::AttributedTypeLoc>() const Line | Count | Source | 2615 | 36.6M | inline T TypeLoc::getAsAdjusted() const { | 2616 | 36.6M | TypeLoc Cur = *this; | 2617 | 36.6M | while (!T::isKind(Cur)) { | 2618 | 36.6M | if (auto PTL = Cur.getAs<ParenTypeLoc>()) | 2619 | 144 | Cur = PTL.getInnerLoc(); | 2620 | 36.6M | else if (auto ATL = Cur.getAs<AttributedTypeLoc>()) | 2621 | 0 | Cur = ATL.getModifiedLoc(); | 2622 | 36.6M | else if (auto ATL = Cur.getAs<BTFTagAttributedTypeLoc>()) | 2623 | 0 | Cur = ATL.getWrappedLoc(); | 2624 | 36.6M | else if (auto ETL = Cur.getAs<ElaboratedTypeLoc>()) | 2625 | 147 | Cur = ETL.getNamedTypeLoc(); | 2626 | 36.6M | else if (auto ATL = Cur.getAs<AdjustedTypeLoc>()) | 2627 | 0 | Cur = ATL.getOriginalLoc(); | 2628 | 36.6M | else if (auto MQL = Cur.getAs<MacroQualifiedTypeLoc>()) | 2629 | 13.1k | Cur = MQL.getInnerLoc(); | 2630 | 36.6M | else | 2631 | 36.6M | break; | 2632 | 36.6M | } | 2633 | 36.6M | return Cur.getAs<T>(); | 2634 | 36.6M | } |
clang::TemplateSpecializationTypeLoc clang::TypeLoc::getAsAdjusted<clang::TemplateSpecializationTypeLoc>() const Line | Count | Source | 2615 | 1.58k | inline T TypeLoc::getAsAdjusted() const { | 2616 | 1.58k | TypeLoc Cur = *this; | 2617 | 3.17k | while (!T::isKind(Cur)) { | 2618 | 1.58k | if (auto PTL = Cur.getAs<ParenTypeLoc>()) | 2619 | 0 | Cur = PTL.getInnerLoc(); | 2620 | 1.58k | else if (auto ATL = Cur.getAs<AttributedTypeLoc>()) | 2621 | 0 | Cur = ATL.getModifiedLoc(); | 2622 | 1.58k | else if (auto ATL = Cur.getAs<BTFTagAttributedTypeLoc>()) | 2623 | 0 | Cur = ATL.getWrappedLoc(); | 2624 | 1.58k | else if (auto ETL = Cur.getAs<ElaboratedTypeLoc>()) | 2625 | 1.58k | Cur = ETL.getNamedTypeLoc(); | 2626 | 2 | else if (auto ATL = Cur.getAs<AdjustedTypeLoc>()) | 2627 | 0 | Cur = ATL.getOriginalLoc(); | 2628 | 2 | else if (auto MQL = Cur.getAs<MacroQualifiedTypeLoc>()) | 2629 | 0 | Cur = MQL.getInnerLoc(); | 2630 | 2 | else | 2631 | 2 | break; | 2632 | 1.58k | } | 2633 | 1.58k | return Cur.getAs<T>(); | 2634 | 1.58k | } |
clang::FunctionTypeLoc clang::TypeLoc::getAsAdjusted<clang::FunctionTypeLoc>() const Line | Count | Source | 2615 | 8 | inline T TypeLoc::getAsAdjusted() const { | 2616 | 8 | TypeLoc Cur = *this; | 2617 | 9 | while (!T::isKind(Cur)) { | 2618 | 1 | if (auto PTL = Cur.getAs<ParenTypeLoc>()) | 2619 | 0 | Cur = PTL.getInnerLoc(); | 2620 | 1 | else if (auto ATL = Cur.getAs<AttributedTypeLoc>()) | 2621 | 1 | Cur = ATL.getModifiedLoc(); | 2622 | 0 | else if (auto ATL = Cur.getAs<BTFTagAttributedTypeLoc>()) | 2623 | 0 | Cur = ATL.getWrappedLoc(); | 2624 | 0 | else if (auto ETL = Cur.getAs<ElaboratedTypeLoc>()) | 2625 | 0 | Cur = ETL.getNamedTypeLoc(); | 2626 | 0 | else if (auto ATL = Cur.getAs<AdjustedTypeLoc>()) | 2627 | 0 | Cur = ATL.getOriginalLoc(); | 2628 | 0 | else if (auto MQL = Cur.getAs<MacroQualifiedTypeLoc>()) | 2629 | 0 | Cur = MQL.getInnerLoc(); | 2630 | 0 | else | 2631 | 0 | break; | 2632 | 1 | } | 2633 | 8 | return Cur.getAs<T>(); | 2634 | 8 | } |
|
2635 | | class BitIntTypeLoc final |
2636 | | : public InheritingConcreteTypeLoc<TypeSpecTypeLoc, BitIntTypeLoc, |
2637 | | BitIntType> {}; |
2638 | | class DependentBitIntTypeLoc final |
2639 | | : public InheritingConcreteTypeLoc<TypeSpecTypeLoc, DependentBitIntTypeLoc, |
2640 | | DependentBitIntType> {}; |
2641 | | |
2642 | | class ObjCProtocolLoc { |
2643 | | ObjCProtocolDecl *Protocol = nullptr; |
2644 | | SourceLocation Loc = SourceLocation(); |
2645 | | |
2646 | | public: |
2647 | | ObjCProtocolLoc(ObjCProtocolDecl *protocol, SourceLocation loc) |
2648 | 4.93k | : Protocol(protocol), Loc(loc) {} |
2649 | 0 | ObjCProtocolDecl *getProtocol() const { return Protocol; } |
2650 | 0 | SourceLocation getLocation() const { return Loc; } |
2651 | | |
2652 | | /// The source range is just the protocol name. |
2653 | 0 | SourceRange getSourceRange() const LLVM_READONLY { |
2654 | 0 | return SourceRange(Loc, Loc); |
2655 | 0 | } |
2656 | | }; |
2657 | | |
2658 | | } // namespace clang |
2659 | | |
2660 | | #endif // LLVM_CLANG_AST_TYPELOC_H |