//===- OutlinedHashTree.h --------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===---------------------------------------------------------------------===// // // This defines the OutlinedHashTree class. It contains sequences of stable // hash values of instructions that have been outlined. This OutlinedHashTree // can be used to track the outlined instruction sequences across modules. // //===---------------------------------------------------------------------===// #ifndef LLVM_CGDATA_OUTLINEDHASHTREE_H #define LLVM_CGDATA_OUTLINEDHASHTREE_H #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/StableHashing.h" #include "llvm/ObjectYAML/YAML.h" #include "llvm/Support/raw_ostream.h" #include <unordered_map> #include <vector> namespace llvm { /// A HashNode is an entry in an OutlinedHashTree, holding a hash value /// and a collection of Successors (other HashNodes). If a HashNode has /// a positive terminal value (Terminals > 0), it signifies the end of /// a hash sequence with that occurrence count. struct HashNode { … }; class OutlinedHashTree { … }; } // namespace llvm #endif