Coverage Report

Created: 2018-11-16 02:38

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/tools/clang/include/clang/AST/NonTrivialTypeVisitor.h
Line
Count
Source (jump to first uncovered line)
1
//===-- NonTrivialTypeVisitor.h - Visitor for non-trivial Types *- C++ --*-===//
2
//
3
//                     The LLVM Compiler Infrastructure
4
//
5
// This file is distributed under the University of Illinois Open Source
6
// License. See LICENSE.TXT for details.
7
//
8
//===----------------------------------------------------------------------===//
9
//
10
//  This file defines the visitor classes that are used to traverse non-trivial
11
//  structs.
12
//
13
//===----------------------------------------------------------------------===//
14
15
#ifndef LLVM_CLANG_NON_TRIVIAL_TYPE_VISITOR_H
16
#define LLVM_CLANG_NON_TRIVIAL_TYPE_VISITOR_H
17
18
#include "clang/AST/Type.h"
19
20
namespace clang {
21
22
template <class Derived, class RetTy = void> struct DestructedTypeVisitor {
23
319
  template <class... Ts> RetTy visit(QualType FT, Ts &&... Args) {
24
319
    return asDerived().visitWithKind(FT.isDestructedType(), FT,
25
319
                                     std::forward<Ts>(Args)...);
26
319
  }
CGNonTrivialStruct.cpp:void clang::DestructedTypeVisitor<(anonymous namespace)::GenDestructorFuncName, void>::visit<clang::FieldDecl const*&, clang::CharUnits&>(clang::QualType, clang::FieldDecl const*&&&, clang::CharUnits&&&)
Line
Count
Source
23
229
  template <class... Ts> RetTy visit(QualType FT, Ts &&... Args) {
24
229
    return asDerived().visitWithKind(FT.isDestructedType(), FT,
25
229
                                     std::forward<Ts>(Args)...);
26
229
  }
CGNonTrivialStruct.cpp:void clang::DestructedTypeVisitor<(anonymous namespace)::GenDestructor, void>::visit<clang::FieldDecl const*&, clang::CharUnits&, std::__1::array<clang::CodeGen::Address, 1ul>&>(clang::QualType, clang::FieldDecl const*&&&, clang::CharUnits&&&, std::__1::array<clang::CodeGen::Address, 1ul>&&&)
Line
Count
Source
23
90
  template <class... Ts> RetTy visit(QualType FT, Ts &&... Args) {
24
90
    return asDerived().visitWithKind(FT.isDestructedType(), FT,
25
90
                                     std::forward<Ts>(Args)...);
26
90
  }
27
28
  template <class... Ts>
29
  RetTy visitWithKind(QualType::DestructionKind DK, QualType FT,
30
301
                      Ts &&... Args) {
31
301
    switch (DK) {
32
301
    case QualType::DK_objc_strong_lifetime:
33
108
      return asDerived().visitARCStrong(FT, std::forward<Ts>(Args)...);
34
301
    case QualType::DK_nontrivial_c_struct:
35
18
      return asDerived().visitStruct(FT, std::forward<Ts>(Args)...);
36
301
    case QualType::DK_none:
37
144
      return asDerived().visitTrivial(FT, std::forward<Ts>(Args)...);
38
301
    case QualType::DK_cxx_destructor:
39
0
      return asDerived().visitCXXDestructor(FT, std::forward<Ts>(Args)...);
40
301
    case QualType::DK_objc_weak_lifetime:
41
31
      return asDerived().visitARCWeak(FT, std::forward<Ts>(Args)...);
42
0
    }
43
0
44
0
    llvm_unreachable("unknown destruction kind");
45
0
  }
CGNonTrivialStruct.cpp:void clang::DestructedTypeVisitor<(anonymous namespace)::GenDestructorFuncName, void>::visitWithKind<clang::FieldDecl const*&, clang::CharUnits&>(clang::QualType::DestructionKind, clang::QualType, clang::FieldDecl const*&&&, clang::CharUnits&&&)
Line
Count
Source
30
217
                      Ts &&... Args) {
31
217
    switch (DK) {
32
217
    case QualType::DK_objc_strong_lifetime:
33
77
      return asDerived().visitARCStrong(FT, std::forward<Ts>(Args)...);
34
217
    case QualType::DK_nontrivial_c_struct:
35
14
      return asDerived().visitStruct(FT, std::forward<Ts>(Args)...);
36
217
    case QualType::DK_none:
37
101
      return asDerived().visitTrivial(FT, std::forward<Ts>(Args)...);
38
217
    case QualType::DK_cxx_destructor:
39
0
      return asDerived().visitCXXDestructor(FT, std::forward<Ts>(Args)...);
40
217
    case QualType::DK_objc_weak_lifetime:
41
25
      return asDerived().visitARCWeak(FT, std::forward<Ts>(Args)...);
42
0
    }
43
0
44
0
    llvm_unreachable("unknown destruction kind");
45
0
  }
CGNonTrivialStruct.cpp:void clang::DestructedTypeVisitor<(anonymous namespace)::GenDestructor, void>::visitWithKind<clang::FieldDecl const*&, clang::CharUnits&, std::__1::array<clang::CodeGen::Address, 1ul>&>(clang::QualType::DestructionKind, clang::QualType, clang::FieldDecl const*&&&, clang::CharUnits&&&, std::__1::array<clang::CodeGen::Address, 1ul>&&&)
Line
Count
Source
30
84
                      Ts &&... Args) {
31
84
    switch (DK) {
32
84
    case QualType::DK_objc_strong_lifetime:
33
31
      return asDerived().visitARCStrong(FT, std::forward<Ts>(Args)...);
34
84
    case QualType::DK_nontrivial_c_struct:
35
4
      return asDerived().visitStruct(FT, std::forward<Ts>(Args)...);
36
84
    case QualType::DK_none:
37
43
      return asDerived().visitTrivial(FT, std::forward<Ts>(Args)...);
38
84
    case QualType::DK_cxx_destructor:
39
0
      return asDerived().visitCXXDestructor(FT, std::forward<Ts>(Args)...);
40
84
    case QualType::DK_objc_weak_lifetime:
41
6
      return asDerived().visitARCWeak(FT, std::forward<Ts>(Args)...);
42
0
    }
43
0
44
0
    llvm_unreachable("unknown destruction kind");
45
0
  }
46
47
620
  Derived &asDerived() { return static_cast<Derived &>(*this); }
CGNonTrivialStruct.cpp:clang::DestructedTypeVisitor<(anonymous namespace)::GenDestructorFuncName, void>::asDerived()
Line
Count
Source
47
446
  Derived &asDerived() { return static_cast<Derived &>(*this); }
CGNonTrivialStruct.cpp:clang::DestructedTypeVisitor<(anonymous namespace)::GenDestructor, void>::asDerived()
Line
Count
Source
47
174
  Derived &asDerived() { return static_cast<Derived &>(*this); }
48
};
49
50
template <class Derived, class RetTy = void>
51
struct DefaultInitializedTypeVisitor {
52
146
  template <class... Ts> RetTy visit(QualType FT, Ts &&... Args) {
53
146
    return asDerived().visitWithKind(
54
146
        FT.isNonTrivialToPrimitiveDefaultInitialize(), FT,
55
146
        std::forward<Ts>(Args)...);
56
146
  }
CGNonTrivialStruct.cpp:void clang::DefaultInitializedTypeVisitor<(anonymous namespace)::GenDefaultInitialize, void>::visit<std::nullptr_t, clang::CharUnits, std::__1::array<clang::CodeGen::Address, 1ul> >(clang::QualType, std::nullptr_t&&, clang::CharUnits&&, std::__1::array<clang::CodeGen::Address, 1ul>&&)
Line
Count
Source
52
27
  template <class... Ts> RetTy visit(QualType FT, Ts &&... Args) {
53
27
    return asDerived().visitWithKind(
54
27
        FT.isNonTrivialToPrimitiveDefaultInitialize(), FT,
55
27
        std::forward<Ts>(Args)...);
56
27
  }
CGNonTrivialStruct.cpp:void clang::DefaultInitializedTypeVisitor<(anonymous namespace)::GenDefaultInitializeFuncName, void>::visit<clang::FieldDecl const*&, clang::CharUnits&>(clang::QualType, clang::FieldDecl const*&&&, clang::CharUnits&&&)
Line
Count
Source
52
73
  template <class... Ts> RetTy visit(QualType FT, Ts &&... Args) {
53
73
    return asDerived().visitWithKind(
54
73
        FT.isNonTrivialToPrimitiveDefaultInitialize(), FT,
55
73
        std::forward<Ts>(Args)...);
56
73
  }
CGNonTrivialStruct.cpp:void clang::DefaultInitializedTypeVisitor<(anonymous namespace)::GenDefaultInitialize, void>::visit<clang::FieldDecl const*&, clang::CharUnits&, std::__1::array<clang::CodeGen::Address, 1ul>&>(clang::QualType, clang::FieldDecl const*&&&, clang::CharUnits&&&, std::__1::array<clang::CodeGen::Address, 1ul>&&&)
Line
Count
Source
52
30
  template <class... Ts> RetTy visit(QualType FT, Ts &&... Args) {
53
30
    return asDerived().visitWithKind(
54
30
        FT.isNonTrivialToPrimitiveDefaultInitialize(), FT,
55
30
        std::forward<Ts>(Args)...);
56
30
  }
SemaChecking.cpp:void clang::DefaultInitializedTypeVisitor<(anonymous namespace)::SearchNonTrivialToInitializeField, void>::visit<clang::SourceLocation>(clang::QualType, clang::SourceLocation&&)
Line
Count
Source
52
14
  template <class... Ts> RetTy visit(QualType FT, Ts &&... Args) {
53
14
    return asDerived().visitWithKind(
54
14
        FT.isNonTrivialToPrimitiveDefaultInitialize(), FT,
55
14
        std::forward<Ts>(Args)...);
56
14
  }
SemaChecking.cpp:void clang::DefaultInitializedTypeVisitor<(anonymous namespace)::SearchNonTrivialToInitializeField, void>::visit<clang::SourceLocation&>(clang::QualType, clang::SourceLocation&&&)
Line
Count
Source
52
2
  template <class... Ts> RetTy visit(QualType FT, Ts &&... Args) {
53
2
    return asDerived().visitWithKind(
54
2
        FT.isNonTrivialToPrimitiveDefaultInitialize(), FT,
55
2
        std::forward<Ts>(Args)...);
56
2
  }
57
58
  template <class... Ts>
59
  RetTy visitWithKind(QualType::PrimitiveDefaultInitializeKind PDIK,
60
142
                      QualType FT, Ts &&... Args) {
61
142
    switch (PDIK) {
62
142
    case QualType::PDIK_ARCStrong:
63
35
      return asDerived().visitARCStrong(FT, std::forward<Ts>(Args)...);
64
142
    case QualType::PDIK_ARCWeak:
65
19
      return asDerived().visitARCWeak(FT, std::forward<Ts>(Args)...);
66
142
    case QualType::PDIK_Struct:
67
39
      return asDerived().visitStruct(FT, std::forward<Ts>(Args)...);
68
142
    case QualType::PDIK_Trivial:
69
49
      return asDerived().visitTrivial(FT, std::forward<Ts>(Args)...);
70
0
    }
71
0
72
0
    llvm_unreachable("unknown default-initialize kind");
73
0
  }
CGNonTrivialStruct.cpp:void clang::DefaultInitializedTypeVisitor<(anonymous namespace)::GenDefaultInitialize, void>::visitWithKind<clang::FieldDecl const*&, clang::CharUnits&, std::__1::array<clang::CodeGen::Address, 1ul>&>(clang::QualType::PrimitiveDefaultInitializeKind, clang::QualType, clang::FieldDecl const*&&&, clang::CharUnits&&&, std::__1::array<clang::CodeGen::Address, 1ul>&&&)
Line
Count
Source
60
55
                      QualType FT, Ts &&... Args) {
61
55
    switch (PDIK) {
62
55
    case QualType::PDIK_ARCStrong:
63
7
      return asDerived().visitARCStrong(FT, std::forward<Ts>(Args)...);
64
55
    case QualType::PDIK_ARCWeak:
65
5
      return asDerived().visitARCWeak(FT, std::forward<Ts>(Args)...);
66
55
    case QualType::PDIK_Struct:
67
31
      return asDerived().visitStruct(FT, std::forward<Ts>(Args)...);
68
55
    case QualType::PDIK_Trivial:
69
12
      return asDerived().visitTrivial(FT, std::forward<Ts>(Args)...);
70
0
    }
71
0
72
0
    llvm_unreachable("unknown default-initialize kind");
73
0
  }
CGNonTrivialStruct.cpp:void clang::DefaultInitializedTypeVisitor<(anonymous namespace)::GenDefaultInitializeFuncName, void>::visitWithKind<clang::FieldDecl const*&, clang::CharUnits&>(clang::QualType::PrimitiveDefaultInitializeKind, clang::QualType, clang::FieldDecl const*&&&, clang::CharUnits&&&)
Line
Count
Source
60
73
                      QualType FT, Ts &&... Args) {
61
73
    switch (PDIK) {
62
73
    case QualType::PDIK_ARCStrong:
63
24
      return asDerived().visitARCStrong(FT, std::forward<Ts>(Args)...);
64
73
    case QualType::PDIK_ARCWeak:
65
12
      return asDerived().visitARCWeak(FT, std::forward<Ts>(Args)...);
66
73
    case QualType::PDIK_Struct:
67
6
      return asDerived().visitStruct(FT, std::forward<Ts>(Args)...);
68
73
    case QualType::PDIK_Trivial:
69
31
      return asDerived().visitTrivial(FT, std::forward<Ts>(Args)...);
70
0
    }
71
0
72
0
    llvm_unreachable("unknown default-initialize kind");
73
0
  }
SemaChecking.cpp:void clang::DefaultInitializedTypeVisitor<(anonymous namespace)::SearchNonTrivialToInitializeField, void>::visitWithKind<clang::SourceLocation&>(clang::QualType::PrimitiveDefaultInitializeKind, clang::QualType, clang::SourceLocation&&&)
Line
Count
Source
60
14
                      QualType FT, Ts &&... Args) {
61
14
    switch (PDIK) {
62
14
    case QualType::PDIK_ARCStrong:
63
4
      return asDerived().visitARCStrong(FT, std::forward<Ts>(Args)...);
64
14
    case QualType::PDIK_ARCWeak:
65
2
      return asDerived().visitARCWeak(FT, std::forward<Ts>(Args)...);
66
14
    case QualType::PDIK_Struct:
67
2
      return asDerived().visitStruct(FT, std::forward<Ts>(Args)...);
68
14
    case QualType::PDIK_Trivial:
69
6
      return asDerived().visitTrivial(FT, std::forward<Ts>(Args)...);
70
0
    }
71
0
72
0
    llvm_unreachable("unknown default-initialize kind");
73
0
  }
74
75
306
  Derived &asDerived() { return static_cast<Derived &>(*this); }
CGNonTrivialStruct.cpp:clang::DefaultInitializedTypeVisitor<(anonymous namespace)::GenDefaultInitialize, void>::asDerived()
Line
Count
Source
75
112
  Derived &asDerived() { return static_cast<Derived &>(*this); }
CGNonTrivialStruct.cpp:clang::DefaultInitializedTypeVisitor<(anonymous namespace)::GenDefaultInitializeFuncName, void>::asDerived()
Line
Count
Source
75
146
  Derived &asDerived() { return static_cast<Derived &>(*this); }
SemaChecking.cpp:clang::DefaultInitializedTypeVisitor<(anonymous namespace)::SearchNonTrivialToInitializeField, void>::asDerived()
Line
Count
Source
75
48
  Derived &asDerived() { return static_cast<Derived &>(*this); }
76
};
77
78
template <class Derived, bool IsMove, class RetTy = void>
79
struct CopiedTypeVisitor {
80
339
  template <class... Ts> RetTy visit(QualType FT, Ts &&... Args) {
81
339
    QualType::PrimitiveCopyKind PCK =
82
339
        IsMove ? 
FT.isNonTrivialToPrimitiveDestructiveMove()84
83
339
               : 
FT.isNonTrivialToPrimitiveCopy()255
;
84
339
    return asDerived().visitWithKind(PCK, FT, std::forward<Ts>(Args)...);
85
339
  }
CGNonTrivialStruct.cpp:void clang::CopiedTypeVisitor<(anonymous namespace)::GenBinaryFuncName<false>, false, void>::visit<clang::FieldDecl const*&, clang::CharUnits&>(clang::QualType, clang::FieldDecl const*&&&, clang::CharUnits&&&)
Line
Count
Source
80
146
  template <class... Ts> RetTy visit(QualType FT, Ts &&... Args) {
81
146
    QualType::PrimitiveCopyKind PCK =
82
146
        IsMove ? 
FT.isNonTrivialToPrimitiveDestructiveMove()0
83
146
               : FT.isNonTrivialToPrimitiveCopy();
84
146
    return asDerived().visitWithKind(PCK, FT, std::forward<Ts>(Args)...);
85
146
  }
CGNonTrivialStruct.cpp:void clang::CopiedTypeVisitor<(anonymous namespace)::GenCopyConstructor, false, void>::visit<clang::FieldDecl const*&, clang::CharUnits&, std::__1::array<clang::CodeGen::Address, 2ul>&>(clang::QualType, clang::FieldDecl const*&&&, clang::CharUnits&&&, std::__1::array<clang::CodeGen::Address, 2ul>&&&)
Line
Count
Source
80
73
  template <class... Ts> RetTy visit(QualType FT, Ts &&... Args) {
81
73
    QualType::PrimitiveCopyKind PCK =
82
73
        IsMove ? 
FT.isNonTrivialToPrimitiveDestructiveMove()0
83
73
               : FT.isNonTrivialToPrimitiveCopy();
84
73
    return asDerived().visitWithKind(PCK, FT, std::forward<Ts>(Args)...);
85
73
  }
CGNonTrivialStruct.cpp:void clang::CopiedTypeVisitor<(anonymous namespace)::GenCopyAssignment, false, void>::visit<clang::FieldDecl const*&, clang::CharUnits&, std::__1::array<clang::CodeGen::Address, 2ul>&>(clang::QualType, clang::FieldDecl const*&&&, clang::CharUnits&&&, std::__1::array<clang::CodeGen::Address, 2ul>&&&)
Line
Count
Source
80
20
  template <class... Ts> RetTy visit(QualType FT, Ts &&... Args) {
81
20
    QualType::PrimitiveCopyKind PCK =
82
20
        IsMove ? 
FT.isNonTrivialToPrimitiveDestructiveMove()0
83
20
               : FT.isNonTrivialToPrimitiveCopy();
84
20
    return asDerived().visitWithKind(PCK, FT, std::forward<Ts>(Args)...);
85
20
  }
CGNonTrivialStruct.cpp:void clang::CopiedTypeVisitor<(anonymous namespace)::GenBinaryFuncName<true>, true, void>::visit<clang::FieldDecl const*&, clang::CharUnits&>(clang::QualType, clang::FieldDecl const*&&&, clang::CharUnits&&&)
Line
Count
Source
80
46
  template <class... Ts> RetTy visit(QualType FT, Ts &&... Args) {
81
46
    QualType::PrimitiveCopyKind PCK =
82
46
        IsMove ? FT.isNonTrivialToPrimitiveDestructiveMove()
83
46
               : 
FT.isNonTrivialToPrimitiveCopy()0
;
84
46
    return asDerived().visitWithKind(PCK, FT, std::forward<Ts>(Args)...);
85
46
  }
CGNonTrivialStruct.cpp:void clang::CopiedTypeVisitor<(anonymous namespace)::GenMoveConstructor, true, void>::visit<clang::FieldDecl const*&, clang::CharUnits&, std::__1::array<clang::CodeGen::Address, 2ul>&>(clang::QualType, clang::FieldDecl const*&&&, clang::CharUnits&&&, std::__1::array<clang::CodeGen::Address, 2ul>&&&)
Line
Count
Source
80
20
  template <class... Ts> RetTy visit(QualType FT, Ts &&... Args) {
81
20
    QualType::PrimitiveCopyKind PCK =
82
20
        IsMove ? FT.isNonTrivialToPrimitiveDestructiveMove()
83
20
               : 
FT.isNonTrivialToPrimitiveCopy()0
;
84
20
    return asDerived().visitWithKind(PCK, FT, std::forward<Ts>(Args)...);
85
20
  }
CGNonTrivialStruct.cpp:void clang::CopiedTypeVisitor<(anonymous namespace)::GenMoveAssignment, true, void>::visit<clang::FieldDecl const*&, clang::CharUnits&, std::__1::array<clang::CodeGen::Address, 2ul>&>(clang::QualType, clang::FieldDecl const*&&&, clang::CharUnits&&&, std::__1::array<clang::CodeGen::Address, 2ul>&&&)
Line
Count
Source
80
18
  template <class... Ts> RetTy visit(QualType FT, Ts &&... Args) {
81
18
    QualType::PrimitiveCopyKind PCK =
82
18
        IsMove ? FT.isNonTrivialToPrimitiveDestructiveMove()
83
18
               : 
FT.isNonTrivialToPrimitiveCopy()0
;
84
18
    return asDerived().visitWithKind(PCK, FT, std::forward<Ts>(Args)...);
85
18
  }
SemaChecking.cpp:void clang::CopiedTypeVisitor<(anonymous namespace)::SearchNonTrivialToCopyField, false, void>::visit<clang::SourceLocation>(clang::QualType, clang::SourceLocation&&)
Line
Count
Source
80
14
  template <class... Ts> RetTy visit(QualType FT, Ts &&... Args) {
81
14
    QualType::PrimitiveCopyKind PCK =
82
14
        IsMove ? 
FT.isNonTrivialToPrimitiveDestructiveMove()0
83
14
               : FT.isNonTrivialToPrimitiveCopy();
84
14
    return asDerived().visitWithKind(PCK, FT, std::forward<Ts>(Args)...);
85
14
  }
SemaChecking.cpp:void clang::CopiedTypeVisitor<(anonymous namespace)::SearchNonTrivialToCopyField, false, void>::visit<clang::SourceLocation&>(clang::QualType, clang::SourceLocation&&&)
Line
Count
Source
80
2
  template <class... Ts> RetTy visit(QualType FT, Ts &&... Args) {
81
2
    QualType::PrimitiveCopyKind PCK =
82
2
        IsMove ? 
FT.isNonTrivialToPrimitiveDestructiveMove()0
83
2
               : FT.isNonTrivialToPrimitiveCopy();
84
2
    return asDerived().visitWithKind(PCK, FT, std::forward<Ts>(Args)...);
85
2
  }
86
87
  template <class... Ts>
88
  RetTy visitWithKind(QualType::PrimitiveCopyKind PCK, QualType FT,
89
333
                      Ts &&... Args) {
90
333
    asDerived().preVisit(PCK, FT, std::forward<Ts>(Args)...);
91
333
92
333
    switch (PCK) {
93
333
    case QualType::PCK_ARCStrong:
94
102
      return asDerived().visitARCStrong(FT, std::forward<Ts>(Args)...);
95
333
    case QualType::PCK_ARCWeak:
96
45
      return asDerived().visitARCWeak(FT, std::forward<Ts>(Args)...);
97
333
    case QualType::PCK_Struct:
98
22
      return asDerived().visitStruct(FT, std::forward<Ts>(Args)...);
99
333
    case QualType::PCK_Trivial:
100
146
      return asDerived().visitTrivial(FT, std::forward<Ts>(Args)...);
101
333
    case QualType::PCK_VolatileTrivial:
102
18
      return asDerived().visitVolatileTrivial(FT, std::forward<Ts>(Args)...);
103
0
    }
104
0
105
0
    llvm_unreachable("unknown primitive copy kind");
106
0
  }
CGNonTrivialStruct.cpp:void clang::CopiedTypeVisitor<(anonymous namespace)::GenBinaryFuncName<false>, false, void>::visitWithKind<clang::FieldDecl const*&, clang::CharUnits&>(clang::QualType::PrimitiveCopyKind, clang::QualType, clang::FieldDecl const*&&&, clang::CharUnits&&&)
Line
Count
Source
89
144
                      Ts &&... Args) {
90
144
    asDerived().preVisit(PCK, FT, std::forward<Ts>(Args)...);
91
144
92
144
    switch (PCK) {
93
144
    case QualType::PCK_ARCStrong:
94
46
      return asDerived().visitARCStrong(FT, std::forward<Ts>(Args)...);
95
144
    case QualType::PCK_ARCWeak:
96
18
      return asDerived().visitARCWeak(FT, std::forward<Ts>(Args)...);
97
144
    case QualType::PCK_Struct:
98
6
      return asDerived().visitStruct(FT, std::forward<Ts>(Args)...);
99
144
    case QualType::PCK_Trivial:
100
66
      return asDerived().visitTrivial(FT, std::forward<Ts>(Args)...);
101
144
    case QualType::PCK_VolatileTrivial:
102
8
      return asDerived().visitVolatileTrivial(FT, std::forward<Ts>(Args)...);
103
0
    }
104
0
105
0
    llvm_unreachable("unknown primitive copy kind");
106
0
  }
CGNonTrivialStruct.cpp:void clang::CopiedTypeVisitor<(anonymous namespace)::GenCopyConstructor, false, void>::visitWithKind<clang::FieldDecl const*&, clang::CharUnits&, std::__1::array<clang::CodeGen::Address, 2ul>&>(clang::QualType::PrimitiveCopyKind, clang::QualType, clang::FieldDecl const*&&&, clang::CharUnits&&&, std::__1::array<clang::CodeGen::Address, 2ul>&&&)
Line
Count
Source
89
71
                      Ts &&... Args) {
90
71
    asDerived().preVisit(PCK, FT, std::forward<Ts>(Args)...);
91
71
92
71
    switch (PCK) {
93
71
    case QualType::PCK_ARCStrong:
94
22
      return asDerived().visitARCStrong(FT, std::forward<Ts>(Args)...);
95
71
    case QualType::PCK_ARCWeak:
96
5
      return asDerived().visitARCWeak(FT, std::forward<Ts>(Args)...);
97
71
    case QualType::PCK_Struct:
98
4
      return asDerived().visitStruct(FT, std::forward<Ts>(Args)...);
99
71
    case QualType::PCK_Trivial:
100
32
      return asDerived().visitTrivial(FT, std::forward<Ts>(Args)...);
101
71
    case QualType::PCK_VolatileTrivial:
102
8
      return asDerived().visitVolatileTrivial(FT, std::forward<Ts>(Args)...);
103
0
    }
104
0
105
0
    llvm_unreachable("unknown primitive copy kind");
106
0
  }
CGNonTrivialStruct.cpp:void clang::CopiedTypeVisitor<(anonymous namespace)::GenCopyAssignment, false, void>::visitWithKind<clang::FieldDecl const*&, clang::CharUnits&, std::__1::array<clang::CodeGen::Address, 2ul>&>(clang::QualType::PrimitiveCopyKind, clang::QualType, clang::FieldDecl const*&&&, clang::CharUnits&&&, std::__1::array<clang::CodeGen::Address, 2ul>&&&)
Line
Count
Source
89
20
                      Ts &&... Args) {
90
20
    asDerived().preVisit(PCK, FT, std::forward<Ts>(Args)...);
91
20
92
20
    switch (PCK) {
93
20
    case QualType::PCK_ARCStrong:
94
6
      return asDerived().visitARCStrong(FT, std::forward<Ts>(Args)...);
95
20
    case QualType::PCK_ARCWeak:
96
4
      return asDerived().visitARCWeak(FT, std::forward<Ts>(Args)...);
97
20
    case QualType::PCK_Struct:
98
2
      return asDerived().visitStruct(FT, std::forward<Ts>(Args)...);
99
20
    case QualType::PCK_Trivial:
100
8
      return asDerived().visitTrivial(FT, std::forward<Ts>(Args)...);
101
20
    case QualType::PCK_VolatileTrivial:
102
0
      return asDerived().visitVolatileTrivial(FT, std::forward<Ts>(Args)...);
103
0
    }
104
0
105
0
    llvm_unreachable("unknown primitive copy kind");
106
0
  }
CGNonTrivialStruct.cpp:void clang::CopiedTypeVisitor<(anonymous namespace)::GenBinaryFuncName<true>, true, void>::visitWithKind<clang::FieldDecl const*&, clang::CharUnits&>(clang::QualType::PrimitiveCopyKind, clang::QualType, clang::FieldDecl const*&&&, clang::CharUnits&&&)
Line
Count
Source
89
46
                      Ts &&... Args) {
90
46
    asDerived().preVisit(PCK, FT, std::forward<Ts>(Args)...);
91
46
92
46
    switch (PCK) {
93
46
    case QualType::PCK_ARCStrong:
94
14
      return asDerived().visitARCStrong(FT, std::forward<Ts>(Args)...);
95
46
    case QualType::PCK_ARCWeak:
96
8
      return asDerived().visitARCWeak(FT, std::forward<Ts>(Args)...);
97
46
    case QualType::PCK_Struct:
98
4
      return asDerived().visitStruct(FT, std::forward<Ts>(Args)...);
99
46
    case QualType::PCK_Trivial:
100
20
      return asDerived().visitTrivial(FT, std::forward<Ts>(Args)...);
101
46
    case QualType::PCK_VolatileTrivial:
102
0
      return asDerived().visitVolatileTrivial(FT, std::forward<Ts>(Args)...);
103
0
    }
104
0
105
0
    llvm_unreachable("unknown primitive copy kind");
106
0
  }
CGNonTrivialStruct.cpp:void clang::CopiedTypeVisitor<(anonymous namespace)::GenMoveConstructor, true, void>::visitWithKind<clang::FieldDecl const*&, clang::CharUnits&, std::__1::array<clang::CodeGen::Address, 2ul>&>(clang::QualType::PrimitiveCopyKind, clang::QualType, clang::FieldDecl const*&&&, clang::CharUnits&&&, std::__1::array<clang::CodeGen::Address, 2ul>&&&)
Line
Count
Source
89
20
                      Ts &&... Args) {
90
20
    asDerived().preVisit(PCK, FT, std::forward<Ts>(Args)...);
91
20
92
20
    switch (PCK) {
93
20
    case QualType::PCK_ARCStrong:
94
6
      return asDerived().visitARCStrong(FT, std::forward<Ts>(Args)...);
95
20
    case QualType::PCK_ARCWeak:
96
4
      return asDerived().visitARCWeak(FT, std::forward<Ts>(Args)...);
97
20
    case QualType::PCK_Struct:
98
2
      return asDerived().visitStruct(FT, std::forward<Ts>(Args)...);
99
20
    case QualType::PCK_Trivial:
100
8
      return asDerived().visitTrivial(FT, std::forward<Ts>(Args)...);
101
20
    case QualType::PCK_VolatileTrivial:
102
0
      return asDerived().visitVolatileTrivial(FT, std::forward<Ts>(Args)...);
103
0
    }
104
0
105
0
    llvm_unreachable("unknown primitive copy kind");
106
0
  }
CGNonTrivialStruct.cpp:void clang::CopiedTypeVisitor<(anonymous namespace)::GenMoveAssignment, true, void>::visitWithKind<clang::FieldDecl const*&, clang::CharUnits&, std::__1::array<clang::CodeGen::Address, 2ul>&>(clang::QualType::PrimitiveCopyKind, clang::QualType, clang::FieldDecl const*&&&, clang::CharUnits&&&, std::__1::array<clang::CodeGen::Address, 2ul>&&&)
Line
Count
Source
89
18
                      Ts &&... Args) {
90
18
    asDerived().preVisit(PCK, FT, std::forward<Ts>(Args)...);
91
18
92
18
    switch (PCK) {
93
18
    case QualType::PCK_ARCStrong:
94
4
      return asDerived().visitARCStrong(FT, std::forward<Ts>(Args)...);
95
18
    case QualType::PCK_ARCWeak:
96
4
      return asDerived().visitARCWeak(FT, std::forward<Ts>(Args)...);
97
18
    case QualType::PCK_Struct:
98
2
      return asDerived().visitStruct(FT, std::forward<Ts>(Args)...);
99
18
    case QualType::PCK_Trivial:
100
8
      return asDerived().visitTrivial(FT, std::forward<Ts>(Args)...);
101
18
    case QualType::PCK_VolatileTrivial:
102
0
      return asDerived().visitVolatileTrivial(FT, std::forward<Ts>(Args)...);
103
0
    }
104
0
105
0
    llvm_unreachable("unknown primitive copy kind");
106
0
  }
SemaChecking.cpp:void clang::CopiedTypeVisitor<(anonymous namespace)::SearchNonTrivialToCopyField, false, void>::visitWithKind<clang::SourceLocation&>(clang::QualType::PrimitiveCopyKind, clang::QualType, clang::SourceLocation&&&)
Line
Count
Source
89
14
                      Ts &&... Args) {
90
14
    asDerived().preVisit(PCK, FT, std::forward<Ts>(Args)...);
91
14
92
14
    switch (PCK) {
93
14
    case QualType::PCK_ARCStrong:
94
4
      return asDerived().visitARCStrong(FT, std::forward<Ts>(Args)...);
95
14
    case QualType::PCK_ARCWeak:
96
2
      return asDerived().visitARCWeak(FT, std::forward<Ts>(Args)...);
97
14
    case QualType::PCK_Struct:
98
2
      return asDerived().visitStruct(FT, std::forward<Ts>(Args)...);
99
14
    case QualType::PCK_Trivial:
100
4
      return asDerived().visitTrivial(FT, std::forward<Ts>(Args)...);
101
14
    case QualType::PCK_VolatileTrivial:
102
2
      return asDerived().visitVolatileTrivial(FT, std::forward<Ts>(Args)...);
103
0
    }
104
0
105
0
    llvm_unreachable("unknown primitive copy kind");
106
0
  }
107
108
1.02k
  Derived &asDerived() { return static_cast<Derived &>(*this); }
CGNonTrivialStruct.cpp:clang::CopiedTypeVisitor<(anonymous namespace)::GenBinaryFuncName<false>, false, void>::asDerived()
Line
Count
Source
108
434
  Derived &asDerived() { return static_cast<Derived &>(*this); }
CGNonTrivialStruct.cpp:clang::CopiedTypeVisitor<(anonymous namespace)::GenCopyConstructor, false, void>::asDerived()
Line
Count
Source
108
215
  Derived &asDerived() { return static_cast<Derived &>(*this); }
CGNonTrivialStruct.cpp:clang::CopiedTypeVisitor<(anonymous namespace)::GenCopyAssignment, false, void>::asDerived()
Line
Count
Source
108
60
  Derived &asDerived() { return static_cast<Derived &>(*this); }
CGNonTrivialStruct.cpp:clang::CopiedTypeVisitor<(anonymous namespace)::GenBinaryFuncName<true>, true, void>::asDerived()
Line
Count
Source
108
138
  Derived &asDerived() { return static_cast<Derived &>(*this); }
CGNonTrivialStruct.cpp:clang::CopiedTypeVisitor<(anonymous namespace)::GenMoveConstructor, true, void>::asDerived()
Line
Count
Source
108
60
  Derived &asDerived() { return static_cast<Derived &>(*this); }
CGNonTrivialStruct.cpp:clang::CopiedTypeVisitor<(anonymous namespace)::GenMoveAssignment, true, void>::asDerived()
Line
Count
Source
108
54
  Derived &asDerived() { return static_cast<Derived &>(*this); }
SemaChecking.cpp:clang::CopiedTypeVisitor<(anonymous namespace)::SearchNonTrivialToCopyField, false, void>::asDerived()
Line
Count
Source
108
62
  Derived &asDerived() { return static_cast<Derived &>(*this); }
109
};
110
111
} // end namespace clang
112
113
#endif