mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
8d353ae157
NFC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230143 91177308-0d34-0410-b5e6-96231b3b80d8
61 lines
2.1 KiB
C++
61 lines
2.1 KiB
C++
//===-- CloneSubModule.h - Utilities for extracting sub-modules -*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Contains utilities for extracting sub-modules. Useful for breaking up modules
|
|
// for lazy jitting.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_EXECUTIONENGINE_ORC_CLONESUBMODULE_H
|
|
#define LLVM_EXECUTIONENGINE_ORC_CLONESUBMODULE_H
|
|
|
|
#include "llvm/ADT/DenseSet.h"
|
|
#include "llvm/Transforms/Utils/ValueMapper.h"
|
|
#include <functional>
|
|
|
|
namespace llvm {
|
|
|
|
class Function;
|
|
class GlobalVariable;
|
|
class Module;
|
|
|
|
namespace orc {
|
|
|
|
/// @brief Functor type for describing how CloneSubModule should mutate a
|
|
/// GlobalVariable.
|
|
typedef std::function<void(GlobalVariable &, const GlobalVariable &,
|
|
ValueToValueMapTy &)> HandleGlobalVariableFtor;
|
|
|
|
/// @brief Functor type for describing how CloneSubModule should mutate a
|
|
/// Function.
|
|
typedef std::function<void(Function &, const Function &, ValueToValueMapTy &)>
|
|
HandleFunctionFtor;
|
|
|
|
/// @brief Copies the initializer from Orig to New.
|
|
///
|
|
/// Type is suitable for implicit conversion to a HandleGlobalVariableFtor.
|
|
void copyGVInitializer(GlobalVariable &New, const GlobalVariable &Orig,
|
|
ValueToValueMapTy &VMap);
|
|
|
|
/// @brief Copies the body of Orig to New.
|
|
///
|
|
/// Type is suitable for implicit conversion to a HandleFunctionFtor.
|
|
void copyFunctionBody(Function &New, const Function &Orig,
|
|
ValueToValueMapTy &VMap);
|
|
|
|
/// @brief Clone a subset of the module Src into Dst.
|
|
void CloneSubModule(Module &Dst, const Module &Src,
|
|
HandleGlobalVariableFtor HandleGlobalVariable,
|
|
HandleFunctionFtor HandleFunction, bool KeepInlineAsm);
|
|
|
|
} // End namespace orc.
|
|
} // End namespace llvm.
|
|
|
|
#endif // LLVM_EXECUTIONENGINE_ORC_CLONESUBMODULE_H
|