LLVM 22.0.0git
StructuralHash.h File Reference
#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/StableHashing.h"
#include "llvm/IR/Instruction.h"
#include "llvm/Support/Compiler.h"
#include <cstdint>

Go to the source code of this file.

Classes

struct  llvm::FunctionHashInfo

Namespaces

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

Typedefs

using llvm::IndexPair = std::pair<unsigned, unsigned>
 The pair of an instruction index and a operand index.
using llvm::IndexInstrMap = MapVector<unsigned, Instruction *>
 A map from an instruction index to an instruction pointer.
using llvm::IndexOperandHashMapType = DenseMap<IndexPair, stable_hash>
 A map from an IndexPair to a stable hash.
using llvm::IgnoreOperandFunc = std::function<bool(const Instruction *, unsigned)>
 A function that takes an instruction and an operand index and returns true if the operand should be ignored in the function hash computation.

Functions

LLVM_ABI stable_hash llvm::StructuralHash (const Function &F, bool DetailedHash=false)
 Returns a hash of the function F.
LLVM_ABI stable_hash llvm::StructuralHash (const GlobalVariable &G)
 Returns a hash of the global variable G.
LLVM_ABI stable_hash llvm::StructuralHash (const Module &M, bool DetailedHash=false)
 Returns a hash of the module M by hashing all functions and global variables contained within.
LLVM_ABI FunctionHashInfo llvm::StructuralHashWithDifferences (const Function &F, IgnoreOperandFunc IgnoreOp)
 Computes a structural hash of a given function, considering the structure and content of the function's instructions while allowing for selective ignoring of certain operands based on custom criteria.