10 #ifndef LLVM_LINKER_LINKER_H
11 #define LLVM_LINKER_LINKER_H
88 IdentifiedStructTypeSet IdentifiedStructTypes;
bool operator!=(const KeyTy &that) const
bool operator==(const KeyTy &that) const
static bool LinkModules(Module *Dest, Module *Src, DiagnosticHandlerFunction DiagnosticHandler)
This function links two modules together, with the resulting Dest module modified to be the composite...
A Module instance is used to store all the information related to an LLVM module. ...
ArrayRef< Type * > ETypes
static StructType * getEmptyKey()
DenseSet< StructType *, StructTypeKeyInfo > NonOpaqueStructTypeSet
StructType - Class to represent struct types.
Linker(Module *M, DiagnosticHandlerFunction DiagnosticHandler)
This class provides the core functionality of linking in LLVM.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
void switchToNonOpaque(StructType *Ty)
NonOpaqueStructTypeSet NonOpaqueStructTypes
bool linkInModule(Module *Src, bool OverrideSymbols=false)
Link Src into the composite.
OpaqueStructTypeSet OpaqueStructTypes
KeyTy(ArrayRef< Type * > E, bool P)
bool hasType(StructType *Ty)
void addOpaque(StructType *Ty)
void setModule(Module *Dst)
Set the composite to the passed-in module.
static unsigned getHashValue(const KeyTy &Key)
std::function< void(const DiagnosticInfo &)> DiagnosticHandlerFunction
static bool isEqual(const KeyTy &LHS, const StructType *RHS)
DenseSet< StructType * > OpaqueStructTypeSet
void addNonOpaque(StructType *Ty)
StructType * findNonOpaque(ArrayRef< Type * > ETypes, bool IsPacked)
Module * getModule() const
static StructType * getTombstoneKey()