1 //===-- CloneSubModule.h - Utilities for extracting sub-modules -*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // Contains utilities for extracting sub-modules. Useful for breaking up modules
13 //===----------------------------------------------------------------------===//
15 #ifndef LLVM_EXECUTIONENGINE_ORC_CLONESUBMODULE_H
16 #define LLVM_EXECUTIONENGINE_ORC_CLONESUBMODULE_H
18 #include "llvm/ADT/DenseSet.h"
19 #include "llvm/Transforms/Utils/ValueMapper.h"
28 typedef std::function<void(GlobalVariable &, const GlobalVariable &,
29 ValueToValueMapTy &)> HandleGlobalVariableFtor;
31 typedef std::function<void(Function &, const Function &, ValueToValueMapTy &)>
34 void copyGVInitializer(GlobalVariable &New, const GlobalVariable &Orig,
35 ValueToValueMapTy &VMap);
37 void copyFunctionBody(Function &New, const Function &Orig,
38 ValueToValueMapTy &VMap);
40 void CloneSubModule(Module &Dst, const Module &Src,
41 HandleGlobalVariableFtor HandleGlobalVariable,
42 HandleFunctionFtor HandleFunction, bool KeepInlineAsm);
45 #endif // LLVM_EXECUTIONENGINE_ORC_CLONESUBMODULE_H