#include "llvm/ProfileData/ItaniumManglingCanonicalizer.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/FoldingSet.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Demangle/ItaniumDemangle.h"
#include "llvm/Support/Allocator.h"
usingnamespacellvm;
ForwardTemplateReference;
Node;
NodeKind;
namespace {
struct FoldingSetNodeIDBuilder { … };
template<typename ...T>
void profileCtor(llvm::FoldingSetNodeID &ID, Node::Kind K, T ...V) { … }
template<typename NodeT> struct ProfileSpecificNode { … };
struct ProfileNode { … };
template<> void ProfileNode::operator()(const ForwardTemplateReference *N) { … }
void profileNode(llvm::FoldingSetNodeID &ID, const Node *N) { … }
class FoldingNodeAllocator { … };
class CanonicalizerAllocator : public FoldingNodeAllocator { … };
CanonicalizingDemangler;
}
struct ItaniumManglingCanonicalizer::Impl { … };
ItaniumManglingCanonicalizer::ItaniumManglingCanonicalizer() : … { … }
ItaniumManglingCanonicalizer::~ItaniumManglingCanonicalizer() { … }
ItaniumManglingCanonicalizer::EquivalenceError
ItaniumManglingCanonicalizer::addEquivalence(FragmentKind Kind, StringRef First,
StringRef Second) { … }
static ItaniumManglingCanonicalizer::Key
parseMaybeMangledName(CanonicalizingDemangler &Demangler, StringRef Mangling,
bool CreateNewNodes) { … }
ItaniumManglingCanonicalizer::Key
ItaniumManglingCanonicalizer::canonicalize(StringRef Mangling) { … }
ItaniumManglingCanonicalizer::Key
ItaniumManglingCanonicalizer::lookup(StringRef Mangling) { … }