15 #ifndef LLVM_LLVMCONTEXT_IMPL_H
16 #define LLVM_LLVMCONTEXT_IMPL_H
134 return LHS ==
KeyTy(RHS);
183 return LHS ==
KeyTy(RHS);
195 assert(!X.isNotUniqued() &&
"Non-uniqued MDNode in FoldingSet?");
198 if (X.Hash != IDHash)
226 return cast_or_null<MDNode>(
getValPtr());
328 typedef std::pair<unsigned, TrackingVH<MDNode> >
MDPairTy;
friend hash_code hash_value(const KeyTy &Key)
bool operator!=(const KeyTy &that) const
static bool isEqual(const KeyTy &LHS, const FunctionType *RHS)
KeyTy(const APInt &V, Type *Ty)
DenseMap< unsigned, IntegerType * > IntegerTypes
COFF::RelocationTypeX86 Type
FoldingSet< AttributeImpl > AttrsSet
KeyTy(const Type *R, const ArrayRef< Type * > &P, bool V)
DenseMap< DenseMapAPIntKeyInfo::KeyTy, ConstantInt *, DenseMapAPIntKeyInfo > IntMapTy
static unsigned getHashValue(const KeyTy &Key)
std::vector< std::pair< DebugRecVH, DebugRecVH > > ScopeInlinedAtRecords
KeyTy(const ArrayRef< Type * > &E, bool P)
static KeyTy getEmptyKey()
PrefixDataMapTy PrefixDataMap
static StructType * getTombstoneKey()
bool operator==(const KeyTy &that) const
static bool isEqual(const KeyTy &LHS, const StructType *RHS)
static unsigned getHashValue(const StructType *ST)
ConstantInt * TheFalseVal
SmallVector< MDPairTy, 2 > MDMapTy
friend hash_code hash_value(const KeyTy &Key)
DenseMap< MDNode *, int > ScopeRecordIdx
MDNode - a tuple of other values.
static unsigned ComputeHash(const MDNode &X, FoldingSetNodeID &)
FunctionTypeMap FunctionTypes
DenseMap< std::pair< Type *, unsigned >, PointerType * > ASPointerTypes
LLVMContext::InlineAsmDiagHandlerTy InlineAsmDiagHandler
static const fltSemantics Bogus
std::vector< DebugRecVH > ScopeRecords
DenseMap< std::pair< MDNode *, MDNode * >, int > ScopeInlinedAtIdx
bool bitwiseIsEqual(const APFloat &) const
Bitwise comparison for equality (QNaNs compare equal, 0!=-0).
static bool isEqual(const KeyTy &LHS, const KeyTy &RHS)
DenseMap< FunctionType *, bool, FunctionTypeKeyInfo > FunctionTypeMap
KeyTy(const FunctionType *FT)
FoldingSet< AttributeSetImpl > AttrsLists
DebugRecVH(MDNode *n, LLVMContextImpl *ctx, int idx)
DenseMap< std::pair< Type *, uint64_t >, ArrayType * > ArrayTypes
ID
LLVM Calling Convention Representation.
BumpPtrAllocator TypeAllocator
This file implements a class to represent arbitrary precision integral constant values and operations...
static unsigned getHashValue(const FunctionType *FT)
static StructType * getEmptyKey()
ConstantAggrUniqueMap< VectorType, ConstantVector > VectorConstantsTy
DenseMap< StructType *, bool, AnonStructTypeKeyInfo > StructTypeMap
unsigned NamedStructTypesUniqueID
ArrayRef< Type * > ETypes
LLVMContextImpl(LLVMContext &C)
DenseMap< const Function *, unsigned > IntrinsicIDCacheTy
hash_code hash_value(const APFloat &Arg)
ArrayConstantsTy ArrayConstants
DenseMap< PointerType *, ConstantPointerNull * > CPNConstants
ConstantAggrUniqueMap< StructType, ConstantStruct > StructConstantsTy
bool operator!=(const KeyTy &that) const
DenseMap< std::pair< Type *, unsigned >, VectorType * > VectorTypes
DenseMap< Type *, ConstantAggregateZero * > CAZConstants
A self-contained host- and target-independent arbitrary-precision floating-point software implementat...
KeyTy(const StructType *ST)
std::pair< unsigned, TrackingVH< MDNode > > MDPairTy
StringMap< unsigned > CustomMDKindNames
CustomMDKindNames - Map to hold the metadata string to ID mapping.
static bool Equals(const MDNode &X, const FoldingSetNodeID &ID, unsigned IDHash, FoldingSetNodeID &TempID)
StructTypeMap AnonStructTypes
Value * getValPtr() const
DenseMap< DenseMapAPFloatKeyInfo::KeyTy, ConstantFP *, DenseMapAPFloatKeyInfo > FPMapTy
void Profile(FoldingSetNodeID &ID) const
int getOrAddScopeRecordIdxEntry(MDNode *N, int ExistingIdx)
hash_code hash_combine(const T1 &arg1, const T2 &arg2, const T3 &arg3, const T4 &arg4, const T5 &arg5, const T6 &arg6)
FoldingSet< MDNode > MDNodeSet
static bool isEqual(const FunctionType *LHS, const FunctionType *RHS)
DenseMap< const Instruction *, MDMapTy > MetadataStore
LeakDetectorImpl< Value > LLVMObjects
This file declares a class to represent arbitrary precision floating point values and provide a varie...
bool operator!=(const KeyTy &that) const
This file defines various helper methods and classes used by LLVMContextImpl for creating and managin...
ValueHandlesTy ValueHandles
SmallPtrSet< MDNode *, 1 > NonUniquedMDNodes
Integer representation type.
static FunctionType * getEmptyKey()
static bool isEqual(const KeyTy &LHS, const KeyTy &RHS)
IntrinsicIDCacheTy IntrinsicIDCache
DenseMap< const Function *, ReturnInst * > PrefixDataMapTy
Mapping from a function to its prefix data, which is stored as the operand of an unparented ReturnIns...
void * InlineAsmDiagContext
ConstantUniqueMap< ExprMapKeyType, const ExprMapKeyType &, Type, ConstantExpr > ExprConstants
VectorConstantsTy VectorConstants
Class for constant integers.
bool operator==(const KeyTy &that) const
static unsigned getHashValue(const KeyTy &Key)
SmallPtrSet< Module *, 4 > OwnedModules
void(* InlineAsmDiagHandlerTy)(const SMDiagnostic &, void *Context, unsigned LocCookie)
static bool isEqual(const StructType *LHS, const StructType *RHS)
Class for arbitrary precision integers.
bool operator!=(const KeyTy &that) const
hash_code hash_combine_range(InputIteratorT first, InputIteratorT last)
Compute a hash_code for a sequence of values.
An opaque object representing a hash code.
DenseMap< Type *, UndefValue * > UVConstants
virtual void allUsesReplacedWith(Value *VNew)
static FunctionType * getTombstoneKey()
DenseMap< Value *, ValueHandleBase * > ValueHandlesTy
StringMap< Value * > MDStringCache
StringMap< StructType * > NamedStructTypes
static KeyTy getTombstoneKey()
ConstantUniqueMap< InlineAsmKeyType, const InlineAsmKeyType &, PointerType, InlineAsm > InlineAsms
bool operator==(const KeyTy &that) const
ArrayRef< Type * > Params
DenseMap< std::pair< Function *, BasicBlock * >, BlockAddress * > BlockAddresses
static KeyTy getTombstoneKey()
StructConstantsTy StructConstants
LLVM Value Representation.
static KeyTy getEmptyKey()
ConstantAggrUniqueMap< ArrayType, ConstantArray > ArrayConstantsTy
FoldingSet< AttributeSetNode > AttrsSetNodes
static unsigned getHashValue(const KeyTy &Key)
DenseMap< Type *, PointerType * > PointerTypes
StringMap< ConstantDataSequential * > CDSConstants
bool operator==(const KeyTy &that) const
int getOrAddScopeInlinedAtIdxEntry(MDNode *Scope, MDNode *IA, int ExistingIdx)
static RegisterPass< NVPTXAllocaHoisting > X("alloca-hoisting","Hoisting alloca instructions in non-entry ""blocks to the entry block")
static unsigned getHashValue(const KeyTy &Key)