FunctionImport.h revision 292915
1//===- llvm/Transforms/IPO/FunctionImport.h - ThinLTO importing -*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#ifndef LLVM_FUNCTIONIMPORT_H 11#define LLVM_FUNCTIONIMPORT_H 12 13#include "llvm/ADT/StringMap.h" 14#include <functional> 15 16namespace llvm { 17class LLVMContext; 18class Module; 19class FunctionInfoIndex; 20 21/// The function importer is automatically importing function from other modules 22/// based on the provided summary informations. 23class FunctionImporter { 24 25 /// The summaries index used to trigger importing. 26 const FunctionInfoIndex &Index; 27 28 /// Factory function to load a Module for a given identifier 29 std::function<std::unique_ptr<Module>(StringRef Identifier)> ModuleLoader; 30 31public: 32 /// Create a Function Importer. 33 FunctionImporter( 34 const FunctionInfoIndex &Index, 35 std::function<std::unique_ptr<Module>(StringRef Identifier)> ModuleLoader) 36 : Index(Index), ModuleLoader(ModuleLoader) {} 37 38 /// Import functions in Module \p M based on the summary informations. 39 bool importFunctions(Module &M); 40}; 41} 42 43#endif // LLVM_FUNCTIONIMPORT_H 44