LLVM 19.0.0git
Classes | Namespaces | Typedefs
FoldingSet.h File Reference

This file defines a hash set that can be used to remove duplication of nodes in a graph. More...

#include "llvm/ADT/APInt.h"
#include "llvm/ADT/Hashing.h"
#include "llvm/ADT/STLForwardCompat.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/iterator.h"
#include "llvm/Support/Allocator.h"
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <type_traits>
#include <utility>

Go to the source code of this file.

Classes

class  llvm::FoldingSetBase
 FoldingSetBase - Implements the folding set functionality. More...
 
class  llvm::FoldingSetBase::Node
 Node - This class is used to maintain the singly linked bucket list in a folding set. More...
 
struct  llvm::FoldingSetBase::FoldingSetInfo
 Functions provided by the derived class to compute folding properties. More...
 
struct  llvm::DefaultFoldingSetTrait< T >
 DefaultFoldingSetTrait - This class provides default implementations for FoldingSetTrait implementations. More...
 
struct  llvm::FoldingSetTrait< T, Enable >
 FoldingSetTrait - This trait class is used to define behavior of how to "profile" (in the FoldingSet parlance) an object of a given type. More...
 
struct  llvm::DefaultContextualFoldingSetTrait< T, Ctx >
 DefaultContextualFoldingSetTrait - Like DefaultFoldingSetTrait, but for ContextualFoldingSets. More...
 
struct  llvm::ContextualFoldingSetTrait< T, Ctx >
 ContextualFoldingSetTrait - Like FoldingSetTrait, but for ContextualFoldingSets. More...
 
class  llvm::FoldingSetNodeIDRef
 FoldingSetNodeIDRef - This class describes a reference to an interned FoldingSetNodeID, which can be a useful to store node id data rather than using plain FoldingSetNodeIDs, since the 32-element SmallVector is often much larger than necessary, and the possibility of heap allocation means it requires a non-trivial destructor call. More...
 
class  llvm::FoldingSetNodeID
 FoldingSetNodeID - This class is used to gather all the unique data bits of a node. More...
 
class  llvm::FoldingSetImpl< Derived, T >
 FoldingSetImpl - An implementation detail that lets us share code between FoldingSet and ContextualFoldingSet. More...
 
class  llvm::FoldingSet< T >
 FoldingSet - This template class is used to instantiate a specialized implementation of the folding set to the node class T. More...
 
class  llvm::ContextualFoldingSet< T, Ctx >
 ContextualFoldingSet - This template class is a further refinement of FoldingSet which provides a context argument when calling Profile on its nodes. More...
 
class  llvm::FoldingSetVector< T, VectorT >
 FoldingSetVector - This template class combines a FoldingSet and a vector to provide the interface of FoldingSet but with deterministic iteration order based on the insertion order. More...
 
class  llvm::FoldingSetIteratorImpl
 FoldingSetIteratorImpl - This is the common iterator support shared by all folding sets, which knows how to walk the folding set hash table. More...
 
class  llvm::FoldingSetIterator< T >
 
class  llvm::FoldingSetBucketIteratorImpl
 FoldingSetBucketIteratorImpl - This is the common bucket iterator support shared by all folding sets, which knows how to walk a particular bucket of a folding set hash table. More...
 
class  llvm::FoldingSetBucketIterator< T >
 
class  llvm::FoldingSetNodeWrapper< T >
 FoldingSetNodeWrapper - This template class is used to "wrap" arbitrary types in an enclosing object so that they can be inserted into FoldingSets. More...
 
class  llvm::FastFoldingSetNode
 FastFoldingSetNode - This is a subclass of FoldingSetNode which stores a FoldingSetNodeID value rather than requiring the node to recompute it each time it is needed. More...
 
struct  llvm::FoldingSetTrait< T * >
 
struct  llvm::FoldingSetTrait< std::pair< T1, T2 > >
 
struct  llvm::FoldingSetTrait< T, std::enable_if_t< std::is_enum< T >::value > >
 

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 

Typedefs

using llvm::FoldingSetNode = FoldingSetBase::Node
 

Detailed Description

This file defines a hash set that can be used to remove duplication of nodes in a graph.

This code was originally created by Chris Lattner for use with SelectionDAGCSEMap, but was isolated to provide use across the llvm code set.

Definition in file FoldingSet.h.