X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FLinker%2FLinker.h;h=c43b90e9cd2638aece501fef86cc25dd86ab2735;hb=00552e3875ee5f382db6c98286a241a7d0efe1b8;hp=1de4488b33b38e5b9e83c9235080af5e63a73f84;hpb=2991725fe2982e0fc2c28e9f53cd9a2bec90a9d9;p=oota-llvm.git diff --git a/include/llvm/Linker/Linker.h b/include/llvm/Linker/Linker.h index 1de4488b33b..c43b90e9cd2 100644 --- a/include/llvm/Linker/Linker.h +++ b/include/llvm/Linker/Linker.h @@ -13,11 +13,9 @@ #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/DenseSet.h" - -#include +#include "llvm/IR/DiagnosticInfo.h" namespace llvm { -class DiagnosticInfo; class Module; class StructType; class Type; @@ -28,8 +26,6 @@ class Type; /// something with it after the linking. class Linker { public: - typedef std::function DiagnosticHandlerFunction; - struct StructTypeKeyInfo { struct KeyTy { ArrayRef ETypes; @@ -58,6 +54,7 @@ public: NonOpaqueStructTypeSet NonOpaqueStructTypes; void addNonOpaque(StructType *Ty); + void switchToNonOpaque(StructType *Ty); void addOpaque(StructType *Ty); StructType *findNonOpaque(ArrayRef ETypes, bool IsPacked); bool hasType(StructType *Ty); @@ -71,8 +68,13 @@ public: void deleteModule(); /// \brief Link \p Src into the composite. The source is destroyed. + /// Passing OverrideSymbols as true will have symbols from Src + /// shadow those in the Dest. /// Returns true on error. - bool linkInModule(Module *Src); + bool linkInModule(Module *Src, bool OverrideSymbols = false); + + /// \brief Set the composite to the passed-in module. + void setModule(Module *Dst); static bool LinkModules(Module *Dest, Module *Src, DiagnosticHandlerFunction DiagnosticHandler);