Support for ThinLTO function importing and symbol linking.
[oota-llvm.git] / include / llvm / Linker / Linker.h
index 3a6df80aa38d18136f4bedbf64a38f9652dea65e..679e60582e807a01c11402c2438ee6b8a1146049 100644 (file)
@@ -14,6 +14,7 @@
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/DenseSet.h"
 #include "llvm/IR/DiagnosticInfo.h"
+#include "llvm/IR/FunctionInfo.h"
 
 namespace llvm {
 class Module;
@@ -76,8 +77,13 @@ public:
   /// \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.
+  /// For ThinLTO function importing/exporting the \p FunctionInfoIndex
+  /// is passed. If a \p FuncToImport is provided, only that single
+  /// function is imported from the source module.
   /// Returns true on error.
-  bool linkInModule(Module *Src, unsigned Flags = Flags::None);
+  bool linkInModule(Module *Src, unsigned Flags = Flags::None,
+                    FunctionInfoIndex *Index = nullptr,
+                    Function *FuncToImport = nullptr);
 
   /// \brief Set the composite to the passed-in module.
   void setModule(Module *Dst);