Coverage Report

Created: 2019-07-24 05:18

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/lib/Support/ItaniumManglingCanonicalizer.cpp
Line
Count
Source (jump to first uncovered line)
1
//===----------------- ItaniumManglingCanonicalizer.cpp -------------------===//
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
#include "llvm/Support/ItaniumManglingCanonicalizer.h"
10
11
#include "llvm/ADT/FoldingSet.h"
12
#include "llvm/ADT/StringRef.h"
13
#include "llvm/Demangle/ItaniumDemangle.h"
14
#include "llvm/Support/Allocator.h"
15
16
#include "llvm/ADT/DenseMap.h"
17
#include "llvm/ADT/FoldingSet.h"
18
#include "llvm/ADT/StringRef.h"
19
20
using namespace llvm;
21
using llvm::itanium_demangle::ForwardTemplateReference;
22
using llvm::itanium_demangle::Node;
23
using llvm::itanium_demangle::NodeKind;
24
using llvm::itanium_demangle::StringView;
25
26
namespace {
27
struct FoldingSetNodeIDBuilder {
28
  llvm::FoldingSetNodeID &ID;
29
4.59k
  void operator()(const Node *P) { ID.AddPointer(P); }
30
2.20k
  void operator()(StringView Str) {
31
2.20k
    ID.AddString(llvm::StringRef(Str.begin(), Str.size()));
32
2.20k
  }
33
  template<typename T>
34
  typename std::enable_if<std::is_integral<T>::value ||
35
                          std::is_enum<T>::value>::type
36
5.36k
  operator()(T V) {
37
5.36k
    ID.AddInteger((unsigned long long)V);
38
5.36k
  }
ItaniumManglingCanonicalizer.cpp:std::__1::enable_if<(std::is_integral<llvm::itanium_demangle::Node::Kind>::value) || (std::is_enum<llvm::itanium_demangle::Node::Kind>::value), void>::type (anonymous namespace)::FoldingSetNodeIDBuilder::operator()<llvm::itanium_demangle::Node::Kind>(llvm::itanium_demangle::Node::Kind)
Line
Count
Source
36
4.34k
  operator()(T V) {
37
4.34k
    ID.AddInteger((unsigned long long)V);
38
4.34k
  }
ItaniumManglingCanonicalizer.cpp:std::__1::enable_if<(std::is_integral<llvm::itanium_demangle::Qualifiers>::value) || (std::is_enum<llvm::itanium_demangle::Qualifiers>::value), void>::type (anonymous namespace)::FoldingSetNodeIDBuilder::operator()<llvm::itanium_demangle::Qualifiers>(llvm::itanium_demangle::Qualifiers)
Line
Count
Source
36
434
  operator()(T V) {
37
434
    ID.AddInteger((unsigned long long)V);
38
434
  }
ItaniumManglingCanonicalizer.cpp:std::__1::enable_if<(std::is_integral<llvm::itanium_demangle::ReferenceKind>::value) || (std::is_enum<llvm::itanium_demangle::ReferenceKind>::value), void>::type (anonymous namespace)::FoldingSetNodeIDBuilder::operator()<llvm::itanium_demangle::ReferenceKind>(llvm::itanium_demangle::ReferenceKind)
Line
Count
Source
36
43
  operator()(T V) {
37
43
    ID.AddInteger((unsigned long long)V);
38
43
  }
ItaniumManglingCanonicalizer.cpp:std::__1::enable_if<(std::is_integral<llvm::itanium_demangle::FunctionRefQual>::value) || (std::is_enum<llvm::itanium_demangle::FunctionRefQual>::value), void>::type (anonymous namespace)::FoldingSetNodeIDBuilder::operator()<llvm::itanium_demangle::FunctionRefQual>(llvm::itanium_demangle::FunctionRefQual)
Line
Count
Source
36
428
  operator()(T V) {
37
428
    ID.AddInteger((unsigned long long)V);
38
428
  }
ItaniumManglingCanonicalizer.cpp:std::__1::enable_if<(std::is_integral<llvm::itanium_demangle::SpecialSubKind>::value) || (std::is_enum<llvm::itanium_demangle::SpecialSubKind>::value), void>::type (anonymous namespace)::FoldingSetNodeIDBuilder::operator()<llvm::itanium_demangle::SpecialSubKind>(llvm::itanium_demangle::SpecialSubKind)
Line
Count
Source
36
70
  operator()(T V) {
37
70
    ID.AddInteger((unsigned long long)V);
38
70
  }
ItaniumManglingCanonicalizer.cpp:std::__1::enable_if<(std::is_integral<bool>::value) || (std::is_enum<bool>::value), void>::type (anonymous namespace)::FoldingSetNodeIDBuilder::operator()<bool>(bool)
Line
Count
Source
36
21
  operator()(T V) {
37
21
    ID.AddInteger((unsigned long long)V);
38
21
  }
ItaniumManglingCanonicalizer.cpp:std::__1::enable_if<(std::is_integral<int>::value) || (std::is_enum<int>::value), void>::type (anonymous namespace)::FoldingSetNodeIDBuilder::operator()<int>(int)
Line
Count
Source
36
21
  operator()(T V) {
37
21
    ID.AddInteger((unsigned long long)V);
38
21
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::enable_if<(std::is_integral<unsigned long>::value) || (std::is_enum<unsigned long>::value), void>::type (anonymous namespace)::FoldingSetNodeIDBuilder::operator()<unsigned long>(unsigned long)
39
31
  void operator()(itanium_demangle::NodeOrString NS) {
40
31
    if (NS.isNode()) {
41
0
      ID.AddInteger(0);
42
0
      (*this)(NS.asNode());
43
31
    } else if (NS.isString()) {
44
10
      ID.AddInteger(1);
45
10
      (*this)(NS.asString());
46
21
    } else {
47
21
      ID.AddInteger(2);
48
21
    }
49
31
  }
50
873
  void operator()(itanium_demangle::NodeArray A) {
51
873
    ID.AddInteger(A.size());
52
873
    for (const Node *N : A)
53
1.01k
      (*this)(N);
54
873
  }
55
};
56
57
template<typename ...T>
58
4.34k
void profileCtor(llvm::FoldingSetNodeID &ID, Node::Kind K, T ...V) {
59
4.34k
  FoldingSetNodeIDBuilder Builder = {ID};
60
4.34k
  Builder(K);
61
4.34k
  int VisitInOrder[] = {
62
4.34k
    (Builder(V), 0) ...,
63
4.34k
    0 // Avoid empty array if there are no arguments.
64
4.34k
  };
65
4.34k
  (void)VisitInOrder;
66
4.34k
}
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::NodeArray>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::NodeArray)
Line
Count
Source
58
445
void profileCtor(llvm::FoldingSetNodeID &ID, Node::Kind K, T ...V) {
59
445
  FoldingSetNodeIDBuilder Builder = {ID};
60
445
  Builder(K);
61
445
  int VisitInOrder[] = {
62
445
    (Builder(V), 0) ...,
63
445
    0 // Avoid empty array if there are no arguments.
64
445
  };
65
445
  (void)VisitInOrder;
66
445
}
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Qualifiers>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Qualifiers)
Line
Count
Source
58
2
void profileCtor(llvm::FoldingSetNodeID &ID, Node::Kind K, T ...V) {
59
2
  FoldingSetNodeIDBuilder Builder = {ID};
60
2
  Builder(K);
61
2
  int VisitInOrder[] = {
62
2
    (Builder(V), 0) ...,
63
2
    0 // Avoid empty array if there are no arguments.
64
2
  };
65
2
  (void)VisitInOrder;
66
2
}
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node const*>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node const*)
Line
Count
Source
58
7
void profileCtor(llvm::FoldingSetNodeID &ID, Node::Kind K, T ...V) {
59
7
  FoldingSetNodeIDBuilder Builder = {ID};
60
7
  Builder(K);
61
7
  int VisitInOrder[] = {
62
7
    (Builder(V), 0) ...,
63
7
    0 // Avoid empty array if there are no arguments.
64
7
  };
65
7
  (void)VisitInOrder;
66
7
}
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node*>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node*)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::StringView>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::StringView)
Line
Count
Source
58
1.84k
void profileCtor(llvm::FoldingSetNodeID &ID, Node::Kind K, T ...V) {
59
1.84k
  FoldingSetNodeIDBuilder Builder = {ID};
60
1.84k
  Builder(K);
61
1.84k
  int VisitInOrder[] = {
62
1.84k
    (Builder(V), 0) ...,
63
1.84k
    0 // Avoid empty array if there are no arguments.
64
1.84k
  };
65
1.84k
  (void)VisitInOrder;
66
1.84k
}
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node*, llvm::itanium_demangle::StringView>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node*, llvm::itanium_demangle::StringView)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::ReferenceKind>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::ReferenceKind)
Line
Count
Source
58
16
void profileCtor(llvm::FoldingSetNodeID &ID, Node::Kind K, T ...V) {
59
16
  FoldingSetNodeIDBuilder Builder = {ID};
60
16
  Builder(K);
61
16
  int VisitInOrder[] = {
62
16
    (Builder(V), 0) ...,
63
16
    0 // Avoid empty array if there are no arguments.
64
16
  };
65
16
  (void)VisitInOrder;
66
16
}
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::NodeOrString>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::NodeOrString)
Line
Count
Source
58
14
void profileCtor(llvm::FoldingSetNodeID &ID, Node::Kind K, T ...V) {
59
14
  FoldingSetNodeIDBuilder Builder = {ID};
60
14
  Builder(K);
61
14
  int VisitInOrder[] = {
62
14
    (Builder(V), 0) ...,
63
14
    0 // Avoid empty array if there are no arguments.
64
14
  };
65
14
  (void)VisitInOrder;
66
14
}
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::Qualifiers, llvm::itanium_demangle::FunctionRefQual, llvm::itanium_demangle::Node const*>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::Qualifiers, llvm::itanium_demangle::FunctionRefQual, llvm::itanium_demangle::Node const*)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Qualifiers, llvm::itanium_demangle::FunctionRefQual>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Qualifiers, llvm::itanium_demangle::FunctionRefQual)
Line
Count
Source
58
190
void profileCtor(llvm::FoldingSetNodeID &ID, Node::Kind K, T ...V) {
59
190
  FoldingSetNodeIDBuilder Builder = {ID};
60
190
  Builder(K);
61
190
  int VisitInOrder[] = {
62
190
    (Builder(V), 0) ...,
63
190
    0 // Avoid empty array if there are no arguments.
64
190
  };
65
190
  (void)VisitInOrder;
66
190
}
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node const*>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node const*)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node*, llvm::itanium_demangle::Node*>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node*, llvm::itanium_demangle::Node*)
Line
Count
Source
58
1.08k
void profileCtor(llvm::FoldingSetNodeID &ID, Node::Kind K, T ...V) {
59
1.08k
  FoldingSetNodeIDBuilder Builder = {ID};
60
1.08k
  Builder(K);
61
1.08k
  int VisitInOrder[] = {
62
1.08k
    (Builder(V), 0) ...,
63
1.08k
    0 // Avoid empty array if there are no arguments.
64
1.08k
  };
65
1.08k
  (void)VisitInOrder;
66
1.08k
}
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::NodeOrString>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::NodeOrString)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node*>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node*)
Line
Count
Source
58
17
void profileCtor(llvm::FoldingSetNodeID &ID, Node::Kind K, T ...V) {
59
17
  FoldingSetNodeIDBuilder Builder = {ID};
60
17
  Builder(K);
61
17
  int VisitInOrder[] = {
62
17
    (Builder(V), 0) ...,
63
17
    0 // Avoid empty array if there are no arguments.
64
17
  };
65
17
  (void)VisitInOrder;
66
17
}
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::SpecialSubKind>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::SpecialSubKind)
Line
Count
Source
58
70
void profileCtor(llvm::FoldingSetNodeID &ID, Node::Kind K, T ...V) {
59
70
  FoldingSetNodeIDBuilder Builder = {ID};
60
70
  Builder(K);
61
70
  int VisitInOrder[] = {
62
70
    (Builder(V), 0) ...,
63
70
    0 // Avoid empty array if there are no arguments.
64
70
  };
65
70
  (void)VisitInOrder;
66
70
}
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node const*, bool, int>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node const*, bool, int)
Line
Count
Source
58
9
void profileCtor(llvm::FoldingSetNodeID &ID, Node::Kind K, T ...V) {
59
9
  FoldingSetNodeIDBuilder Builder = {ID};
60
9
  Builder(K);
61
9
  int VisitInOrder[] = {
62
9
    (Builder(V), 0) ...,
63
9
    0 // Avoid empty array if there are no arguments.
64
9
  };
65
9
  (void)VisitInOrder;
66
9
}
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::StringView>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::StringView)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node const*>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::NodeArray>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::NodeArray)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::Node*, llvm::itanium_demangle::NodeArray, bool, bool>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::Node*, llvm::itanium_demangle::NodeArray, bool, bool)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node*, bool, bool>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node*, bool, bool)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<bool, llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, bool, llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<bool>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, bool)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::StringView, llvm::itanium_demangle::StringView>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::StringView, llvm::itanium_demangle::StringView)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*, bool>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*, bool)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<char const*>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, char const*)
Line
Count
Source
58
350
void profileCtor(llvm::FoldingSetNodeID &ID, Node::Kind K, T ...V) {
59
350
  FoldingSetNodeIDBuilder Builder = {ID};
60
350
  Builder(K);
61
350
  int VisitInOrder[] = {
62
350
    (Builder(V), 0) ...,
63
350
    0 // Avoid empty array if there are no arguments.
64
350
  };
65
350
  (void)VisitInOrder;
66
350
}
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<int>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, int)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<bool, llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node*, llvm::itanium_demangle::Node*>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, bool, llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node*, llvm::itanium_demangle::Node*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node*, llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node*>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node*, llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<char const*, llvm::itanium_demangle::Node*, char const*>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, char const*, llvm::itanium_demangle::Node*, char const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<char const*, llvm::itanium_demangle::Node*, llvm::itanium_demangle::Node*>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, char const*, llvm::itanium_demangle::Node*, llvm::itanium_demangle::Node*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node*, llvm::itanium_demangle::NodeArray>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node*, llvm::itanium_demangle::NodeArray)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node*, char const*, llvm::itanium_demangle::Node*>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node*, char const*, llvm::itanium_demangle::Node*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node*, llvm::itanium_demangle::Node*, bool>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node*, llvm::itanium_demangle::Node*, bool)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node*, llvm::itanium_demangle::Node*, llvm::itanium_demangle::Node*>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node*, llvm::itanium_demangle::Node*, llvm::itanium_demangle::Node*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<std::nullptr_t, llvm::itanium_demangle::NodeArray>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, std::nullptr_t, llvm::itanium_demangle::NodeArray)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node*, char const*>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node*, char const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node*, llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::Qualifiers, llvm::itanium_demangle::FunctionRefQual, llvm::itanium_demangle::Node*>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node*, llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::Qualifiers, llvm::itanium_demangle::FunctionRefQual, llvm::itanium_demangle::Node*)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node*, llvm::itanium_demangle::Qualifiers>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node*, llvm::itanium_demangle::Qualifiers)
Line
Count
Source
58
4
void profileCtor(llvm::FoldingSetNodeID &ID, Node::Kind K, T ...V) {
59
4
  FoldingSetNodeIDBuilder Builder = {ID};
60
4
  Builder(K);
61
4
  int VisitInOrder[] = {
62
4
    (Builder(V), 0) ...,
63
4
    0 // Avoid empty array if there are no arguments.
64
4
  };
65
4
  (void)VisitInOrder;
66
4
}
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node*, llvm::itanium_demangle::NodeOrString>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node*, llvm::itanium_demangle::NodeOrString)
Line
Count
Source
58
17
void profileCtor(llvm::FoldingSetNodeID &ID, Node::Kind K, T ...V) {
59
17
  FoldingSetNodeIDBuilder Builder = {ID};
60
17
  Builder(K);
61
17
  int VisitInOrder[] = {
62
17
    (Builder(V), 0) ...,
63
17
    0 // Avoid empty array if there are no arguments.
64
17
  };
65
17
  (void)VisitInOrder;
66
17
}
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node*, llvm::itanium_demangle::ReferenceKind>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node*, llvm::itanium_demangle::ReferenceKind)
Line
Count
Source
58
27
void profileCtor(llvm::FoldingSetNodeID &ID, Node::Kind K, T ...V) {
59
27
  FoldingSetNodeIDBuilder Builder = {ID};
60
27
  Builder(K);
61
27
  int VisitInOrder[] = {
62
27
    (Builder(V), 0) ...,
63
27
    0 // Avoid empty array if there are no arguments.
64
27
  };
65
27
  (void)VisitInOrder;
66
27
}
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node*, bool, int>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node*, bool, int)
Line
Count
Source
58
12
void profileCtor(llvm::FoldingSetNodeID &ID, Node::Kind K, T ...V) {
59
12
  FoldingSetNodeIDBuilder Builder = {ID};
60
12
  Builder(K);
61
12
  int VisitInOrder[] = {
62
12
    (Builder(V), 0) ...,
63
12
    0 // Avoid empty array if there are no arguments.
64
12
  };
65
12
  (void)VisitInOrder;
66
12
}
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<char const*, llvm::itanium_demangle::Node*>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, char const*, llvm::itanium_demangle::Node*)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<llvm::itanium_demangle::Node*, llvm::itanium_demangle::Node*, llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::Node*, llvm::itanium_demangle::Qualifiers, llvm::itanium_demangle::FunctionRefQual>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, llvm::itanium_demangle::Node*, llvm::itanium_demangle::Node*, llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::Node*, llvm::itanium_demangle::Qualifiers, llvm::itanium_demangle::FunctionRefQual)
Line
Count
Source
58
238
void profileCtor(llvm::FoldingSetNodeID &ID, Node::Kind K, T ...V) {
59
238
  FoldingSetNodeIDBuilder Builder = {ID};
60
238
  Builder(K);
61
238
  int VisitInOrder[] = {
62
238
    (Builder(V), 0) ...,
63
238
    0 // Avoid empty array if there are no arguments.
64
238
  };
65
238
  (void)VisitInOrder;
66
238
}
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::profileCtor<unsigned long>(llvm::FoldingSetNodeID&, llvm::itanium_demangle::Node::Kind, unsigned long)
67
68
// FIXME: Convert this to a generic lambda when possible.
69
template<typename NodeT> struct ProfileSpecificNode {
70
  FoldingSetNodeID &ID;
71
2.02k
  template<typename ...T> void operator()(T ...V) {
72
2.02k
    profileCtor(ID, NodeKind<NodeT>::Kind, V...);
73
2.02k
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::NodeArrayNode>::operator()<llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::DotSuffix>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::VendorExtQualType>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::QualType>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Qualifiers>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Qualifiers)
Line
Count
Source
71
2
  template<typename ...T> void operator()(T ...V) {
72
2
    profileCtor(ID, NodeKind<NodeT>::Kind, V...);
73
2
  }
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::ConversionOperatorType>::operator()<llvm::itanium_demangle::Node const*>(llvm::itanium_demangle::Node const*)
Line
Count
Source
71
1
  template<typename ...T> void operator()(T ...V) {
72
1
    profileCtor(ID, NodeKind<NodeT>::Kind, V...);
73
1
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::PostfixQualifiedType>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::ElaboratedTypeSpefType>::operator()<llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node*>(llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node*)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::NameType>::operator()<llvm::itanium_demangle::StringView>(llvm::itanium_demangle::StringView)
Line
Count
Source
71
1.02k
  template<typename ...T> void operator()(T ...V) {
72
1.02k
    profileCtor(ID, NodeKind<NodeT>::Kind, V...);
73
1.02k
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::AbiTagAttr>::operator()<llvm::itanium_demangle::Node*, llvm::itanium_demangle::StringView>(llvm::itanium_demangle::Node*, llvm::itanium_demangle::StringView)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::EnableIfAttr>::operator()<llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::ObjCProtoName>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::PointerType>::operator()<llvm::itanium_demangle::Node const*>(llvm::itanium_demangle::Node const*)
Line
Count
Source
71
6
  template<typename ...T> void operator()(T ...V) {
72
6
    profileCtor(ID, NodeKind<NodeT>::Kind, V...);
73
6
  }
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::ReferenceType>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::ReferenceKind>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::ReferenceKind)
Line
Count
Source
71
16
  template<typename ...T> void operator()(T ...V) {
72
16
    profileCtor(ID, NodeKind<NodeT>::Kind, V...);
73
16
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::PointerToMemberType>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::ArrayType>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::NodeOrString>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::NodeOrString)
Line
Count
Source
71
14
  template<typename ...T> void operator()(T ...V) {
72
14
    profileCtor(ID, NodeKind<NodeT>::Kind, V...);
73
14
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::FunctionType>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::Qualifiers, llvm::itanium_demangle::FunctionRefQual, llvm::itanium_demangle::Node const*>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::Qualifiers, llvm::itanium_demangle::FunctionRefQual, llvm::itanium_demangle::Node const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::NoexceptSpec>::operator()<llvm::itanium_demangle::Node const*>(llvm::itanium_demangle::Node const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::DynamicExceptionSpec>::operator()<llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::FunctionEncoding>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Qualifiers, llvm::itanium_demangle::FunctionRefQual>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Qualifiers, llvm::itanium_demangle::FunctionRefQual)
Line
Count
Source
71
190
  template<typename ...T> void operator()(T ...V) {
72
190
    profileCtor(ID, NodeKind<NodeT>::Kind, V...);
73
190
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::LiteralOperator>::operator()<llvm::itanium_demangle::Node const*>(llvm::itanium_demangle::Node const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::SpecialName>::operator()<llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node const*>(llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::CtorVtableSpecialName>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::QualifiedName>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::NestedName>::operator()<llvm::itanium_demangle::Node*, llvm::itanium_demangle::Node*>(llvm::itanium_demangle::Node*, llvm::itanium_demangle::Node*)
Line
Count
Source
71
301
  template<typename ...T> void operator()(T ...V) {
72
301
    profileCtor(ID, NodeKind<NodeT>::Kind, V...);
73
301
  }
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::LocalName>::operator()<llvm::itanium_demangle::Node*, llvm::itanium_demangle::Node*>(llvm::itanium_demangle::Node*, llvm::itanium_demangle::Node*)
Line
Count
Source
71
3
  template<typename ...T> void operator()(T ...V) {
72
3
    profileCtor(ID, NodeKind<NodeT>::Kind, V...);
73
3
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::VectorType>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::NodeOrString>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::NodeOrString)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::PixelVectorType>::operator()<llvm::itanium_demangle::NodeOrString>(llvm::itanium_demangle::NodeOrString)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::ParameterPack>::operator()<llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::TemplateArgumentPack>::operator()<llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::ParameterPackExpansion>::operator()<llvm::itanium_demangle::Node const*>(llvm::itanium_demangle::Node const*)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::TemplateArgs>::operator()<llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray)
Line
Count
Source
71
234
  template<typename ...T> void operator()(T ...V) {
72
234
    profileCtor(ID, NodeKind<NodeT>::Kind, V...);
73
234
  }
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::NameWithTemplateArgs>::operator()<llvm::itanium_demangle::Node*, llvm::itanium_demangle::Node*>(llvm::itanium_demangle::Node*, llvm::itanium_demangle::Node*)
Line
Count
Source
71
195
  template<typename ...T> void operator()(T ...V) {
72
195
    profileCtor(ID, NodeKind<NodeT>::Kind, V...);
73
195
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::GlobalQualifiedName>::operator()<llvm::itanium_demangle::Node*>(llvm::itanium_demangle::Node*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::StdQualifiedName>::operator()<llvm::itanium_demangle::Node*>(llvm::itanium_demangle::Node*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::ExpandedSpecialSubstitution>::operator()<llvm::itanium_demangle::SpecialSubKind>(llvm::itanium_demangle::SpecialSubKind)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::SpecialSubstitution>::operator()<llvm::itanium_demangle::SpecialSubKind>(llvm::itanium_demangle::SpecialSubKind)
Line
Count
Source
71
31
  template<typename ...T> void operator()(T ...V) {
72
31
    profileCtor(ID, NodeKind<NodeT>::Kind, V...);
73
31
  }
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::CtorDtorName>::operator()<llvm::itanium_demangle::Node const*, bool, int>(llvm::itanium_demangle::Node const*, bool, int)
Line
Count
Source
71
9
  template<typename ...T> void operator()(T ...V) {
72
9
    profileCtor(ID, NodeKind<NodeT>::Kind, V...);
73
9
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::DtorName>::operator()<llvm::itanium_demangle::Node const*>(llvm::itanium_demangle::Node const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::UnnamedTypeName>::operator()<llvm::itanium_demangle::StringView>(llvm::itanium_demangle::StringView)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::ClosureTypeName>::operator()<llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::StringView>(llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::StringView)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::StructuredBindingName>::operator()<llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::BinaryExpr>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node const*>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::ArraySubscriptExpr>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::PostfixExpr>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::ConditionalExpr>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::MemberExpr>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node const*>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::EnclosingExpr>::operator()<llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView>(llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::CastExpr>::operator()<llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*>(llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::SizeofParamPackExpr>::operator()<llvm::itanium_demangle::Node const*>(llvm::itanium_demangle::Node const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::CallExpr>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::NodeArray)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::NewExpr>::operator()<llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::Node*, llvm::itanium_demangle::NodeArray, bool, bool>(llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::Node*, llvm::itanium_demangle::NodeArray, bool, bool)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::DeleteExpr>::operator()<llvm::itanium_demangle::Node*, bool, bool>(llvm::itanium_demangle::Node*, bool, bool)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::PrefixExpr>::operator()<llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node*>(llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::FunctionParam>::operator()<llvm::itanium_demangle::StringView>(llvm::itanium_demangle::StringView)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::ConversionExpr>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::NodeArray)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::InitListExpr>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::NodeArray)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::FoldExpr>::operator()<bool, llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*>(bool, llvm::itanium_demangle::StringView, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::ThrowExpr>::operator()<llvm::itanium_demangle::Node const*>(llvm::itanium_demangle::Node const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::UUIDOfExpr>::operator()<llvm::itanium_demangle::Node*>(llvm::itanium_demangle::Node*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::BoolExpr>::operator()<bool>(bool)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::IntegerCastExpr>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::StringView)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::IntegerLiteral>::operator()<llvm::itanium_demangle::StringView, llvm::itanium_demangle::StringView>(llvm::itanium_demangle::StringView, llvm::itanium_demangle::StringView)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::FloatLiteralImpl<float> >::operator()<llvm::itanium_demangle::StringView>(llvm::itanium_demangle::StringView)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::FloatLiteralImpl<double> >::operator()<llvm::itanium_demangle::StringView>(llvm::itanium_demangle::StringView)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::FloatLiteralImpl<long double> >::operator()<llvm::itanium_demangle::StringView>(llvm::itanium_demangle::StringView)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::BracedExpr>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*, bool>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*, bool)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileSpecificNode<llvm::itanium_demangle::BracedRangeExpr>::operator()<llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*>(llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*, llvm::itanium_demangle::Node const*)
74
};
75
76
struct ProfileNode {
77
  FoldingSetNodeID &ID;
78
2.02k
  template<typename NodeT> void operator()(const NodeT *N) {
79
2.02k
    N->match(ProfileSpecificNode<NodeT>{ID});
80
2.02k
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::NodeArrayNode>(llvm::itanium_demangle::NodeArrayNode const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::DotSuffix>(llvm::itanium_demangle::DotSuffix const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::VendorExtQualType>(llvm::itanium_demangle::VendorExtQualType const*)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::QualType>(llvm::itanium_demangle::QualType const*)
Line
Count
Source
78
2
  template<typename NodeT> void operator()(const NodeT *N) {
79
2
    N->match(ProfileSpecificNode<NodeT>{ID});
80
2
  }
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::ConversionOperatorType>(llvm::itanium_demangle::ConversionOperatorType const*)
Line
Count
Source
78
1
  template<typename NodeT> void operator()(const NodeT *N) {
79
1
    N->match(ProfileSpecificNode<NodeT>{ID});
80
1
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::PostfixQualifiedType>(llvm::itanium_demangle::PostfixQualifiedType const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::ElaboratedTypeSpefType>(llvm::itanium_demangle::ElaboratedTypeSpefType const*)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::NameType>(llvm::itanium_demangle::NameType const*)
Line
Count
Source
78
1.02k
  template<typename NodeT> void operator()(const NodeT *N) {
79
1.02k
    N->match(ProfileSpecificNode<NodeT>{ID});
80
1.02k
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::AbiTagAttr>(llvm::itanium_demangle::AbiTagAttr const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::EnableIfAttr>(llvm::itanium_demangle::EnableIfAttr const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::ObjCProtoName>(llvm::itanium_demangle::ObjCProtoName const*)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::PointerType>(llvm::itanium_demangle::PointerType const*)
Line
Count
Source
78
6
  template<typename NodeT> void operator()(const NodeT *N) {
79
6
    N->match(ProfileSpecificNode<NodeT>{ID});
80
6
  }
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::ReferenceType>(llvm::itanium_demangle::ReferenceType const*)
Line
Count
Source
78
16
  template<typename NodeT> void operator()(const NodeT *N) {
79
16
    N->match(ProfileSpecificNode<NodeT>{ID});
80
16
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::PointerToMemberType>(llvm::itanium_demangle::PointerToMemberType const*)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::ArrayType>(llvm::itanium_demangle::ArrayType const*)
Line
Count
Source
78
14
  template<typename NodeT> void operator()(const NodeT *N) {
79
14
    N->match(ProfileSpecificNode<NodeT>{ID});
80
14
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::FunctionType>(llvm::itanium_demangle::FunctionType const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::NoexceptSpec>(llvm::itanium_demangle::NoexceptSpec const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::DynamicExceptionSpec>(llvm::itanium_demangle::DynamicExceptionSpec const*)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::FunctionEncoding>(llvm::itanium_demangle::FunctionEncoding const*)
Line
Count
Source
78
190
  template<typename NodeT> void operator()(const NodeT *N) {
79
190
    N->match(ProfileSpecificNode<NodeT>{ID});
80
190
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::LiteralOperator>(llvm::itanium_demangle::LiteralOperator const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::SpecialName>(llvm::itanium_demangle::SpecialName const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::CtorVtableSpecialName>(llvm::itanium_demangle::CtorVtableSpecialName const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::QualifiedName>(llvm::itanium_demangle::QualifiedName const*)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::NestedName>(llvm::itanium_demangle::NestedName const*)
Line
Count
Source
78
301
  template<typename NodeT> void operator()(const NodeT *N) {
79
301
    N->match(ProfileSpecificNode<NodeT>{ID});
80
301
  }
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::LocalName>(llvm::itanium_demangle::LocalName const*)
Line
Count
Source
78
3
  template<typename NodeT> void operator()(const NodeT *N) {
79
3
    N->match(ProfileSpecificNode<NodeT>{ID});
80
3
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::VectorType>(llvm::itanium_demangle::VectorType const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::PixelVectorType>(llvm::itanium_demangle::PixelVectorType const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::ParameterPack>(llvm::itanium_demangle::ParameterPack const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::TemplateArgumentPack>(llvm::itanium_demangle::TemplateArgumentPack const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::ParameterPackExpansion>(llvm::itanium_demangle::ParameterPackExpansion const*)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::TemplateArgs>(llvm::itanium_demangle::TemplateArgs const*)
Line
Count
Source
78
234
  template<typename NodeT> void operator()(const NodeT *N) {
79
234
    N->match(ProfileSpecificNode<NodeT>{ID});
80
234
  }
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::NameWithTemplateArgs>(llvm::itanium_demangle::NameWithTemplateArgs const*)
Line
Count
Source
78
195
  template<typename NodeT> void operator()(const NodeT *N) {
79
195
    N->match(ProfileSpecificNode<NodeT>{ID});
80
195
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::GlobalQualifiedName>(llvm::itanium_demangle::GlobalQualifiedName const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::StdQualifiedName>(llvm::itanium_demangle::StdQualifiedName const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::ExpandedSpecialSubstitution>(llvm::itanium_demangle::ExpandedSpecialSubstitution const*)
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::SpecialSubstitution>(llvm::itanium_demangle::SpecialSubstitution const*)
Line
Count
Source
78
31
  template<typename NodeT> void operator()(const NodeT *N) {
79
31
    N->match(ProfileSpecificNode<NodeT>{ID});
80
31
  }
ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::CtorDtorName>(llvm::itanium_demangle::CtorDtorName const*)
Line
Count
Source
78
9
  template<typename NodeT> void operator()(const NodeT *N) {
79
9
    N->match(ProfileSpecificNode<NodeT>{ID});
80
9
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::DtorName>(llvm::itanium_demangle::DtorName const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::UnnamedTypeName>(llvm::itanium_demangle::UnnamedTypeName const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::ClosureTypeName>(llvm::itanium_demangle::ClosureTypeName const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::StructuredBindingName>(llvm::itanium_demangle::StructuredBindingName const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::BinaryExpr>(llvm::itanium_demangle::BinaryExpr const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::ArraySubscriptExpr>(llvm::itanium_demangle::ArraySubscriptExpr const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::PostfixExpr>(llvm::itanium_demangle::PostfixExpr const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::ConditionalExpr>(llvm::itanium_demangle::ConditionalExpr const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::MemberExpr>(llvm::itanium_demangle::MemberExpr const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::EnclosingExpr>(llvm::itanium_demangle::EnclosingExpr const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::CastExpr>(llvm::itanium_demangle::CastExpr const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::SizeofParamPackExpr>(llvm::itanium_demangle::SizeofParamPackExpr const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::CallExpr>(llvm::itanium_demangle::CallExpr const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::NewExpr>(llvm::itanium_demangle::NewExpr const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::DeleteExpr>(llvm::itanium_demangle::DeleteExpr const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::PrefixExpr>(llvm::itanium_demangle::PrefixExpr const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::FunctionParam>(llvm::itanium_demangle::FunctionParam const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::ConversionExpr>(llvm::itanium_demangle::ConversionExpr const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::InitListExpr>(llvm::itanium_demangle::InitListExpr const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::FoldExpr>(llvm::itanium_demangle::FoldExpr const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::ThrowExpr>(llvm::itanium_demangle::ThrowExpr const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::UUIDOfExpr>(llvm::itanium_demangle::UUIDOfExpr const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::BoolExpr>(llvm::itanium_demangle::BoolExpr const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::IntegerCastExpr>(llvm::itanium_demangle::IntegerCastExpr const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::IntegerLiteral>(llvm::itanium_demangle::IntegerLiteral const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::FloatLiteralImpl<float> >(llvm::itanium_demangle::FloatLiteralImpl<float> const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::FloatLiteralImpl<double> >(llvm::itanium_demangle::FloatLiteralImpl<double> const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::FloatLiteralImpl<long double> >(llvm::itanium_demangle::FloatLiteralImpl<long double> const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::BracedExpr>(llvm::itanium_demangle::BracedExpr const*)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:void (anonymous namespace)::ProfileNode::operator()<llvm::itanium_demangle::BracedRangeExpr>(llvm::itanium_demangle::BracedRangeExpr const*)
81
};
82
83
0
template<> void ProfileNode::operator()(const ForwardTemplateReference *N) {
84
0
  llvm_unreachable("should never canonicalize a ForwardTemplateReference");
85
0
}
86
87
2.02k
void profileNode(llvm::FoldingSetNodeID &ID, const Node *N) {
88
2.02k
  N->visit(ProfileNode{ID});
89
2.02k
}
90
91
class FoldingNodeAllocator {
92
  class alignas(alignof(Node *)) NodeHeader : public llvm::FoldingSetNode {
93
  public:
94
    // 'Node' in this context names the injected-class-name of the base class.
95
4.33k
    itanium_demangle::Node *getNode() {
96
4.33k
      return reinterpret_cast<itanium_demangle::Node *>(this + 1);
97
4.33k
    }
98
2.02k
    void Profile(llvm::FoldingSetNodeID &ID) { profileNode(ID, getNode()); }
99
  };
100
101
  BumpPtrAllocator RawAlloc;
102
  llvm::FoldingSet<NodeHeader> Nodes;
103
104
public:
105
0
  void reset() {}
106
107
  template <typename T, typename... Args>
108
2.32k
  std::pair<Node *, bool> getOrCreateNode(bool CreateNewNodes, Args &&... As) {
109
2.32k
    // FIXME: Don't canonicalize forward template references for now, because
110
2.32k
    // they contain state (the resolved template node) that's not known at their
111
2.32k
    // point of creation.
112
2.32k
    if (std::is_same<T, ForwardTemplateReference>::value) {
113
7
      // Note that we don't use if-constexpr here and so we must still write
114
7
      // this code in a generic form.
115
7
      return {new (RawAlloc.Allocate(sizeof(T), alignof(T)))
116
7
                  T(std::forward<Args>(As)...),
117
7
              true};
118
7
    }
119
2.32k
120
2.32k
    llvm::FoldingSetNodeID ID;
121
2.32k
    profileCtor(ID, NodeKind<T>::Kind, As...);
122
2.32k
123
2.32k
    void *InsertPos;
124
2.32k
    if (NodeHeader *Existing = Nodes.FindNodeOrInsertPos(ID, InsertPos))
125
1.62k
      return {static_cast<T*>(Existing->getNode()), false};
126
700
127
700
    if (!CreateNewNodes)
128
15
      return {nullptr, true};
129
685
130
685
    static_assert(alignof(T) <= alignof(NodeHeader),
131
685
                  "underaligned node header for specific node kind");
132
685
    void *Storage =
133
685
        RawAlloc.Allocate(sizeof(NodeHeader) + sizeof(T), alignof(NodeHeader));
134
685
    NodeHeader *New = new (Storage) NodeHeader;
135
685
    T *Result = new (New->getNode()) T(std::forward<Args>(As)...);
136
685
    Nodes.InsertNode(New, InsertPos);
137
685
    return {Result, true};
138
685
  }
ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NameType, char const (&) [4]>(bool, char const (&&&) [4])
Line
Count
Source
108
202
  std::pair<Node *, bool> getOrCreateNode(bool CreateNewNodes, Args &&... As) {
109
202
    // FIXME: Don't canonicalize forward template references for now, because
110
202
    // they contain state (the resolved template node) that's not known at their
111
202
    // point of creation.
112
202
    if (std::is_same<T, ForwardTemplateReference>::value) {
113
0
      // Note that we don't use if-constexpr here and so we must still write
114
0
      // this code in a generic form.
115
0
      return {new (RawAlloc.Allocate(sizeof(T), alignof(T)))
116
0
                  T(std::forward<Args>(As)...),
117
0
              true};
118
0
    }
119
202
120
202
    llvm::FoldingSetNodeID ID;
121
202
    profileCtor(ID, NodeKind<T>::Kind, As...);
122
202
123
202
    void *InsertPos;
124
202
    if (NodeHeader *Existing = Nodes.FindNodeOrInsertPos(ID, InsertPos))
125
178
      return {static_cast<T*>(Existing->getNode()), false};
126
24
127
24
    if (!CreateNewNodes)
128
0
      return {nullptr, true};
129
24
130
24
    static_assert(alignof(T) <= alignof(NodeHeader),
131
24
                  "underaligned node header for specific node kind");
132
24
    void *Storage =
133
24
        RawAlloc.Allocate(sizeof(NodeHeader) + sizeof(T), alignof(NodeHeader));
134
24
    NodeHeader *New = new (Storage) NodeHeader;
135
24
    T *Result = new (New->getNode()) T(std::forward<Args>(As)...);
136
24
    Nodes.InsertNode(New, InsertPos);
137
24
    return {Result, true};
138
24
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::IntegerLiteral, llvm::itanium_demangle::StringView&, llvm::itanium_demangle::StringView&>(bool, llvm::itanium_demangle::StringView&&&, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::BoolExpr, int>(bool, int&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::FloatLiteralImpl<float>, llvm::itanium_demangle::StringView&>(bool, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::FloatLiteralImpl<double>, llvm::itanium_demangle::StringView&>(bool, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::FloatLiteralImpl<long double>, llvm::itanium_demangle::StringView&>(bool, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::IntegerCastExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::FunctionParam, llvm::itanium_demangle::StringView&>(bool, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::FoldExpr, bool&, llvm::itanium_demangle::StringView&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(bool, bool&&&, llvm::itanium_demangle::StringView&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::BinaryExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::PrefixExpr, llvm::itanium_demangle::StringView&, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::StringView&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::EnclosingExpr, char const (&) [10], llvm::itanium_demangle::Node*&, char const (&) [2]>(bool, char const (&&&) [10], llvm::itanium_demangle::Node*&&&, char const (&&&) [2])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::CastExpr, char const (&) [11], llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(bool, char const (&&&) [11], llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::CallExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::ConversionExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray&>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::ConversionExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::DeleteExpr, llvm::itanium_demangle::Node*&, bool&, bool>(bool, llvm::itanium_demangle::Node*&&&, bool&&&, bool&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::CastExpr, char const (&) [13], llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(bool, char const (&&&) [13], llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NameType, char const (&) [22]>(bool, char const (&&&) [22])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::QualifiedName, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::DtorName, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&)
ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::ConversionOperatorType, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&)
Line
Count
Source
108
7
  std::pair<Node *, bool> getOrCreateNode(bool CreateNewNodes, Args &&... As) {
109
7
    // FIXME: Don't canonicalize forward template references for now, because
110
7
    // they contain state (the resolved template node) that's not known at their
111
7
    // point of creation.
112
7
    if (std::is_same<T, ForwardTemplateReference>::value) {
113
0
      // Note that we don't use if-constexpr here and so we must still write
114
0
      // this code in a generic form.
115
0
      return {new (RawAlloc.Allocate(sizeof(T), alignof(T)))
116
0
                  T(std::forward<Args>(As)...),
117
0
              true};
118
0
    }
119
7
120
7
    llvm::FoldingSetNodeID ID;
121
7
    profileCtor(ID, NodeKind<T>::Kind, As...);
122
7
123
7
    void *InsertPos;
124
7
    if (NodeHeader *Existing = Nodes.FindNodeOrInsertPos(ID, InsertPos))
125
0
      return {static_cast<T*>(Existing->getNode()), false};
126
7
127
7
    if (!CreateNewNodes)
128
0
      return {nullptr, true};
129
7
130
7
    static_assert(alignof(T) <= alignof(NodeHeader),
131
7
                  "underaligned node header for specific node kind");
132
7
    void *Storage =
133
7
        RawAlloc.Allocate(sizeof(NodeHeader) + sizeof(T), alignof(NodeHeader));
134
7
    NodeHeader *New = new (Storage) NodeHeader;
135
7
    T *Result = new (New->getNode()) T(std::forward<Args>(As)...);
136
7
    Nodes.InsertNode(New, InsertPos);
137
7
    return {Result, true};
138
7
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NameType, char const (&) [16]>(bool, char const (&&&) [16])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::LiteralOperator, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::GlobalQualifiedName, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::MemberExpr, llvm::itanium_demangle::Node*&, char const (&) [3], llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&, char const (&&&) [3], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::MemberExpr, llvm::itanium_demangle::Node*&, char const (&) [2], llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&, char const (&&&) [2], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::ArraySubscriptExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::BracedExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&, bool>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&, bool&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::BracedRangeExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::InitListExpr, std::nullptr_t, llvm::itanium_demangle::NodeArray>(bool, std::nullptr_t&&, llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::PostfixExpr, llvm::itanium_demangle::Node*&, char const (&) [3]>(bool, llvm::itanium_demangle::Node*&&&, char const (&&&) [3])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NewExpr, llvm::itanium_demangle::NodeArray&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray&, bool&, bool&>(bool, llvm::itanium_demangle::NodeArray&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&&, bool&&&, bool&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NewExpr, llvm::itanium_demangle::NodeArray&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray, bool&, bool&>(bool, llvm::itanium_demangle::NodeArray&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&, bool&&&, bool&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::EnclosingExpr, char const (&) [11], llvm::itanium_demangle::Node*&, char const (&) [2]>(bool, char const (&&&) [11], llvm::itanium_demangle::Node*&&&, char const (&&&) [2])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::ConditionalExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::CastExpr, char const (&) [17], llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(bool, char const (&&&) [17], llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::CastExpr, char const (&) [12], llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(bool, char const (&&&) [12], llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::EnclosingExpr, char const (&) [9], llvm::itanium_demangle::Node*&, char const (&) [2]>(bool, char const (&&&) [9], llvm::itanium_demangle::Node*&&&, char const (&&&) [2])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::SizeofParamPackExpr, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::EnclosingExpr, char const (&) [12], llvm::itanium_demangle::Node*&, char const (&) [2]>(bool, char const (&&&) [12], llvm::itanium_demangle::Node*&&&, char const (&&&) [2])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::TemplateArgumentPack, llvm::itanium_demangle::NodeArray&>(bool, llvm::itanium_demangle::NodeArray&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NodeArrayNode, llvm::itanium_demangle::NodeArray>(bool, llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::InitListExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::ThrowExpr, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::UUIDOfExpr, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NoexceptSpec, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::DynamicExceptionSpec, llvm::itanium_demangle::NodeArray>(bool, llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::FunctionType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray&, llvm::itanium_demangle::Qualifiers&, llvm::itanium_demangle::FunctionRefQual&, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&&, llvm::itanium_demangle::Qualifiers&&&, llvm::itanium_demangle::FunctionRefQual&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::ObjCProtoName, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::VendorExtQualType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&)
ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::QualType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Qualifiers&>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Qualifiers&&&)
Line
Count
Source
108
4
  std::pair<Node *, bool> getOrCreateNode(bool CreateNewNodes, Args &&... As) {
109
4
    // FIXME: Don't canonicalize forward template references for now, because
110
4
    // they contain state (the resolved template node) that's not known at their
111
4
    // point of creation.
112
4
    if (std::is_same<T, ForwardTemplateReference>::value) {
113
0
      // Note that we don't use if-constexpr here and so we must still write
114
0
      // this code in a generic form.
115
0
      return {new (RawAlloc.Allocate(sizeof(T), alignof(T)))
116
0
                  T(std::forward<Args>(As)...),
117
0
              true};
118
0
    }
119
4
120
4
    llvm::FoldingSetNodeID ID;
121
4
    profileCtor(ID, NodeKind<T>::Kind, As...);
122
4
123
4
    void *InsertPos;
124
4
    if (NodeHeader *Existing = Nodes.FindNodeOrInsertPos(ID, InsertPos))
125
2
      return {static_cast<T*>(Existing->getNode()), false};
126
2
127
2
    if (!CreateNewNodes)
128
0
      return {nullptr, true};
129
2
130
2
    static_assert(alignof(T) <= alignof(NodeHeader),
131
2
                  "underaligned node header for specific node kind");
132
2
    void *Storage =
133
2
        RawAlloc.Allocate(sizeof(NodeHeader) + sizeof(T), alignof(NodeHeader));
134
2
    NodeHeader *New = new (Storage) NodeHeader;
135
2
    T *Result = new (New->getNode()) T(std::forward<Args>(As)...);
136
2
    Nodes.InsertNode(New, InsertPos);
137
2
    return {Result, true};
138
2
  }
ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NameType, char const (&) [5]>(bool, char const (&&&) [5])
Line
Count
Source
108
122
  std::pair<Node *, bool> getOrCreateNode(bool CreateNewNodes, Args &&... As) {
109
122
    // FIXME: Don't canonicalize forward template references for now, because
110
122
    // they contain state (the resolved template node) that's not known at their
111
122
    // point of creation.
112
122
    if (std::is_same<T, ForwardTemplateReference>::value) {
113
0
      // Note that we don't use if-constexpr here and so we must still write
114
0
      // this code in a generic form.
115
0
      return {new (RawAlloc.Allocate(sizeof(T), alignof(T)))
116
0
                  T(std::forward<Args>(As)...),
117
0
              true};
118
0
    }
119
122
120
122
    llvm::FoldingSetNodeID ID;
121
122
    profileCtor(ID, NodeKind<T>::Kind, As...);
122
122
123
122
    void *InsertPos;
124
122
    if (NodeHeader *Existing = Nodes.FindNodeOrInsertPos(ID, InsertPos))
125
107
      return {static_cast<T*>(Existing->getNode()), false};
126
15
127
15
    if (!CreateNewNodes)
128
0
      return {nullptr, true};
129
15
130
15
    static_assert(alignof(T) <= alignof(NodeHeader),
131
15
                  "underaligned node header for specific node kind");
132
15
    void *Storage =
133
15
        RawAlloc.Allocate(sizeof(NodeHeader) + sizeof(T), alignof(NodeHeader));
134
15
    NodeHeader *New = new (Storage) NodeHeader;
135
15
    T *Result = new (New->getNode()) T(std::forward<Args>(As)...);
136
15
    Nodes.InsertNode(New, InsertPos);
137
15
    return {Result, true};
138
15
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NameType, char const (&) [8]>(bool, char const (&&&) [8])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NameType, char const (&) [12]>(bool, char const (&&&) [12])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NameType, char const (&) [14]>(bool, char const (&&&) [14])
ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NameType, char const (&) [6]>(bool, char const (&&&) [6])
Line
Count
Source
108
26
  std::pair<Node *, bool> getOrCreateNode(bool CreateNewNodes, Args &&... As) {
109
26
    // FIXME: Don't canonicalize forward template references for now, because
110
26
    // they contain state (the resolved template node) that's not known at their
111
26
    // point of creation.
112
26
    if (std::is_same<T, ForwardTemplateReference>::value) {
113
0
      // Note that we don't use if-constexpr here and so we must still write
114
0
      // this code in a generic form.
115
0
      return {new (RawAlloc.Allocate(sizeof(T), alignof(T)))
116
0
                  T(std::forward<Args>(As)...),
117
0
              true};
118
0
    }
119
26
120
26
    llvm::FoldingSetNodeID ID;
121
26
    profileCtor(ID, NodeKind<T>::Kind, As...);
122
26
123
26
    void *InsertPos;
124
26
    if (NodeHeader *Existing = Nodes.FindNodeOrInsertPos(ID, InsertPos))
125
21
      return {static_cast<T*>(Existing->getNode()), false};
126
5
127
5
    if (!CreateNewNodes)
128
0
      return {nullptr, true};
129
5
130
5
    static_assert(alignof(T) <= alignof(NodeHeader),
131
5
                  "underaligned node header for specific node kind");
132
5
    void *Storage =
133
5
        RawAlloc.Allocate(sizeof(NodeHeader) + sizeof(T), alignof(NodeHeader));
134
5
    NodeHeader *New = new (Storage) NodeHeader;
135
5
    T *Result = new (New->getNode()) T(std::forward<Args>(As)...);
136
5
    Nodes.InsertNode(New, InsertPos);
137
5
    return {Result, true};
138
5
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NameType, char const (&) [15]>(bool, char const (&&&) [15])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NameType, char const (&) [13]>(bool, char const (&&&) [13])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NameType, char const (&) [10]>(bool, char const (&&&) [10])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NameType, char const (&) [19]>(bool, char const (&&&) [19])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NameType, char const (&) [9]>(bool, char const (&&&) [9])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NameType, char const (&) [18]>(bool, char const (&&&) [18])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NameType, char const (&) [7]>(bool, char const (&&&) [7])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NameType, char const (&) [11]>(bool, char const (&&&) [11])
ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NameType, llvm::itanium_demangle::StringView&>(bool, llvm::itanium_demangle::StringView&&&)
Line
Count
Source
108
820
  std::pair<Node *, bool> getOrCreateNode(bool CreateNewNodes, Args &&... As) {
109
820
    // FIXME: Don't canonicalize forward template references for now, because
110
820
    // they contain state (the resolved template node) that's not known at their
111
820
    // point of creation.
112
820
    if (std::is_same<T, ForwardTemplateReference>::value) {
113
0
      // Note that we don't use if-constexpr here and so we must still write
114
0
      // this code in a generic form.
115
0
      return {new (RawAlloc.Allocate(sizeof(T), alignof(T)))
116
0
                  T(std::forward<Args>(As)...),
117
0
              true};
118
0
    }
119
820
120
820
    llvm::FoldingSetNodeID ID;
121
820
    profileCtor(ID, NodeKind<T>::Kind, As...);
122
820
123
820
    void *InsertPos;
124
820
    if (NodeHeader *Existing = Nodes.FindNodeOrInsertPos(ID, InsertPos))
125
592
      return {static_cast<T*>(Existing->getNode()), false};
126
228
127
228
    if (!CreateNewNodes)
128
1
      return {nullptr, true};
129
227
130
227
    static_assert(alignof(T) <= alignof(NodeHeader),
131
227
                  "underaligned node header for specific node kind");
132
227
    void *Storage =
133
227
        RawAlloc.Allocate(sizeof(NodeHeader) + sizeof(T), alignof(NodeHeader));
134
227
    NodeHeader *New = new (Storage) NodeHeader;
135
227
    T *Result = new (New->getNode()) T(std::forward<Args>(As)...);
136
227
    Nodes.InsertNode(New, InsertPos);
137
227
    return {Result, true};
138
227
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::PixelVectorType, llvm::itanium_demangle::StringView&>(bool, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::VectorType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::VectorType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::VectorType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::ParameterPackExpansion, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&)
ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::ArrayType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeOrString&>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeOrString&&&)
Line
Count
Source
108
17
  std::pair<Node *, bool> getOrCreateNode(bool CreateNewNodes, Args &&... As) {
109
17
    // FIXME: Don't canonicalize forward template references for now, because
110
17
    // they contain state (the resolved template node) that's not known at their
111
17
    // point of creation.
112
17
    if (std::is_same<T, ForwardTemplateReference>::value) {
113
0
      // Note that we don't use if-constexpr here and so we must still write
114
0
      // this code in a generic form.
115
0
      return {new (RawAlloc.Allocate(sizeof(T), alignof(T)))
116
0
                  T(std::forward<Args>(As)...),
117
0
              true};
118
0
    }
119
17
120
17
    llvm::FoldingSetNodeID ID;
121
17
    profileCtor(ID, NodeKind<T>::Kind, As...);
122
17
123
17
    void *InsertPos;
124
17
    if (NodeHeader *Existing = Nodes.FindNodeOrInsertPos(ID, InsertPos))
125
9
      return {static_cast<T*>(Existing->getNode()), false};
126
8
127
8
    if (!CreateNewNodes)
128
0
      return {nullptr, true};
129
8
130
8
    static_assert(alignof(T) <= alignof(NodeHeader),
131
8
                  "underaligned node header for specific node kind");
132
8
    void *Storage =
133
8
        RawAlloc.Allocate(sizeof(NodeHeader) + sizeof(T), alignof(NodeHeader));
134
8
    NodeHeader *New = new (Storage) NodeHeader;
135
8
    T *Result = new (New->getNode()) T(std::forward<Args>(As)...);
136
8
    Nodes.InsertNode(New, InsertPos);
137
8
    return {Result, true};
138
8
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::PointerToMemberType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::ElaboratedTypeSpefType, llvm::itanium_demangle::StringView&, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::StringView&&&, llvm::itanium_demangle::Node*&&&)
ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::ForwardTemplateReference, unsigned long&>(bool, unsigned long&&&)
Line
Count
Source
108
7
  std::pair<Node *, bool> getOrCreateNode(bool CreateNewNodes, Args &&... As) {
109
7
    // FIXME: Don't canonicalize forward template references for now, because
110
7
    // they contain state (the resolved template node) that's not known at their
111
7
    // point of creation.
112
7
    if (std::is_same<T, ForwardTemplateReference>::value) {
113
7
      // Note that we don't use if-constexpr here and so we must still write
114
7
      // this code in a generic form.
115
7
      return {new (RawAlloc.Allocate(sizeof(T), alignof(T)))
116
7
                  T(std::forward<Args>(As)...),
117
7
              true};
118
7
    }
119
0
120
0
    llvm::FoldingSetNodeID ID;
121
0
    profileCtor(ID, NodeKind<T>::Kind, As...);
122
0
123
0
    void *InsertPos;
124
0
    if (NodeHeader *Existing = Nodes.FindNodeOrInsertPos(ID, InsertPos))
125
0
      return {static_cast<T*>(Existing->getNode()), false};
126
0
127
0
    if (!CreateNewNodes)
128
0
      return {nullptr, true};
129
0
130
0
    static_assert(alignof(T) <= alignof(NodeHeader),
131
0
                  "underaligned node header for specific node kind");
132
0
    void *Storage =
133
0
        RawAlloc.Allocate(sizeof(NodeHeader) + sizeof(T), alignof(NodeHeader));
134
0
    NodeHeader *New = new (Storage) NodeHeader;
135
0
    T *Result = new (New->getNode()) T(std::forward<Args>(As)...);
136
0
    Nodes.InsertNode(New, InsertPos);
137
0
    return {Result, true};
138
0
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::ParameterPack, llvm::itanium_demangle::NodeArray>(bool, llvm::itanium_demangle::NodeArray&&)
ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::TemplateArgs, llvm::itanium_demangle::NodeArray>(bool, llvm::itanium_demangle::NodeArray&&)
Line
Count
Source
108
211
  std::pair<Node *, bool> getOrCreateNode(bool CreateNewNodes, Args &&... As) {
109
211
    // FIXME: Don't canonicalize forward template references for now, because
110
211
    // they contain state (the resolved template node) that's not known at their
111
211
    // point of creation.
112
211
    if (std::is_same<T, ForwardTemplateReference>::value) {
113
0
      // Note that we don't use if-constexpr here and so we must still write
114
0
      // this code in a generic form.
115
0
      return {new (RawAlloc.Allocate(sizeof(T), alignof(T)))
116
0
                  T(std::forward<Args>(As)...),
117
0
              true};
118
0
    }
119
211
120
211
    llvm::FoldingSetNodeID ID;
121
211
    profileCtor(ID, NodeKind<T>::Kind, As...);
122
211
123
211
    void *InsertPos;
124
211
    if (NodeHeader *Existing = Nodes.FindNodeOrInsertPos(ID, InsertPos))
125
159
      return {static_cast<T*>(Existing->getNode()), false};
126
52
127
52
    if (!CreateNewNodes)
128
0
      return {nullptr, true};
129
52
130
52
    static_assert(alignof(T) <= alignof(NodeHeader),
131
52
                  "underaligned node header for specific node kind");
132
52
    void *Storage =
133
52
        RawAlloc.Allocate(sizeof(NodeHeader) + sizeof(T), alignof(NodeHeader));
134
52
    NodeHeader *New = new (Storage) NodeHeader;
135
52
    T *Result = new (New->getNode()) T(std::forward<Args>(As)...);
136
52
    Nodes.InsertNode(New, InsertPos);
137
52
    return {Result, true};
138
52
  }
ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NameWithTemplateArgs, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Line
Count
Source
108
211
  std::pair<Node *, bool> getOrCreateNode(bool CreateNewNodes, Args &&... As) {
109
211
    // FIXME: Don't canonicalize forward template references for now, because
110
211
    // they contain state (the resolved template node) that's not known at their
111
211
    // point of creation.
112
211
    if (std::is_same<T, ForwardTemplateReference>::value) {
113
0
      // Note that we don't use if-constexpr here and so we must still write
114
0
      // this code in a generic form.
115
0
      return {new (RawAlloc.Allocate(sizeof(T), alignof(T)))
116
0
                  T(std::forward<Args>(As)...),
117
0
              true};
118
0
    }
119
211
120
211
    llvm::FoldingSetNodeID ID;
121
211
    profileCtor(ID, NodeKind<T>::Kind, As...);
122
211
123
211
    void *InsertPos;
124
211
    if (NodeHeader *Existing = Nodes.FindNodeOrInsertPos(ID, InsertPos))
125
135
      return {static_cast<T*>(Existing->getNode()), false};
126
76
127
76
    if (!CreateNewNodes)
128
0
      return {nullptr, true};
129
76
130
76
    static_assert(alignof(T) <= alignof(NodeHeader),
131
76
                  "underaligned node header for specific node kind");
132
76
    void *Storage =
133
76
        RawAlloc.Allocate(sizeof(NodeHeader) + sizeof(T), alignof(NodeHeader));
134
76
    NodeHeader *New = new (Storage) NodeHeader;
135
76
    T *Result = new (New->getNode()) T(std::forward<Args>(As)...);
136
76
    Nodes.InsertNode(New, InsertPos);
137
76
    return {Result, true};
138
76
  }
ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::PointerType, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&)
Line
Count
Source
108
10
  std::pair<Node *, bool> getOrCreateNode(bool CreateNewNodes, Args &&... As) {
109
10
    // FIXME: Don't canonicalize forward template references for now, because
110
10
    // they contain state (the resolved template node) that's not known at their
111
10
    // point of creation.
112
10
    if (std::is_same<T, ForwardTemplateReference>::value) {
113
0
      // Note that we don't use if-constexpr here and so we must still write
114
0
      // this code in a generic form.
115
0
      return {new (RawAlloc.Allocate(sizeof(T), alignof(T)))
116
0
                  T(std::forward<Args>(As)...),
117
0
              true};
118
0
    }
119
10
120
10
    llvm::FoldingSetNodeID ID;
121
10
    profileCtor(ID, NodeKind<T>::Kind, As...);
122
10
123
10
    void *InsertPos;
124
10
    if (NodeHeader *Existing = Nodes.FindNodeOrInsertPos(ID, InsertPos))
125
6
      return {static_cast<T*>(Existing->getNode()), false};
126
4
127
4
    if (!CreateNewNodes)
128
0
      return {nullptr, true};
129
4
130
4
    static_assert(alignof(T) <= alignof(NodeHeader),
131
4
                  "underaligned node header for specific node kind");
132
4
    void *Storage =
133
4
        RawAlloc.Allocate(sizeof(NodeHeader) + sizeof(T), alignof(NodeHeader));
134
4
    NodeHeader *New = new (Storage) NodeHeader;
135
4
    T *Result = new (New->getNode()) T(std::forward<Args>(As)...);
136
4
    Nodes.InsertNode(New, InsertPos);
137
4
    return {Result, true};
138
4
  }
ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::ReferenceType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::ReferenceKind>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::ReferenceKind&&)
Line
Count
Source
108
27
  std::pair<Node *, bool> getOrCreateNode(bool CreateNewNodes, Args &&... As) {
109
27
    // FIXME: Don't canonicalize forward template references for now, because
110
27
    // they contain state (the resolved template node) that's not known at their
111
27
    // point of creation.
112
27
    if (std::is_same<T, ForwardTemplateReference>::value) {
113
0
      // Note that we don't use if-constexpr here and so we must still write
114
0
      // this code in a generic form.
115
0
      return {new (RawAlloc.Allocate(sizeof(T), alignof(T)))
116
0
                  T(std::forward<Args>(As)...),
117
0
              true};
118
0
    }
119
27
120
27
    llvm::FoldingSetNodeID ID;
121
27
    profileCtor(ID, NodeKind<T>::Kind, As...);
122
27
123
27
    void *InsertPos;
124
27
    if (NodeHeader *Existing = Nodes.FindNodeOrInsertPos(ID, InsertPos))
125
15
      return {static_cast<T*>(Existing->getNode()), false};
126
12
127
12
    if (!CreateNewNodes)
128
0
      return {nullptr, true};
129
12
130
12
    static_assert(alignof(T) <= alignof(NodeHeader),
131
12
                  "underaligned node header for specific node kind");
132
12
    void *Storage =
133
12
        RawAlloc.Allocate(sizeof(NodeHeader) + sizeof(T), alignof(NodeHeader));
134
12
    NodeHeader *New = new (Storage) NodeHeader;
135
12
    T *Result = new (New->getNode()) T(std::forward<Args>(As)...);
136
12
    Nodes.InsertNode(New, InsertPos);
137
12
    return {Result, true};
138
12
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::PostfixQualifiedType, llvm::itanium_demangle::Node*&, char const (&) [9]>(bool, llvm::itanium_demangle::Node*&&&, char const (&&&) [9])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::PostfixQualifiedType, llvm::itanium_demangle::Node*&, char const (&) [11]>(bool, llvm::itanium_demangle::Node*&&&, char const (&&&) [11])
ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::SpecialSubstitution, llvm::itanium_demangle::SpecialSubKind>(bool, llvm::itanium_demangle::SpecialSubKind&&)
Line
Count
Source
108
39
  std::pair<Node *, bool> getOrCreateNode(bool CreateNewNodes, Args &&... As) {
109
39
    // FIXME: Don't canonicalize forward template references for now, because
110
39
    // they contain state (the resolved template node) that's not known at their
111
39
    // point of creation.
112
39
    if (std::is_same<T, ForwardTemplateReference>::value) {
113
0
      // Note that we don't use if-constexpr here and so we must still write
114
0
      // this code in a generic form.
115
0
      return {new (RawAlloc.Allocate(sizeof(T), alignof(T)))
116
0
                  T(std::forward<Args>(As)...),
117
0
              true};
118
0
    }
119
39
120
39
    llvm::FoldingSetNodeID ID;
121
39
    profileCtor(ID, NodeKind<T>::Kind, As...);
122
39
123
39
    void *InsertPos;
124
39
    if (NodeHeader *Existing = Nodes.FindNodeOrInsertPos(ID, InsertPos))
125
29
      return {static_cast<T*>(Existing->getNode()), false};
126
10
127
10
    if (!CreateNewNodes)
128
0
      return {nullptr, true};
129
10
130
10
    static_assert(alignof(T) <= alignof(NodeHeader),
131
10
                  "underaligned node header for specific node kind");
132
10
    void *Storage =
133
10
        RawAlloc.Allocate(sizeof(NodeHeader) + sizeof(T), alignof(NodeHeader));
134
10
    NodeHeader *New = new (Storage) NodeHeader;
135
10
    T *Result = new (New->getNode()) T(std::forward<Args>(As)...);
136
10
    Nodes.InsertNode(New, InsertPos);
137
10
    return {Result, true};
138
10
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::AbiTagAttr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&)
ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::NestedName, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Line
Count
Source
108
369
  std::pair<Node *, bool> getOrCreateNode(bool CreateNewNodes, Args &&... As) {
109
369
    // FIXME: Don't canonicalize forward template references for now, because
110
369
    // they contain state (the resolved template node) that's not known at their
111
369
    // point of creation.
112
369
    if (std::is_same<T, ForwardTemplateReference>::value) {
113
0
      // Note that we don't use if-constexpr here and so we must still write
114
0
      // this code in a generic form.
115
0
      return {new (RawAlloc.Allocate(sizeof(T), alignof(T)))
116
0
                  T(std::forward<Args>(As)...),
117
0
              true};
118
0
    }
119
369
120
369
    llvm::FoldingSetNodeID ID;
121
369
    profileCtor(ID, NodeKind<T>::Kind, As...);
122
369
123
369
    void *InsertPos;
124
369
    if (NodeHeader *Existing = Nodes.FindNodeOrInsertPos(ID, InsertPos))
125
222
      return {static_cast<T*>(Existing->getNode()), false};
126
147
127
147
    if (!CreateNewNodes)
128
2
      return {nullptr, true};
129
145
130
145
    static_assert(alignof(T) <= alignof(NodeHeader),
131
145
                  "underaligned node header for specific node kind");
132
145
    void *Storage =
133
145
        RawAlloc.Allocate(sizeof(NodeHeader) + sizeof(T), alignof(NodeHeader));
134
145
    NodeHeader *New = new (Storage) NodeHeader;
135
145
    T *Result = new (New->getNode()) T(std::forward<Args>(As)...);
136
145
    Nodes.InsertNode(New, InsertPos);
137
145
    return {Result, true};
138
145
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::ExpandedSpecialSubstitution, llvm::itanium_demangle::SpecialSubKind&>(bool, llvm::itanium_demangle::SpecialSubKind&&&)
ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::CtorDtorName, llvm::itanium_demangle::Node*&, bool, int&>(bool, llvm::itanium_demangle::Node*&&&, bool&&, int&&&)
Line
Count
Source
108
12
  std::pair<Node *, bool> getOrCreateNode(bool CreateNewNodes, Args &&... As) {
109
12
    // FIXME: Don't canonicalize forward template references for now, because
110
12
    // they contain state (the resolved template node) that's not known at their
111
12
    // point of creation.
112
12
    if (std::is_same<T, ForwardTemplateReference>::value) {
113
0
      // Note that we don't use if-constexpr here and so we must still write
114
0
      // this code in a generic form.
115
0
      return {new (RawAlloc.Allocate(sizeof(T), alignof(T)))
116
0
                  T(std::forward<Args>(As)...),
117
0
              true};
118
0
    }
119
12
120
12
    llvm::FoldingSetNodeID ID;
121
12
    profileCtor(ID, NodeKind<T>::Kind, As...);
122
12
123
12
    void *InsertPos;
124
12
    if (NodeHeader *Existing = Nodes.FindNodeOrInsertPos(ID, InsertPos))
125
4
      return {static_cast<T*>(Existing->getNode()), false};
126
8
127
8
    if (!CreateNewNodes)
128
0
      return {nullptr, true};
129
8
130
8
    static_assert(alignof(T) <= alignof(NodeHeader),
131
8
                  "underaligned node header for specific node kind");
132
8
    void *Storage =
133
8
        RawAlloc.Allocate(sizeof(NodeHeader) + sizeof(T), alignof(NodeHeader));
134
8
    NodeHeader *New = new (Storage) NodeHeader;
135
8
    T *Result = new (New->getNode()) T(std::forward<Args>(As)...);
136
8
    Nodes.InsertNode(New, InsertPos);
137
8
    return {Result, true};
138
8
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::UnnamedTypeName, llvm::itanium_demangle::StringView&>(bool, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::ClosureTypeName, llvm::itanium_demangle::NodeArray&, llvm::itanium_demangle::StringView&>(bool, llvm::itanium_demangle::NodeArray&&&, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::StructuredBindingName, llvm::itanium_demangle::NodeArray>(bool, llvm::itanium_demangle::NodeArray&&)
ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::LocalName, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Line
Count
Source
108
5
  std::pair<Node *, bool> getOrCreateNode(bool CreateNewNodes, Args &&... As) {
109
5
    // FIXME: Don't canonicalize forward template references for now, because
110
5
    // they contain state (the resolved template node) that's not known at their
111
5
    // point of creation.
112
5
    if (std::is_same<T, ForwardTemplateReference>::value) {
113
0
      // Note that we don't use if-constexpr here and so we must still write
114
0
      // this code in a generic form.
115
0
      return {new (RawAlloc.Allocate(sizeof(T), alignof(T)))
116
0
                  T(std::forward<Args>(As)...),
117
0
              true};
118
0
    }
119
5
120
5
    llvm::FoldingSetNodeID ID;
121
5
    profileCtor(ID, NodeKind<T>::Kind, As...);
122
5
123
5
    void *InsertPos;
124
5
    if (NodeHeader *Existing = Nodes.FindNodeOrInsertPos(ID, InsertPos))
125
3
      return {static_cast<T*>(Existing->getNode()), false};
126
2
127
2
    if (!CreateNewNodes)
128
0
      return {nullptr, true};
129
2
130
2
    static_assert(alignof(T) <= alignof(NodeHeader),
131
2
                  "underaligned node header for specific node kind");
132
2
    void *Storage =
133
2
        RawAlloc.Allocate(sizeof(NodeHeader) + sizeof(T), alignof(NodeHeader));
134
2
    NodeHeader *New = new (Storage) NodeHeader;
135
2
    T *Result = new (New->getNode()) T(std::forward<Args>(As)...);
136
2
    Nodes.InsertNode(New, InsertPos);
137
2
    return {Result, true};
138
2
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::SpecialName, char const (&) [12], llvm::itanium_demangle::Node*&>(bool, char const (&&&) [12], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::SpecialName, char const (&) [9], llvm::itanium_demangle::Node*&>(bool, char const (&&&) [9], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::SpecialName, char const (&) [14], llvm::itanium_demangle::Node*&>(bool, char const (&&&) [14], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::SpecialName, char const (&) [19], llvm::itanium_demangle::Node*&>(bool, char const (&&&) [19], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::SpecialName, char const (&) [27], llvm::itanium_demangle::Node*&>(bool, char const (&&&) [27], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::CtorVtableSpecialName, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::SpecialName, char const (&) [34], llvm::itanium_demangle::Node*&>(bool, char const (&&&) [34], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::SpecialName, char const (&) [41], llvm::itanium_demangle::Node*&>(bool, char const (&&&) [41], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::SpecialName, char const (&) [18], llvm::itanium_demangle::Node*&>(bool, char const (&&&) [18], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::SpecialName, char const (&) [22], llvm::itanium_demangle::Node*&>(bool, char const (&&&) [22], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::SpecialName, char const (&) [20], llvm::itanium_demangle::Node*&>(bool, char const (&&&) [20], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::SpecialName, char const (&) [25], llvm::itanium_demangle::Node*&>(bool, char const (&&&) [25], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::EnableIfAttr, llvm::itanium_demangle::NodeArray>(bool, llvm::itanium_demangle::NodeArray&&)
ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::FunctionEncoding, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Qualifiers&, llvm::itanium_demangle::FunctionRefQual&>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Qualifiers&&&, llvm::itanium_demangle::FunctionRefQual&&&)
Line
Count
Source
108
238
  std::pair<Node *, bool> getOrCreateNode(bool CreateNewNodes, Args &&... As) {
109
238
    // FIXME: Don't canonicalize forward template references for now, because
110
238
    // they contain state (the resolved template node) that's not known at their
111
238
    // point of creation.
112
238
    if (std::is_same<T, ForwardTemplateReference>::value) {
113
0
      // Note that we don't use if-constexpr here and so we must still write
114
0
      // this code in a generic form.
115
0
      return {new (RawAlloc.Allocate(sizeof(T), alignof(T)))
116
0
                  T(std::forward<Args>(As)...),
117
0
              true};
118
0
    }
119
238
120
238
    llvm::FoldingSetNodeID ID;
121
238
    profileCtor(ID, NodeKind<T>::Kind, As...);
122
238
123
238
    void *InsertPos;
124
238
    if (NodeHeader *Existing = Nodes.FindNodeOrInsertPos(ID, InsertPos))
125
138
      return {static_cast<T*>(Existing->getNode()), false};
126
100
127
100
    if (!CreateNewNodes)
128
12
      return {nullptr, true};
129
88
130
88
    static_assert(alignof(T) <= alignof(NodeHeader),
131
88
                  "underaligned node header for specific node kind");
132
88
    void *Storage =
133
88
        RawAlloc.Allocate(sizeof(NodeHeader) + sizeof(T), alignof(NodeHeader));
134
88
    NodeHeader *New = new (Storage) NodeHeader;
135
88
    T *Result = new (New->getNode()) T(std::forward<Args>(As)...);
136
88
    Nodes.InsertNode(New, InsertPos);
137
88
    return {Result, true};
138
88
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:std::__1::pair<llvm::itanium_demangle::Node*, bool> (anonymous namespace)::FoldingNodeAllocator::getOrCreateNode<llvm::itanium_demangle::DotSuffix, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView>(bool, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&)
139
140
  template<typename T, typename... Args>
141
  Node *makeNode(Args &&...As) {
142
    return getOrCreateNode<T>(true, std::forward<Args>(As)...).first;
143
  }
144
145
395
  void *allocateNodeArray(size_t sz) {
146
395
    return RawAlloc.Allocate(sizeof(Node *) * sz, alignof(Node *));
147
395
  }
148
};
149
150
class CanonicalizerAllocator : public FoldingNodeAllocator {
151
  Node *MostRecentlyCreated = nullptr;
152
  Node *TrackedNode = nullptr;
153
  bool TrackedNodeIsUsed = false;
154
  bool CreateNewNodes = true;
155
  llvm::SmallDenseMap<Node*, Node*, 32> Remappings;
156
157
2.32k
  template<typename T, typename ...Args> Node *makeNodeSimple(Args &&...As) {
158
2.32k
    std::pair<Node *, bool> Result =
159
2.32k
        getOrCreateNode<T>(CreateNewNodes, std::forward<Args>(As)...);
160
2.32k
    if (Result.second) {
161
707
      // Node is new. Make a note of that.
162
707
      MostRecentlyCreated = Result.first;
163
1.62k
    } else if (Result.first) {
164
1.62k
      // Node is pre-existing; check if it's in our remapping table.
165
1.62k
      if (auto *N = Remappings.lookup(Result.first)) {
166
209
        Result.first = N;
167
209
        assert(Remappings.find(Result.first) == Remappings.end() &&
168
209
               "should never need multiple remap steps");
169
209
      }
170
1.62k
      if (Result.first == TrackedNode)
171
69
        TrackedNodeIsUsed = true;
172
1.62k
    }
173
2.32k
    return Result.first;
174
2.32k
  }
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NameType, char const (&) [4]>(char const (&&&) [4])
Line
Count
Source
157
202
  template<typename T, typename ...Args> Node *makeNodeSimple(Args &&...As) {
158
202
    std::pair<Node *, bool> Result =
159
202
        getOrCreateNode<T>(CreateNewNodes, std::forward<Args>(As)...);
160
202
    if (Result.second) {
161
24
      // Node is new. Make a note of that.
162
24
      MostRecentlyCreated = Result.first;
163
178
    } else if (Result.first) {
164
178
      // Node is pre-existing; check if it's in our remapping table.
165
178
      if (auto *N = Remappings.lookup(Result.first)) {
166
18
        Result.first = N;
167
18
        assert(Remappings.find(Result.first) == Remappings.end() &&
168
18
               "should never need multiple remap steps");
169
18
      }
170
178
      if (Result.first == TrackedNode)
171
6
        TrackedNodeIsUsed = true;
172
178
    }
173
202
    return Result.first;
174
202
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::IntegerLiteral, llvm::itanium_demangle::StringView&, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::BoolExpr, int>(int&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::FloatLiteralImpl<float>, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::FloatLiteralImpl<double>, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::FloatLiteralImpl<long double>, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::IntegerCastExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::FunctionParam, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::FoldExpr, bool&, llvm::itanium_demangle::StringView&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(bool&&&, llvm::itanium_demangle::StringView&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::BinaryExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::PrefixExpr, llvm::itanium_demangle::StringView&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::StringView&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::EnclosingExpr, char const (&) [10], llvm::itanium_demangle::Node*&, char const (&) [2]>(char const (&&&) [10], llvm::itanium_demangle::Node*&&&, char const (&&&) [2])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::CastExpr, char const (&) [11], llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(char const (&&&) [11], llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::CallExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::ConversionExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::ConversionExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::DeleteExpr, llvm::itanium_demangle::Node*&, bool&, bool>(llvm::itanium_demangle::Node*&&&, bool&&&, bool&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::CastExpr, char const (&) [13], llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(char const (&&&) [13], llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NameType, char const (&) [22]>(char const (&&&) [22])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::QualifiedName, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::DtorName, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::ConversionOperatorType, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Line
Count
Source
157
7
  template<typename T, typename ...Args> Node *makeNodeSimple(Args &&...As) {
158
7
    std::pair<Node *, bool> Result =
159
7
        getOrCreateNode<T>(CreateNewNodes, std::forward<Args>(As)...);
160
7
    if (Result.second) {
161
7
      // Node is new. Make a note of that.
162
7
      MostRecentlyCreated = Result.first;
163
7
    } else 
if (0
Result.first0
) {
164
0
      // Node is pre-existing; check if it's in our remapping table.
165
0
      if (auto *N = Remappings.lookup(Result.first)) {
166
0
        Result.first = N;
167
0
        assert(Remappings.find(Result.first) == Remappings.end() &&
168
0
               "should never need multiple remap steps");
169
0
      }
170
0
      if (Result.first == TrackedNode)
171
0
        TrackedNodeIsUsed = true;
172
0
    }
173
7
    return Result.first;
174
7
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NameType, char const (&) [16]>(char const (&&&) [16])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::LiteralOperator, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::GlobalQualifiedName, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::MemberExpr, llvm::itanium_demangle::Node*&, char const (&) [3], llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, char const (&&&) [3], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::MemberExpr, llvm::itanium_demangle::Node*&, char const (&) [2], llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, char const (&&&) [2], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::ArraySubscriptExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::BracedExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&, bool>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&, bool&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::BracedRangeExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::InitListExpr, std::nullptr_t, llvm::itanium_demangle::NodeArray>(std::nullptr_t&&, llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::PostfixExpr, llvm::itanium_demangle::Node*&, char const (&) [3]>(llvm::itanium_demangle::Node*&&&, char const (&&&) [3])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NewExpr, llvm::itanium_demangle::NodeArray&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray&, bool&, bool&>(llvm::itanium_demangle::NodeArray&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&&, bool&&&, bool&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NewExpr, llvm::itanium_demangle::NodeArray&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray, bool&, bool&>(llvm::itanium_demangle::NodeArray&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&, bool&&&, bool&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::EnclosingExpr, char const (&) [11], llvm::itanium_demangle::Node*&, char const (&) [2]>(char const (&&&) [11], llvm::itanium_demangle::Node*&&&, char const (&&&) [2])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::ConditionalExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::CastExpr, char const (&) [17], llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(char const (&&&) [17], llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::CastExpr, char const (&) [12], llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(char const (&&&) [12], llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::EnclosingExpr, char const (&) [9], llvm::itanium_demangle::Node*&, char const (&) [2]>(char const (&&&) [9], llvm::itanium_demangle::Node*&&&, char const (&&&) [2])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::SizeofParamPackExpr, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::EnclosingExpr, char const (&) [12], llvm::itanium_demangle::Node*&, char const (&) [2]>(char const (&&&) [12], llvm::itanium_demangle::Node*&&&, char const (&&&) [2])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::TemplateArgumentPack, llvm::itanium_demangle::NodeArray&>(llvm::itanium_demangle::NodeArray&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NodeArrayNode, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::InitListExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::ThrowExpr, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::UUIDOfExpr, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NoexceptSpec, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::DynamicExceptionSpec, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::FunctionType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray&, llvm::itanium_demangle::Qualifiers&, llvm::itanium_demangle::FunctionRefQual&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&&, llvm::itanium_demangle::Qualifiers&&&, llvm::itanium_demangle::FunctionRefQual&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::ObjCProtoName, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::VendorExtQualType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::QualType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Qualifiers&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Qualifiers&&&)
Line
Count
Source
157
4
  template<typename T, typename ...Args> Node *makeNodeSimple(Args &&...As) {
158
4
    std::pair<Node *, bool> Result =
159
4
        getOrCreateNode<T>(CreateNewNodes, std::forward<Args>(As)...);
160
4
    if (Result.second) {
161
2
      // Node is new. Make a note of that.
162
2
      MostRecentlyCreated = Result.first;
163
2
    } else if (Result.first) {
164
2
      // Node is pre-existing; check if it's in our remapping table.
165
2
      if (auto *N = Remappings.lookup(Result.first)) {
166
0
        Result.first = N;
167
0
        assert(Remappings.find(Result.first) == Remappings.end() &&
168
0
               "should never need multiple remap steps");
169
0
      }
170
2
      if (Result.first == TrackedNode)
171
0
        TrackedNodeIsUsed = true;
172
2
    }
173
4
    return Result.first;
174
4
  }
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NameType, char const (&) [5]>(char const (&&&) [5])
Line
Count
Source
157
122
  template<typename T, typename ...Args> Node *makeNodeSimple(Args &&...As) {
158
122
    std::pair<Node *, bool> Result =
159
122
        getOrCreateNode<T>(CreateNewNodes, std::forward<Args>(As)...);
160
122
    if (Result.second) {
161
15
      // Node is new. Make a note of that.
162
15
      MostRecentlyCreated = Result.first;
163
107
    } else if (Result.first) {
164
107
      // Node is pre-existing; check if it's in our remapping table.
165
107
      if (auto *N = Remappings.lookup(Result.first)) {
166
0
        Result.first = N;
167
0
        assert(Remappings.find(Result.first) == Remappings.end() &&
168
0
               "should never need multiple remap steps");
169
0
      }
170
107
      if (Result.first == TrackedNode)
171
0
        TrackedNodeIsUsed = true;
172
107
    }
173
122
    return Result.first;
174
122
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NameType, char const (&) [8]>(char const (&&&) [8])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NameType, char const (&) [12]>(char const (&&&) [12])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NameType, char const (&) [14]>(char const (&&&) [14])
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NameType, char const (&) [6]>(char const (&&&) [6])
Line
Count
Source
157
26
  template<typename T, typename ...Args> Node *makeNodeSimple(Args &&...As) {
158
26
    std::pair<Node *, bool> Result =
159
26
        getOrCreateNode<T>(CreateNewNodes, std::forward<Args>(As)...);
160
26
    if (Result.second) {
161
5
      // Node is new. Make a note of that.
162
5
      MostRecentlyCreated = Result.first;
163
21
    } else if (Result.first) {
164
21
      // Node is pre-existing; check if it's in our remapping table.
165
21
      if (auto *N = Remappings.lookup(Result.first)) {
166
0
        Result.first = N;
167
0
        assert(Remappings.find(Result.first) == Remappings.end() &&
168
0
               "should never need multiple remap steps");
169
0
      }
170
21
      if (Result.first == TrackedNode)
171
0
        TrackedNodeIsUsed = true;
172
21
    }
173
26
    return Result.first;
174
26
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NameType, char const (&) [15]>(char const (&&&) [15])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NameType, char const (&) [13]>(char const (&&&) [13])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NameType, char const (&) [10]>(char const (&&&) [10])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NameType, char const (&) [19]>(char const (&&&) [19])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NameType, char const (&) [9]>(char const (&&&) [9])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NameType, char const (&) [18]>(char const (&&&) [18])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NameType, char const (&) [7]>(char const (&&&) [7])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NameType, char const (&) [11]>(char const (&&&) [11])
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NameType, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&)
Line
Count
Source
157
820
  template<typename T, typename ...Args> Node *makeNodeSimple(Args &&...As) {
158
820
    std::pair<Node *, bool> Result =
159
820
        getOrCreateNode<T>(CreateNewNodes, std::forward<Args>(As)...);
160
820
    if (Result.second) {
161
228
      // Node is new. Make a note of that.
162
228
      MostRecentlyCreated = Result.first;
163
592
    } else if (Result.first) {
164
592
      // Node is pre-existing; check if it's in our remapping table.
165
592
      if (auto *N = Remappings.lookup(Result.first)) {
166
44
        Result.first = N;
167
44
        assert(Remappings.find(Result.first) == Remappings.end() &&
168
44
               "should never need multiple remap steps");
169
44
      }
170
592
      if (Result.first == TrackedNode)
171
45
        TrackedNodeIsUsed = true;
172
592
    }
173
820
    return Result.first;
174
820
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::PixelVectorType, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::VectorType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::VectorType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::VectorType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::ParameterPackExpansion, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::ArrayType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeOrString&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeOrString&&&)
Line
Count
Source
157
17
  template<typename T, typename ...Args> Node *makeNodeSimple(Args &&...As) {
158
17
    std::pair<Node *, bool> Result =
159
17
        getOrCreateNode<T>(CreateNewNodes, std::forward<Args>(As)...);
160
17
    if (Result.second) {
161
8
      // Node is new. Make a note of that.
162
8
      MostRecentlyCreated = Result.first;
163
9
    } else if (Result.first) {
164
9
      // Node is pre-existing; check if it's in our remapping table.
165
9
      if (auto *N = Remappings.lookup(Result.first)) {
166
5
        Result.first = N;
167
5
        assert(Remappings.find(Result.first) == Remappings.end() &&
168
5
               "should never need multiple remap steps");
169
5
      }
170
9
      if (Result.first == TrackedNode)
171
0
        TrackedNodeIsUsed = true;
172
9
    }
173
17
    return Result.first;
174
17
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::PointerToMemberType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::ElaboratedTypeSpefType, llvm::itanium_demangle::StringView&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::StringView&&&, llvm::itanium_demangle::Node*&&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::ForwardTemplateReference, unsigned long&>(unsigned long&&&)
Line
Count
Source
157
7
  template<typename T, typename ...Args> Node *makeNodeSimple(Args &&...As) {
158
7
    std::pair<Node *, bool> Result =
159
7
        getOrCreateNode<T>(CreateNewNodes, std::forward<Args>(As)...);
160
7
    if (Result.second) {
161
7
      // Node is new. Make a note of that.
162
7
      MostRecentlyCreated = Result.first;
163
7
    } else 
if (0
Result.first0
) {
164
0
      // Node is pre-existing; check if it's in our remapping table.
165
0
      if (auto *N = Remappings.lookup(Result.first)) {
166
0
        Result.first = N;
167
0
        assert(Remappings.find(Result.first) == Remappings.end() &&
168
0
               "should never need multiple remap steps");
169
0
      }
170
0
      if (Result.first == TrackedNode)
171
0
        TrackedNodeIsUsed = true;
172
0
    }
173
7
    return Result.first;
174
7
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::ParameterPack, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::TemplateArgs, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray&&)
Line
Count
Source
157
211
  template<typename T, typename ...Args> Node *makeNodeSimple(Args &&...As) {
158
211
    std::pair<Node *, bool> Result =
159
211
        getOrCreateNode<T>(CreateNewNodes, std::forward<Args>(As)...);
160
211
    if (Result.second) {
161
52
      // Node is new. Make a note of that.
162
52
      MostRecentlyCreated = Result.first;
163
159
    } else if (Result.first) {
164
159
      // Node is pre-existing; check if it's in our remapping table.
165
159
      if (auto *N = Remappings.lookup(Result.first)) {
166
0
        Result.first = N;
167
0
        assert(Remappings.find(Result.first) == Remappings.end() &&
168
0
               "should never need multiple remap steps");
169
0
      }
170
159
      if (Result.first == TrackedNode)
171
0
        TrackedNodeIsUsed = true;
172
159
    }
173
211
    return Result.first;
174
211
  }
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NameWithTemplateArgs, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Line
Count
Source
157
211
  template<typename T, typename ...Args> Node *makeNodeSimple(Args &&...As) {
158
211
    std::pair<Node *, bool> Result =
159
211
        getOrCreateNode<T>(CreateNewNodes, std::forward<Args>(As)...);
160
211
    if (Result.second) {
161
76
      // Node is new. Make a note of that.
162
76
      MostRecentlyCreated = Result.first;
163
135
    } else if (Result.first) {
164
135
      // Node is pre-existing; check if it's in our remapping table.
165
135
      if (auto *N = Remappings.lookup(Result.first)) {
166
41
        Result.first = N;
167
41
        assert(Remappings.find(Result.first) == Remappings.end() &&
168
41
               "should never need multiple remap steps");
169
41
      }
170
135
      if (Result.first == TrackedNode)
171
8
        TrackedNodeIsUsed = true;
172
135
    }
173
211
    return Result.first;
174
211
  }
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::PointerType, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Line
Count
Source
157
10
  template<typename T, typename ...Args> Node *makeNodeSimple(Args &&...As) {
158
10
    std::pair<Node *, bool> Result =
159
10
        getOrCreateNode<T>(CreateNewNodes, std::forward<Args>(As)...);
160
10
    if (Result.second) {
161
4
      // Node is new. Make a note of that.
162
4
      MostRecentlyCreated = Result.first;
163
6
    } else if (Result.first) {
164
6
      // Node is pre-existing; check if it's in our remapping table.
165
6
      if (auto *N = Remappings.lookup(Result.first)) {
166
0
        Result.first = N;
167
0
        assert(Remappings.find(Result.first) == Remappings.end() &&
168
0
               "should never need multiple remap steps");
169
0
      }
170
6
      if (Result.first == TrackedNode)
171
0
        TrackedNodeIsUsed = true;
172
6
    }
173
10
    return Result.first;
174
10
  }
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::ReferenceType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::ReferenceKind>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::ReferenceKind&&)
Line
Count
Source
157
27
  template<typename T, typename ...Args> Node *makeNodeSimple(Args &&...As) {
158
27
    std::pair<Node *, bool> Result =
159
27
        getOrCreateNode<T>(CreateNewNodes, std::forward<Args>(As)...);
160
27
    if (Result.second) {
161
12
      // Node is new. Make a note of that.
162
12
      MostRecentlyCreated = Result.first;
163
15
    } else if (Result.first) {
164
15
      // Node is pre-existing; check if it's in our remapping table.
165
15
      if (auto *N = Remappings.lookup(Result.first)) {
166
0
        Result.first = N;
167
0
        assert(Remappings.find(Result.first) == Remappings.end() &&
168
0
               "should never need multiple remap steps");
169
0
      }
170
15
      if (Result.first == TrackedNode)
171
0
        TrackedNodeIsUsed = true;
172
15
    }
173
27
    return Result.first;
174
27
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::PostfixQualifiedType, llvm::itanium_demangle::Node*&, char const (&) [9]>(llvm::itanium_demangle::Node*&&&, char const (&&&) [9])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::PostfixQualifiedType, llvm::itanium_demangle::Node*&, char const (&) [11]>(llvm::itanium_demangle::Node*&&&, char const (&&&) [11])
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::SpecialSubstitution, llvm::itanium_demangle::SpecialSubKind>(llvm::itanium_demangle::SpecialSubKind&&)
Line
Count
Source
157
39
  template<typename T, typename ...Args> Node *makeNodeSimple(Args &&...As) {
158
39
    std::pair<Node *, bool> Result =
159
39
        getOrCreateNode<T>(CreateNewNodes, std::forward<Args>(As)...);
160
39
    if (Result.second) {
161
10
      // Node is new. Make a note of that.
162
10
      MostRecentlyCreated = Result.first;
163
29
    } else if (Result.first) {
164
29
      // Node is pre-existing; check if it's in our remapping table.
165
29
      if (auto *N = Remappings.lookup(Result.first)) {
166
8
        Result.first = N;
167
8
        assert(Remappings.find(Result.first) == Remappings.end() &&
168
8
               "should never need multiple remap steps");
169
8
      }
170
29
      if (Result.first == TrackedNode)
171
6
        TrackedNodeIsUsed = true;
172
29
    }
173
39
    return Result.first;
174
39
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::AbiTagAttr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::NestedName, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Line
Count
Source
157
369
  template<typename T, typename ...Args> Node *makeNodeSimple(Args &&...As) {
158
369
    std::pair<Node *, bool> Result =
159
369
        getOrCreateNode<T>(CreateNewNodes, std::forward<Args>(As)...);
160
369
    if (Result.second) {
161
147
      // Node is new. Make a note of that.
162
147
      MostRecentlyCreated = Result.first;
163
222
    } else if (Result.first) {
164
222
      // Node is pre-existing; check if it's in our remapping table.
165
222
      if (auto *N = Remappings.lookup(Result.first)) {
166
86
        Result.first = N;
167
86
        assert(Remappings.find(Result.first) == Remappings.end() &&
168
86
               "should never need multiple remap steps");
169
86
      }
170
222
      if (Result.first == TrackedNode)
171
4
        TrackedNodeIsUsed = true;
172
222
    }
173
369
    return Result.first;
174
369
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::ExpandedSpecialSubstitution, llvm::itanium_demangle::SpecialSubKind&>(llvm::itanium_demangle::SpecialSubKind&&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::CtorDtorName, llvm::itanium_demangle::Node*&, bool, int&>(llvm::itanium_demangle::Node*&&&, bool&&, int&&&)
Line
Count
Source
157
12
  template<typename T, typename ...Args> Node *makeNodeSimple(Args &&...As) {
158
12
    std::pair<Node *, bool> Result =
159
12
        getOrCreateNode<T>(CreateNewNodes, std::forward<Args>(As)...);
160
12
    if (Result.second) {
161
8
      // Node is new. Make a note of that.
162
8
      MostRecentlyCreated = Result.first;
163
8
    } else 
if (4
Result.first4
) {
164
4
      // Node is pre-existing; check if it's in our remapping table.
165
4
      if (auto *N = Remappings.lookup(Result.first)) {
166
0
        Result.first = N;
167
0
        assert(Remappings.find(Result.first) == Remappings.end() &&
168
0
               "should never need multiple remap steps");
169
0
      }
170
4
      if (Result.first == TrackedNode)
171
0
        TrackedNodeIsUsed = true;
172
4
    }
173
12
    return Result.first;
174
12
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::UnnamedTypeName, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::ClosureTypeName, llvm::itanium_demangle::NodeArray&, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::NodeArray&&&, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::StructuredBindingName, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::LocalName, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Line
Count
Source
157
5
  template<typename T, typename ...Args> Node *makeNodeSimple(Args &&...As) {
158
5
    std::pair<Node *, bool> Result =
159
5
        getOrCreateNode<T>(CreateNewNodes, std::forward<Args>(As)...);
160
5
    if (Result.second) {
161
2
      // Node is new. Make a note of that.
162
2
      MostRecentlyCreated = Result.first;
163
3
    } else if (Result.first) {
164
3
      // Node is pre-existing; check if it's in our remapping table.
165
3
      if (auto *N = Remappings.lookup(Result.first)) {
166
0
        Result.first = N;
167
0
        assert(Remappings.find(Result.first) == Remappings.end() &&
168
0
               "should never need multiple remap steps");
169
0
      }
170
3
      if (Result.first == TrackedNode)
171
0
        TrackedNodeIsUsed = true;
172
3
    }
173
5
    return Result.first;
174
5
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::SpecialName, char const (&) [12], llvm::itanium_demangle::Node*&>(char const (&&&) [12], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::SpecialName, char const (&) [9], llvm::itanium_demangle::Node*&>(char const (&&&) [9], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::SpecialName, char const (&) [14], llvm::itanium_demangle::Node*&>(char const (&&&) [14], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::SpecialName, char const (&) [19], llvm::itanium_demangle::Node*&>(char const (&&&) [19], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::SpecialName, char const (&) [27], llvm::itanium_demangle::Node*&>(char const (&&&) [27], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::CtorVtableSpecialName, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::SpecialName, char const (&) [34], llvm::itanium_demangle::Node*&>(char const (&&&) [34], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::SpecialName, char const (&) [41], llvm::itanium_demangle::Node*&>(char const (&&&) [41], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::SpecialName, char const (&) [18], llvm::itanium_demangle::Node*&>(char const (&&&) [18], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::SpecialName, char const (&) [22], llvm::itanium_demangle::Node*&>(char const (&&&) [22], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::SpecialName, char const (&) [20], llvm::itanium_demangle::Node*&>(char const (&&&) [20], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::SpecialName, char const (&) [25], llvm::itanium_demangle::Node*&>(char const (&&&) [25], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::EnableIfAttr, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::FunctionEncoding, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Qualifiers&, llvm::itanium_demangle::FunctionRefQual&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Qualifiers&&&, llvm::itanium_demangle::FunctionRefQual&&&)
Line
Count
Source
157
238
  template<typename T, typename ...Args> Node *makeNodeSimple(Args &&...As) {
158
238
    std::pair<Node *, bool> Result =
159
238
        getOrCreateNode<T>(CreateNewNodes, std::forward<Args>(As)...);
160
238
    if (Result.second) {
161
100
      // Node is new. Make a note of that.
162
100
      MostRecentlyCreated = Result.first;
163
138
    } else if (Result.first) {
164
138
      // Node is pre-existing; check if it's in our remapping table.
165
138
      if (auto *N = Remappings.lookup(Result.first)) {
166
7
        Result.first = N;
167
7
        assert(Remappings.find(Result.first) == Remappings.end() &&
168
7
               "should never need multiple remap steps");
169
7
      }
170
138
      if (Result.first == TrackedNode)
171
0
        TrackedNodeIsUsed = true;
172
138
    }
173
238
    return Result.first;
174
238
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNodeSimple<llvm::itanium_demangle::DotSuffix, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&)
175
176
  /// Helper to allow makeNode to be partially-specialized on T.
177
  template<typename T> struct MakeNodeImpl {
178
    CanonicalizerAllocator &Self;
179
2.32k
    template<typename ...Args> Node *make(Args &&...As) {
180
2.32k
      return Self.makeNodeSimple<T>(std::forward<Args>(As)...);
181
2.32k
    }
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NameType>::make<char const (&) [4]>(char const (&&&) [4])
Line
Count
Source
179
202
    template<typename ...Args> Node *make(Args &&...As) {
180
202
      return Self.makeNodeSimple<T>(std::forward<Args>(As)...);
181
202
    }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::IntegerLiteral>::make<llvm::itanium_demangle::StringView&, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::BoolExpr>::make<int>(int&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::FloatLiteralImpl<float> >::make<llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::FloatLiteralImpl<double> >::make<llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::FloatLiteralImpl<long double> >::make<llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::IntegerCastExpr>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::FunctionParam>::make<llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::FoldExpr>::make<bool&, llvm::itanium_demangle::StringView&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(bool&&&, llvm::itanium_demangle::StringView&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::BinaryExpr>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::PrefixExpr>::make<llvm::itanium_demangle::StringView&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::StringView&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::EnclosingExpr>::make<char const (&) [10], llvm::itanium_demangle::Node*&, char const (&) [2]>(char const (&&&) [10], llvm::itanium_demangle::Node*&&&, char const (&&&) [2])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::CastExpr>::make<char const (&) [11], llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(char const (&&&) [11], llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::CallExpr>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::ConversionExpr>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::ConversionExpr>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::DeleteExpr>::make<llvm::itanium_demangle::Node*&, bool&, bool>(llvm::itanium_demangle::Node*&&&, bool&&&, bool&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::CastExpr>::make<char const (&) [13], llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(char const (&&&) [13], llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NameType>::make<char const (&) [22]>(char const (&&&) [22])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::QualifiedName>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::DtorName>::make<llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::ConversionOperatorType>::make<llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Line
Count
Source
179
7
    template<typename ...Args> Node *make(Args &&...As) {
180
7
      return Self.makeNodeSimple<T>(std::forward<Args>(As)...);
181
7
    }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NameType>::make<char const (&) [16]>(char const (&&&) [16])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::LiteralOperator>::make<llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::GlobalQualifiedName>::make<llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::MemberExpr>::make<llvm::itanium_demangle::Node*&, char const (&) [3], llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, char const (&&&) [3], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::MemberExpr>::make<llvm::itanium_demangle::Node*&, char const (&) [2], llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, char const (&&&) [2], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::ArraySubscriptExpr>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::BracedExpr>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&, bool>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&, bool&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::BracedRangeExpr>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::InitListExpr>::make<std::nullptr_t, llvm::itanium_demangle::NodeArray>(std::nullptr_t&&, llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::PostfixExpr>::make<llvm::itanium_demangle::Node*&, char const (&) [3]>(llvm::itanium_demangle::Node*&&&, char const (&&&) [3])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NewExpr>::make<llvm::itanium_demangle::NodeArray&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray&, bool&, bool&>(llvm::itanium_demangle::NodeArray&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&&, bool&&&, bool&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NewExpr>::make<llvm::itanium_demangle::NodeArray&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray, bool&, bool&>(llvm::itanium_demangle::NodeArray&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&, bool&&&, bool&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::EnclosingExpr>::make<char const (&) [11], llvm::itanium_demangle::Node*&, char const (&) [2]>(char const (&&&) [11], llvm::itanium_demangle::Node*&&&, char const (&&&) [2])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::ConditionalExpr>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::CastExpr>::make<char const (&) [17], llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(char const (&&&) [17], llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::CastExpr>::make<char const (&) [12], llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(char const (&&&) [12], llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::EnclosingExpr>::make<char const (&) [9], llvm::itanium_demangle::Node*&, char const (&) [2]>(char const (&&&) [9], llvm::itanium_demangle::Node*&&&, char const (&&&) [2])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::SizeofParamPackExpr>::make<llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::EnclosingExpr>::make<char const (&) [12], llvm::itanium_demangle::Node*&, char const (&) [2]>(char const (&&&) [12], llvm::itanium_demangle::Node*&&&, char const (&&&) [2])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::TemplateArgumentPack>::make<llvm::itanium_demangle::NodeArray&>(llvm::itanium_demangle::NodeArray&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NodeArrayNode>::make<llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::InitListExpr>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::ThrowExpr>::make<llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::UUIDOfExpr>::make<llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NoexceptSpec>::make<llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::DynamicExceptionSpec>::make<llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::FunctionType>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray&, llvm::itanium_demangle::Qualifiers&, llvm::itanium_demangle::FunctionRefQual&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&&, llvm::itanium_demangle::Qualifiers&&&, llvm::itanium_demangle::FunctionRefQual&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::ObjCProtoName>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::VendorExtQualType>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::QualType>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Qualifiers&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Qualifiers&&&)
Line
Count
Source
179
4
    template<typename ...Args> Node *make(Args &&...As) {
180
4
      return Self.makeNodeSimple<T>(std::forward<Args>(As)...);
181
4
    }
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NameType>::make<char const (&) [5]>(char const (&&&) [5])
Line
Count
Source
179
122
    template<typename ...Args> Node *make(Args &&...As) {
180
122
      return Self.makeNodeSimple<T>(std::forward<Args>(As)...);
181
122
    }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NameType>::make<char const (&) [8]>(char const (&&&) [8])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NameType>::make<char const (&) [12]>(char const (&&&) [12])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NameType>::make<char const (&) [14]>(char const (&&&) [14])
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NameType>::make<char const (&) [6]>(char const (&&&) [6])
Line
Count
Source
179
26
    template<typename ...Args> Node *make(Args &&...As) {
180
26
      return Self.makeNodeSimple<T>(std::forward<Args>(As)...);
181
26
    }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NameType>::make<char const (&) [15]>(char const (&&&) [15])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NameType>::make<char const (&) [13]>(char const (&&&) [13])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NameType>::make<char const (&) [10]>(char const (&&&) [10])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NameType>::make<char const (&) [19]>(char const (&&&) [19])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NameType>::make<char const (&) [9]>(char const (&&&) [9])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NameType>::make<char const (&) [18]>(char const (&&&) [18])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NameType>::make<char const (&) [7]>(char const (&&&) [7])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NameType>::make<char const (&) [11]>(char const (&&&) [11])
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NameType>::make<llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&)
Line
Count
Source
179
820
    template<typename ...Args> Node *make(Args &&...As) {
180
820
      return Self.makeNodeSimple<T>(std::forward<Args>(As)...);
181
820
    }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::PixelVectorType>::make<llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::VectorType>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::VectorType>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::VectorType>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::ParameterPackExpansion>::make<llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::ArrayType>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeOrString&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeOrString&&&)
Line
Count
Source
179
17
    template<typename ...Args> Node *make(Args &&...As) {
180
17
      return Self.makeNodeSimple<T>(std::forward<Args>(As)...);
181
17
    }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::PointerToMemberType>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::ElaboratedTypeSpefType>::make<llvm::itanium_demangle::StringView&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::StringView&&&, llvm::itanium_demangle::Node*&&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::ForwardTemplateReference>::make<unsigned long&>(unsigned long&&&)
Line
Count
Source
179
7
    template<typename ...Args> Node *make(Args &&...As) {
180
7
      return Self.makeNodeSimple<T>(std::forward<Args>(As)...);
181
7
    }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::ParameterPack>::make<llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::TemplateArgs>::make<llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray&&)
Line
Count
Source
179
211
    template<typename ...Args> Node *make(Args &&...As) {
180
211
      return Self.makeNodeSimple<T>(std::forward<Args>(As)...);
181
211
    }
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NameWithTemplateArgs>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Line
Count
Source
179
211
    template<typename ...Args> Node *make(Args &&...As) {
180
211
      return Self.makeNodeSimple<T>(std::forward<Args>(As)...);
181
211
    }
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::PointerType>::make<llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Line
Count
Source
179
10
    template<typename ...Args> Node *make(Args &&...As) {
180
10
      return Self.makeNodeSimple<T>(std::forward<Args>(As)...);
181
10
    }
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::ReferenceType>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::ReferenceKind>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::ReferenceKind&&)
Line
Count
Source
179
27
    template<typename ...Args> Node *make(Args &&...As) {
180
27
      return Self.makeNodeSimple<T>(std::forward<Args>(As)...);
181
27
    }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::PostfixQualifiedType>::make<llvm::itanium_demangle::Node*&, char const (&) [9]>(llvm::itanium_demangle::Node*&&&, char const (&&&) [9])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::PostfixQualifiedType>::make<llvm::itanium_demangle::Node*&, char const (&) [11]>(llvm::itanium_demangle::Node*&&&, char const (&&&) [11])
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::SpecialSubstitution>::make<llvm::itanium_demangle::SpecialSubKind>(llvm::itanium_demangle::SpecialSubKind&&)
Line
Count
Source
179
39
    template<typename ...Args> Node *make(Args &&...As) {
180
39
      return Self.makeNodeSimple<T>(std::forward<Args>(As)...);
181
39
    }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::AbiTagAttr>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::NestedName>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Line
Count
Source
179
369
    template<typename ...Args> Node *make(Args &&...As) {
180
369
      return Self.makeNodeSimple<T>(std::forward<Args>(As)...);
181
369
    }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::ExpandedSpecialSubstitution>::make<llvm::itanium_demangle::SpecialSubKind&>(llvm::itanium_demangle::SpecialSubKind&&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::CtorDtorName>::make<llvm::itanium_demangle::Node*&, bool, int&>(llvm::itanium_demangle::Node*&&&, bool&&, int&&&)
Line
Count
Source
179
12
    template<typename ...Args> Node *make(Args &&...As) {
180
12
      return Self.makeNodeSimple<T>(std::forward<Args>(As)...);
181
12
    }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::UnnamedTypeName>::make<llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::ClosureTypeName>::make<llvm::itanium_demangle::NodeArray&, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::NodeArray&&&, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::StructuredBindingName>::make<llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::LocalName>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Line
Count
Source
179
5
    template<typename ...Args> Node *make(Args &&...As) {
180
5
      return Self.makeNodeSimple<T>(std::forward<Args>(As)...);
181
5
    }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::SpecialName>::make<char const (&) [12], llvm::itanium_demangle::Node*&>(char const (&&&) [12], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::SpecialName>::make<char const (&) [9], llvm::itanium_demangle::Node*&>(char const (&&&) [9], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::SpecialName>::make<char const (&) [14], llvm::itanium_demangle::Node*&>(char const (&&&) [14], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::SpecialName>::make<char const (&) [19], llvm::itanium_demangle::Node*&>(char const (&&&) [19], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::SpecialName>::make<char const (&) [27], llvm::itanium_demangle::Node*&>(char const (&&&) [27], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::CtorVtableSpecialName>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::SpecialName>::make<char const (&) [34], llvm::itanium_demangle::Node*&>(char const (&&&) [34], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::SpecialName>::make<char const (&) [41], llvm::itanium_demangle::Node*&>(char const (&&&) [41], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::SpecialName>::make<char const (&) [18], llvm::itanium_demangle::Node*&>(char const (&&&) [18], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::SpecialName>::make<char const (&) [22], llvm::itanium_demangle::Node*&>(char const (&&&) [22], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::SpecialName>::make<char const (&) [20], llvm::itanium_demangle::Node*&>(char const (&&&) [20], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::SpecialName>::make<char const (&) [25], llvm::itanium_demangle::Node*&>(char const (&&&) [25], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::EnableIfAttr>::make<llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::FunctionEncoding>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Qualifiers&, llvm::itanium_demangle::FunctionRefQual&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Qualifiers&&&, llvm::itanium_demangle::FunctionRefQual&&&)
Line
Count
Source
179
238
    template<typename ...Args> Node *make(Args &&...As) {
180
238
      return Self.makeNodeSimple<T>(std::forward<Args>(As)...);
181
238
    }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::MakeNodeImpl<llvm::itanium_demangle::DotSuffix>::make<llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&)
182
  };
183
184
public:
185
2.37k
  template<typename T, typename ...Args> Node *makeNode(Args &&...As) {
186
2.37k
    return MakeNodeImpl<T>{*this}.make(std::forward<Args>(As)...);
187
2.37k
  }
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NameType, char const (&) [4]>(char const (&&&) [4])
Line
Count
Source
185
202
  template<typename T, typename ...Args> Node *makeNode(Args &&...As) {
186
202
    return MakeNodeImpl<T>{*this}.make(std::forward<Args>(As)...);
187
202
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::IntegerLiteral, llvm::itanium_demangle::StringView&, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::BoolExpr, int>(int&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::FloatLiteralImpl<float>, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::FloatLiteralImpl<double>, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::FloatLiteralImpl<long double>, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::IntegerCastExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::FunctionParam, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::FoldExpr, bool&, llvm::itanium_demangle::StringView&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(bool&&&, llvm::itanium_demangle::StringView&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::BinaryExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::PrefixExpr, llvm::itanium_demangle::StringView&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::StringView&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::EnclosingExpr, char const (&) [10], llvm::itanium_demangle::Node*&, char const (&) [2]>(char const (&&&) [10], llvm::itanium_demangle::Node*&&&, char const (&&&) [2])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::CastExpr, char const (&) [11], llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(char const (&&&) [11], llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::CallExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::ConversionExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::ConversionExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::DeleteExpr, llvm::itanium_demangle::Node*&, bool&, bool>(llvm::itanium_demangle::Node*&&&, bool&&&, bool&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::CastExpr, char const (&) [13], llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(char const (&&&) [13], llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NameType, char const (&) [22]>(char const (&&&) [22])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::QualifiedName, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::DtorName, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::ConversionOperatorType, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Line
Count
Source
185
7
  template<typename T, typename ...Args> Node *makeNode(Args &&...As) {
186
7
    return MakeNodeImpl<T>{*this}.make(std::forward<Args>(As)...);
187
7
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NameType, char const (&) [16]>(char const (&&&) [16])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::LiteralOperator, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::GlobalQualifiedName, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::MemberExpr, llvm::itanium_demangle::Node*&, char const (&) [3], llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, char const (&&&) [3], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::MemberExpr, llvm::itanium_demangle::Node*&, char const (&) [2], llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, char const (&&&) [2], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::ArraySubscriptExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::BracedExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&, bool>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&, bool&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::BracedRangeExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::InitListExpr, std::nullptr_t, llvm::itanium_demangle::NodeArray>(std::nullptr_t&&, llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::PostfixExpr, llvm::itanium_demangle::Node*&, char const (&) [3]>(llvm::itanium_demangle::Node*&&&, char const (&&&) [3])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NewExpr, llvm::itanium_demangle::NodeArray&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray&, bool&, bool&>(llvm::itanium_demangle::NodeArray&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&&, bool&&&, bool&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NewExpr, llvm::itanium_demangle::NodeArray&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray, bool&, bool&>(llvm::itanium_demangle::NodeArray&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&, bool&&&, bool&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::EnclosingExpr, char const (&) [11], llvm::itanium_demangle::Node*&, char const (&) [2]>(char const (&&&) [11], llvm::itanium_demangle::Node*&&&, char const (&&&) [2])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::ConditionalExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::CastExpr, char const (&) [17], llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(char const (&&&) [17], llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::CastExpr, char const (&) [12], llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(char const (&&&) [12], llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::EnclosingExpr, char const (&) [9], llvm::itanium_demangle::Node*&, char const (&) [2]>(char const (&&&) [9], llvm::itanium_demangle::Node*&&&, char const (&&&) [2])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::SizeofParamPackExpr, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::EnclosingExpr, char const (&) [12], llvm::itanium_demangle::Node*&, char const (&) [2]>(char const (&&&) [12], llvm::itanium_demangle::Node*&&&, char const (&&&) [2])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::TemplateArgumentPack, llvm::itanium_demangle::NodeArray&>(llvm::itanium_demangle::NodeArray&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NodeArrayNode, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::InitListExpr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::ThrowExpr, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::UUIDOfExpr, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NoexceptSpec, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::DynamicExceptionSpec, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::FunctionType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray&, llvm::itanium_demangle::Qualifiers&, llvm::itanium_demangle::FunctionRefQual&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&&, llvm::itanium_demangle::Qualifiers&&&, llvm::itanium_demangle::FunctionRefQual&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::ObjCProtoName, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::VendorExtQualType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::QualType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Qualifiers&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Qualifiers&&&)
Line
Count
Source
185
4
  template<typename T, typename ...Args> Node *makeNode(Args &&...As) {
186
4
    return MakeNodeImpl<T>{*this}.make(std::forward<Args>(As)...);
187
4
  }
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NameType, char const (&) [5]>(char const (&&&) [5])
Line
Count
Source
185
122
  template<typename T, typename ...Args> Node *makeNode(Args &&...As) {
186
122
    return MakeNodeImpl<T>{*this}.make(std::forward<Args>(As)...);
187
122
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NameType, char const (&) [8]>(char const (&&&) [8])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NameType, char const (&) [12]>(char const (&&&) [12])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NameType, char const (&) [14]>(char const (&&&) [14])
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NameType, char const (&) [6]>(char const (&&&) [6])
Line
Count
Source
185
26
  template<typename T, typename ...Args> Node *makeNode(Args &&...As) {
186
26
    return MakeNodeImpl<T>{*this}.make(std::forward<Args>(As)...);
187
26
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NameType, char const (&) [15]>(char const (&&&) [15])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NameType, char const (&) [13]>(char const (&&&) [13])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NameType, char const (&) [10]>(char const (&&&) [10])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NameType, char const (&) [19]>(char const (&&&) [19])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NameType, char const (&) [9]>(char const (&&&) [9])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NameType, char const (&) [18]>(char const (&&&) [18])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NameType, char const (&) [7]>(char const (&&&) [7])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NameType, char const (&) [11]>(char const (&&&) [11])
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NameType, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&)
Line
Count
Source
185
820
  template<typename T, typename ...Args> Node *makeNode(Args &&...As) {
186
820
    return MakeNodeImpl<T>{*this}.make(std::forward<Args>(As)...);
187
820
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::PixelVectorType, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::VectorType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::VectorType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::VectorType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::ParameterPackExpansion, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::ArrayType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeOrString&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeOrString&&&)
Line
Count
Source
185
17
  template<typename T, typename ...Args> Node *makeNode(Args &&...As) {
186
17
    return MakeNodeImpl<T>{*this}.make(std::forward<Args>(As)...);
187
17
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::PointerToMemberType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::ElaboratedTypeSpefType, llvm::itanium_demangle::StringView&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::StringView&&&, llvm::itanium_demangle::Node*&&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::ForwardTemplateReference, unsigned long&>(unsigned long&&&)
Line
Count
Source
185
7
  template<typename T, typename ...Args> Node *makeNode(Args &&...As) {
186
7
    return MakeNodeImpl<T>{*this}.make(std::forward<Args>(As)...);
187
7
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::ParameterPack, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::TemplateArgs, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray&&)
Line
Count
Source
185
211
  template<typename T, typename ...Args> Node *makeNode(Args &&...As) {
186
211
    return MakeNodeImpl<T>{*this}.make(std::forward<Args>(As)...);
187
211
  }
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NameWithTemplateArgs, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Line
Count
Source
185
211
  template<typename T, typename ...Args> Node *makeNode(Args &&...As) {
186
211
    return MakeNodeImpl<T>{*this}.make(std::forward<Args>(As)...);
187
211
  }
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::PointerType, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Line
Count
Source
185
10
  template<typename T, typename ...Args> Node *makeNode(Args &&...As) {
186
10
    return MakeNodeImpl<T>{*this}.make(std::forward<Args>(As)...);
187
10
  }
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::ReferenceType, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::ReferenceKind>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::ReferenceKind&&)
Line
Count
Source
185
27
  template<typename T, typename ...Args> Node *makeNode(Args &&...As) {
186
27
    return MakeNodeImpl<T>{*this}.make(std::forward<Args>(As)...);
187
27
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::PostfixQualifiedType, llvm::itanium_demangle::Node*&, char const (&) [9]>(llvm::itanium_demangle::Node*&&&, char const (&&&) [9])
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::PostfixQualifiedType, llvm::itanium_demangle::Node*&, char const (&) [11]>(llvm::itanium_demangle::Node*&&&, char const (&&&) [11])
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::SpecialSubstitution, llvm::itanium_demangle::SpecialSubKind>(llvm::itanium_demangle::SpecialSubKind&&)
Line
Count
Source
185
39
  template<typename T, typename ...Args> Node *makeNode(Args &&...As) {
186
39
    return MakeNodeImpl<T>{*this}.make(std::forward<Args>(As)...);
187
39
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::AbiTagAttr, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::NestedName, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Line
Count
Source
185
369
  template<typename T, typename ...Args> Node *makeNode(Args &&...As) {
186
369
    return MakeNodeImpl<T>{*this}.make(std::forward<Args>(As)...);
187
369
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::ExpandedSpecialSubstitution, llvm::itanium_demangle::SpecialSubKind&>(llvm::itanium_demangle::SpecialSubKind&&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::CtorDtorName, llvm::itanium_demangle::Node*&, bool, int&>(llvm::itanium_demangle::Node*&&&, bool&&, int&&&)
Line
Count
Source
185
12
  template<typename T, typename ...Args> Node *makeNode(Args &&...As) {
186
12
    return MakeNodeImpl<T>{*this}.make(std::forward<Args>(As)...);
187
12
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::UnnamedTypeName, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::ClosureTypeName, llvm::itanium_demangle::NodeArray&, llvm::itanium_demangle::StringView&>(llvm::itanium_demangle::NodeArray&&&, llvm::itanium_demangle::StringView&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::StructuredBindingName, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::LocalName, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Line
Count
Source
185
5
  template<typename T, typename ...Args> Node *makeNode(Args &&...As) {
186
5
    return MakeNodeImpl<T>{*this}.make(std::forward<Args>(As)...);
187
5
  }
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::StdQualifiedName, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&)
Line
Count
Source
185
44
  template<typename T, typename ...Args> Node *makeNode(Args &&...As) {
186
44
    return MakeNodeImpl<T>{*this}.make(std::forward<Args>(As)...);
187
44
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::SpecialName, char const (&) [12], llvm::itanium_demangle::Node*&>(char const (&&&) [12], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::SpecialName, char const (&) [9], llvm::itanium_demangle::Node*&>(char const (&&&) [9], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::SpecialName, char const (&) [14], llvm::itanium_demangle::Node*&>(char const (&&&) [14], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::SpecialName, char const (&) [19], llvm::itanium_demangle::Node*&>(char const (&&&) [19], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::SpecialName, char const (&) [27], llvm::itanium_demangle::Node*&>(char const (&&&) [27], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::CtorVtableSpecialName, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::SpecialName, char const (&) [34], llvm::itanium_demangle::Node*&>(char const (&&&) [34], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::SpecialName, char const (&) [41], llvm::itanium_demangle::Node*&>(char const (&&&) [41], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::SpecialName, char const (&) [18], llvm::itanium_demangle::Node*&>(char const (&&&) [18], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::SpecialName, char const (&) [22], llvm::itanium_demangle::Node*&>(char const (&&&) [22], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::SpecialName, char const (&) [20], llvm::itanium_demangle::Node*&>(char const (&&&) [20], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::SpecialName, char const (&) [25], llvm::itanium_demangle::Node*&>(char const (&&&) [25], llvm::itanium_demangle::Node*&&&)
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::EnableIfAttr, llvm::itanium_demangle::NodeArray>(llvm::itanium_demangle::NodeArray&&)
ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::FunctionEncoding, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::NodeArray, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::Qualifiers&, llvm::itanium_demangle::FunctionRefQual&>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::NodeArray&&, llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::Qualifiers&&&, llvm::itanium_demangle::FunctionRefQual&&&)
Line
Count
Source
185
238
  template<typename T, typename ...Args> Node *makeNode(Args &&...As) {
186
238
    return MakeNodeImpl<T>{*this}.make(std::forward<Args>(As)...);
187
238
  }
Unexecuted instantiation: ItaniumManglingCanonicalizer.cpp:llvm::itanium_demangle::Node* (anonymous namespace)::CanonicalizerAllocator::makeNode<llvm::itanium_demangle::DotSuffix, llvm::itanium_demangle::Node*&, llvm::itanium_demangle::StringView>(llvm::itanium_demangle::Node*&&&, llvm::itanium_demangle::StringView&&)
188
189
448
  void reset() { MostRecentlyCreated = nullptr; }
190
191
346
  void setCreateNewNodes(bool CNN) { CreateNewNodes = CNN; }
192
193
91
  void addRemapping(Node *A, Node *B) {
194
91
    // Note, we don't need to check whether B is also remapped, because if it
195
91
    // was we would have already remapped it when building it.
196
91
    Remappings.insert(std::make_pair(A, B));
197
91
  }
198
199
207
  bool isMostRecentlyCreated(Node *N) const { return MostRecentlyCreated == N; }
200
201
102
  void trackUsesOf(Node *N) {
202
102
    TrackedNode = N;
203
102
    TrackedNodeIsUsed = false;
204
102
  }
205
78
  bool trackedNodeIsUsed() const { return TrackedNodeIsUsed; }
206
};
207
208
/// Convert St3foo to NSt3fooE so that equivalences naming one also affect the
209
/// other.
210
template<>
211
struct CanonicalizerAllocator::MakeNodeImpl<
212
           itanium_demangle::StdQualifiedName> {
213
  CanonicalizerAllocator &Self;
214
44
  Node *make(Node *Child) {
215
44
    Node *StdNamespace = Self.makeNode<itanium_demangle::NameType>("std");
216
44
    if (!StdNamespace)
217
0
      return nullptr;
218
44
    return Self.makeNode<itanium_demangle::NestedName>(StdNamespace, Child);
219
44
  }
220
};
221
222
// FIXME: Also expand built-in substitutions?
223
224
using CanonicalizingDemangler =
225
    itanium_demangle::ManglingParser<CanonicalizerAllocator>;
226
}
227
228
struct ItaniumManglingCanonicalizer::Impl {
229
  CanonicalizingDemangler Demangler = {nullptr, nullptr};
230
};
231
232
40
ItaniumManglingCanonicalizer::ItaniumManglingCanonicalizer() : P(new Impl) {}
233
40
ItaniumManglingCanonicalizer::~ItaniumManglingCanonicalizer() { delete P; }
234
235
ItaniumManglingCanonicalizer::EquivalenceError
236
ItaniumManglingCanonicalizer::addEquivalence(FragmentKind Kind, StringRef First,
237
105
                                             StringRef Second) {
238
105
  auto &Alloc = P->Demangler.ASTAllocator;
239
105
  Alloc.setCreateNewNodes(true);
240
105
241
207
  auto Parse = [&](StringRef Str) {
242
207
    P->Demangler.reset(Str.begin(), Str.end());
243
207
    Node *N = nullptr;
244
207
    switch (Kind) {
245
207
      // A <name>, with minor extensions to allow arbitrary namespace and
246
207
      // template names that can't easily be written as <name>s.
247
207
    case FragmentKind::Name:
248
104
      // Very special case: allow "St" as a shorthand for "3std". It's not
249
104
      // valid as a <name> mangling, but is nonetheless the most natural
250
104
      // way to name the 'std' namespace.
251
104
      if (Str.size() == 2 && 
P->Demangler.consumeIf("St")23
)
252
4
        N = P->Demangler.make<itanium_demangle::NameType>("std");
253
100
      // We permit substitutions to name templates without their template
254
100
      // arguments. This mostly just falls out, as almost all template names
255
100
      // are valid as <name>s, but we also want to parse <substitution>s as
256
100
      // <name>s, even though they're not.
257
100
      else if (Str.startswith("S"))
258
22
        // Parse the substitution and optional following template arguments.
259
22
        N = P->Demangler.parseType();
260
78
      else
261
78
        N = P->Demangler.parseName();
262
104
      break;
263
207
264
207
      // A <type>.
265
207
    case FragmentKind::Type:
266
93
      N = P->Demangler.parseType();
267
93
      break;
268
207
269
207
      // An <encoding>.
270
207
    case FragmentKind::Encoding:
271
10
      N = P->Demangler.parseEncoding();
272
10
      break;
273
207
    }
274
207
275
207
    // If we have trailing junk, the mangling is invalid.
276
207
    if (P->Demangler.numLeft() != 0)
277
6
      N = nullptr;
278
207
279
207
    // If any node was created after N, then we cannot safely remap it because
280
207
    // it might already be in use by another node.
281
207
    return std::make_pair(N, Alloc.isMostRecentlyCreated(N));
282
207
  };
283
105
284
105
  Node *FirstNode, *SecondNode;
285
105
  bool FirstIsNew, SecondIsNew;
286
105
287
105
  std::tie(FirstNode, FirstIsNew) = Parse(First);
288
105
  if (!FirstNode)
289
3
    return EquivalenceError::InvalidFirstMangling;
290
102
291
102
  Alloc.trackUsesOf(FirstNode);
292
102
  std::tie(SecondNode, SecondIsNew) = Parse(Second);
293
102
  if (!SecondNode)
294
4
    return EquivalenceError::InvalidSecondMangling;
295
98
296
98
  // If they're already equivalent, there's nothing to do.
297
98
  if (FirstNode == SecondNode)
298
4
    return EquivalenceError::Success;
299
94
300
94
  if (FirstIsNew && 
!Alloc.trackedNodeIsUsed()78
)
301
69
    Alloc.addRemapping(FirstNode, SecondNode);
302
25
  else if (SecondIsNew)
303
22
    Alloc.addRemapping(SecondNode, FirstNode);
304
3
  else
305
3
    return EquivalenceError::ManglingAlreadyUsed;
306
91
307
91
  return EquivalenceError::Success;
308
91
}
309
310
ItaniumManglingCanonicalizer::Key
311
122
ItaniumManglingCanonicalizer::canonicalize(StringRef Mangling) {
312
122
  P->Demangler.ASTAllocator.setCreateNewNodes(true);
313
122
  P->Demangler.reset(Mangling.begin(), Mangling.end());
314
122
  return reinterpret_cast<Key>(P->Demangler.parse());
315
122
}
316
317
ItaniumManglingCanonicalizer::Key
318
119
ItaniumManglingCanonicalizer::lookup(StringRef Mangling) {
319
119
  P->Demangler.ASTAllocator.setCreateNewNodes(false);
320
119
  P->Demangler.reset(Mangling.begin(), Mangling.end());
321
119
  return reinterpret_cast<Key>(P->Demangler.parse());
322
119
}