From 6a0fcf7f530a2b2842df233c3982b2d40799393f Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Wed, 1 Oct 2014 17:14:57 +0000 Subject: [PATCH] C API: Add LLVMCloneModule() git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218775 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm-c/Core.h | 4 ++++ lib/Transforms/Utils/CloneModule.cpp | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/include/llvm-c/Core.h b/include/llvm-c/Core.h index e5d5f3f99bd..bfbc6322902 100644 --- a/include/llvm-c/Core.h +++ b/include/llvm-c/Core.h @@ -560,6 +560,10 @@ LLVMModuleRef LLVMModuleCreateWithName(const char *ModuleID); */ LLVMModuleRef LLVMModuleCreateWithNameInContext(const char *ModuleID, LLVMContextRef C); +/** + * Return an exact copy of the specified module. + */ +LLVMModuleRef LLVMCloneModule(LLVMModuleRef M); /** * Destroy a module instance. diff --git a/lib/Transforms/Utils/CloneModule.cpp b/lib/Transforms/Utils/CloneModule.cpp index 3f75b3e677e..d078c96f372 100644 --- a/lib/Transforms/Utils/CloneModule.cpp +++ b/lib/Transforms/Utils/CloneModule.cpp @@ -17,6 +17,7 @@ #include "llvm/IR/DerivedTypes.h" #include "llvm/IR/Module.h" #include "llvm/Transforms/Utils/ValueMapper.h" +#include "llvm-c/Core.h" using namespace llvm; /// CloneModule - Return an exact copy of the specified module. This is not as @@ -122,3 +123,11 @@ Module *llvm::CloneModule(const Module *M, ValueToValueMapTy &VMap) { return New; } + +extern "C" { + +LLVMModuleRef LLVMCloneModule(LLVMModuleRef M) { + return wrap(CloneModule(unwrap(M))); +} + +}