From 0a5c3015f8335e2c074074892c0a1e8395b68651 Mon Sep 17 00:00:00 2001 From: Juergen Ributzka Date: Mon, 2 Mar 2015 18:59:38 +0000 Subject: [PATCH] Restore LLVMLinkModules C API until it is properly deprecated. Add the enum "LLVMLinkerMode" back for backwards-compatibility and add the linker mode parameter back to the "LLVMLinkModules" function. The paramter is ignored and has no effect. Patch provided by: Filip Pizlo Reviewed by: Rafael and Sean git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230988 91177308-0d34-0410-b5e6-96231b3b80d8 --- bindings/go/llvm/linker.go | 2 +- include/llvm-c/Linker.h | 14 ++++++++++++-- lib/Linker/LinkModules.cpp | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/bindings/go/llvm/linker.go b/bindings/go/llvm/linker.go index 64d794efb94..f64f66c858e 100644 --- a/bindings/go/llvm/linker.go +++ b/bindings/go/llvm/linker.go @@ -22,7 +22,7 @@ import "errors" func LinkModules(Dest, Src Module) error { var cmsg *C.char - failed := C.LLVMLinkModules(Dest.C, Src.C, 0, &cmsg) + failed := C.LLVMLinkModules(Dest.C, Src.C, C.LLVMLinkerDestroySource, &cmsg) if failed != 0 { err := errors.New(C.GoString(cmsg)) C.LLVMDisposeMessage(cmsg) diff --git a/include/llvm-c/Linker.h b/include/llvm-c/Linker.h index cedde5ea8e3..9f98a3342d0 100644 --- a/include/llvm-c/Linker.h +++ b/include/llvm-c/Linker.h @@ -20,13 +20,23 @@ extern "C" { #endif +/* This enum is provided for backwards-compatibility only. It has no effect. */ +typedef enum { + LLVMLinkerDestroySource = 0, /* This is the default behavior. */ + LLVMLinkerPreserveSource_Removed = 1 /* This option has been deprecated and + should not be used. */ +} LLVMLinkerMode; + /* Links the source module into the destination module, taking ownership * of the source module away from the caller. Optionally returns a * human-readable description of any errors that occurred in linking. * OutMessage must be disposed with LLVMDisposeMessage. The return value - * is true if an error occurred, false otherwise. */ + * is true if an error occurred, false otherwise. + * + * Note that the linker mode parameter \p Unused is no longer used, and has + * no effect. */ LLVMBool LLVMLinkModules(LLVMModuleRef Dest, LLVMModuleRef Src, - unsigned Unused, char **OutMessage); + LLVMLinkerMode Unused, char **OutMessage); #ifdef __cplusplus } diff --git a/lib/Linker/LinkModules.cpp b/lib/Linker/LinkModules.cpp index e6d9acc5098..e09f02e7797 100644 --- a/lib/Linker/LinkModules.cpp +++ b/lib/Linker/LinkModules.cpp @@ -1777,7 +1777,7 @@ bool Linker::LinkModules(Module *Dest, Module *Src) { //===----------------------------------------------------------------------===// LLVMBool LLVMLinkModules(LLVMModuleRef Dest, LLVMModuleRef Src, - unsigned Unused, char **OutMessages) { + LLVMLinkerMode Unused, char **OutMessages) { Module *D = unwrap(Dest); std::string Message; raw_string_ostream Stream(Message); -- 2.34.1