[llvm] r224782 - Finish removing DestroySource.

Filip Pizlo fpizlo at apple.com
Tue Feb 24 17:09:26 PST 2015


> On Feb 24, 2015, at 5:08 PM, Hans Wennborg <hans at chromium.org> wrote:
> 
> On Tue, Feb 24, 2015 at 4:59 PM, Filip Pizlo <fpizlo at apple.com <mailto:fpizlo at apple.com>> wrote:
>> Good idea.  I'll incorporate it into my patch.
> 
> How does that help users using LLVMLinkerPreserveSource?

Compiler error indicating that they are using something that has no effect.

-Filip


> 
> 
>>> On Feb 24, 2015, at 4:59 PM, Rafael EspĂ­ndola <rafael.espindola at gmail.com <mailto:rafael.espindola at gmail.com>> wrote:
>>> 
>>> Should we name LLVMLinkerPreserveSource something like
>>> LLVMLinkerPreserveSourceRemoved?
>>> 
>>> On 24 February 2015 at 18:46, Filip Pizlo <fpizlo at apple.com <mailto:fpizlo at apple.com>> wrote:
>>>> Proposed fix:
>>>> 
>>>> 
>>>> 
>>>> 
>>>> OK to commit?
>>>> 
>>>> -Filip
>>>> 
>>>> 
>>>>> On Feb 24, 2015, at 3:39 PM, Filip Pizlo <fpizlo at apple.com> wrote:
>>>>> 
>>>>> This change breaks the WebKit build.
>>>>> 
>>>>> The removal of the LLVMLinkerMode type from the C API violates the principle of C API stability.  The latest release of LLVM has this type, which makes it subject to the usual API stability rules.
>>>>> 
>>>>> What do you recommend we do?  Maybe just bringing back the enum is sufficient.
>>>>> 
>>>>> -Filip
>>>>> 
>>>>> 
>>>>>> On Dec 23, 2014, at 11:16 AM, Rafael Espindola <rafael.espindola at gmail.com> wrote:
>>>>>> 
>>>>>> Author: rafael
>>>>>> Date: Tue Dec 23 13:16:45 2014
>>>>>> New Revision: 224782
>>>>>> 
>>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=224782&view=rev
>>>>>> Log:
>>>>>> Finish removing DestroySource.
>>>>>> 
>>>>>> Fixes pr21901.
>>>>>> 
>>>>>> Modified:
>>>>>> llvm/trunk/bindings/go/llvm/linker.go
>>>>>> llvm/trunk/bindings/ocaml/linker/linker_ocaml.c
>>>>>> llvm/trunk/bindings/ocaml/linker/llvm_linker.ml
>>>>>> llvm/trunk/bindings/ocaml/linker/llvm_linker.mli
>>>>>> llvm/trunk/include/llvm-c/Linker.h
>>>>>> llvm/trunk/lib/Linker/LinkModules.cpp
>>>>>> llvm/trunk/test/Bindings/OCaml/linker.ml
>>>>>> 
>>>>>> Modified: llvm/trunk/bindings/go/llvm/linker.go
>>>>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/go/llvm/linker.go?rev=224782&r1=224781&r2=224782&view=diff
>>>>>> ==============================================================================
>>>>>> --- llvm/trunk/bindings/go/llvm/linker.go (original)
>>>>>> +++ llvm/trunk/bindings/go/llvm/linker.go Tue Dec 23 13:16:45 2014
>>>>>> @@ -20,16 +20,9 @@ package llvm
>>>>>> import "C"
>>>>>> import "errors"
>>>>>> 
>>>>>> -type LinkerMode C.LLVMLinkerMode
>>>>>> -
>>>>>> -const (
>>>>>> -    LinkerDestroySource  = C.LLVMLinkerDestroySource
>>>>>> -    LinkerPreserveSource = C.LLVMLinkerPreserveSource
>>>>>> -)
>>>>>> -
>>>>>> -func LinkModules(Dest, Src Module, Mode LinkerMode) error {
>>>>>> +func LinkModules(Dest, Src Module) error {
>>>>>>    var cmsg *C.char
>>>>>> -    failed := C.LLVMLinkModules(Dest.C, Src.C, C.LLVMLinkerMode(Mode), &cmsg)
>>>>>> +    failed := C.LLVMLinkModules(Dest.C, Src.C, 0, &cmsg)
>>>>>>    if failed != 0 {
>>>>>>            err := errors.New(C.GoString(cmsg))
>>>>>>            C.LLVMDisposeMessage(cmsg)
>>>>>> 
>>>>>> Modified: llvm/trunk/bindings/ocaml/linker/linker_ocaml.c
>>>>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/linker/linker_ocaml.c?rev=224782&r1=224781&r2=224782&view=diff
>>>>>> ==============================================================================
>>>>>> --- llvm/trunk/bindings/ocaml/linker/linker_ocaml.c (original)
>>>>>> +++ llvm/trunk/bindings/ocaml/linker/linker_ocaml.c Tue Dec 23 13:16:45 2014
>>>>>> @@ -23,11 +23,11 @@
>>>>>> 
>>>>>> void llvm_raise(value Prototype, char *Message);
>>>>>> 
>>>>>> -/* llmodule -> llmodule -> Mode.t -> unit */
>>>>>> -CAMLprim value llvm_link_modules(LLVMModuleRef Dst, LLVMModuleRef Src, value Mode) {
>>>>>> +/* llmodule -> llmodule -> unit */
>>>>>> +CAMLprim value llvm_link_modules(LLVMModuleRef Dst, LLVMModuleRef Src) {
>>>>>> char* Message;
>>>>>> 
>>>>>> -  if (LLVMLinkModules(Dst, Src, Int_val(Mode), &Message))
>>>>>> +  if (LLVMLinkModules(Dst, Src, 0, &Message))
>>>>>>  llvm_raise(*caml_named_value("Llvm_linker.Error"), Message);
>>>>>> 
>>>>>> return Val_unit;
>>>>>> 
>>>>>> Modified: llvm/trunk/bindings/ocaml/linker/llvm_linker.ml
>>>>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/linker/llvm_linker.ml?rev=224782&r1=224781&r2=224782&view=diff
>>>>>> ==============================================================================
>>>>>> --- llvm/trunk/bindings/ocaml/linker/llvm_linker.ml (original)
>>>>>> +++ llvm/trunk/bindings/ocaml/linker/llvm_linker.ml Tue Dec 23 13:16:45 2014
>>>>>> @@ -11,11 +11,5 @@ exception Error of string
>>>>>> 
>>>>>> let () = Callback.register_exception "Llvm_linker.Error" (Error "")
>>>>>> 
>>>>>> -module Mode = struct
>>>>>> -  type t =
>>>>>> -  | DestroySource
>>>>>> -  | PreserveSource
>>>>>> -end
>>>>>> -
>>>>>> -external link_modules : Llvm.llmodule -> Llvm.llmodule -> Mode.t -> unit
>>>>>> +external link_modules : Llvm.llmodule -> Llvm.llmodule -> unit
>>>>>>                    = "llvm_link_modules"
>>>>>> 
>>>>>> Modified: llvm/trunk/bindings/ocaml/linker/llvm_linker.mli
>>>>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/linker/llvm_linker.mli?rev=224782&r1=224781&r2=224782&view=diff
>>>>>> ==============================================================================
>>>>>> --- llvm/trunk/bindings/ocaml/linker/llvm_linker.mli (original)
>>>>>> +++ llvm/trunk/bindings/ocaml/linker/llvm_linker.mli Tue Dec 23 13:16:45 2014
>>>>>> @@ -14,13 +14,6 @@
>>>>>> 
>>>>>> exception Error of string
>>>>>> 
>>>>>> -(** Linking mode. *)
>>>>>> -module Mode : sig
>>>>>> -  type t =
>>>>>> -  | DestroySource
>>>>>> -  | PreserveSource
>>>>>> -end
>>>>>> -
>>>>>> (** [link_modules dst src mode] links [src] into [dst], raising [Error]
>>>>>>  if the linking fails. *)
>>>>>> -val link_modules : Llvm.llmodule -> Llvm.llmodule -> Mode.t -> unit
>>>>>> \ No newline at end of file
>>>>>> +val link_modules : Llvm.llmodule -> Llvm.llmodule -> unit
>>>>>> \ No newline at end of file
>>>>>> 
>>>>>> Modified: llvm/trunk/include/llvm-c/Linker.h
>>>>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm-c/Linker.h?rev=224782&r1=224781&r2=224782&view=diff
>>>>>> ==============================================================================
>>>>>> --- llvm/trunk/include/llvm-c/Linker.h (original)
>>>>>> +++ llvm/trunk/include/llvm-c/Linker.h Tue Dec 23 13:16:45 2014
>>>>>> @@ -20,20 +20,13 @@
>>>>>> extern "C" {
>>>>>> #endif
>>>>>> 
>>>>>> -
>>>>>> -typedef enum {
>>>>>> -  LLVMLinkerDestroySource = 0, /* Allow source module to be destroyed. */
>>>>>> -  LLVMLinkerPreserveSource = 1 /* Preserve the source module. */
>>>>>> -} 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. */
>>>>>> LLVMBool LLVMLinkModules(LLVMModuleRef Dest, LLVMModuleRef Src,
>>>>>> -                         LLVMLinkerMode Mode, char **OutMessage);
>>>>>> +                         unsigned Unused, char **OutMessage);
>>>>>> 
>>>>>> #ifdef __cplusplus
>>>>>> }
>>>>>> 
>>>>>> Modified: llvm/trunk/lib/Linker/LinkModules.cpp
>>>>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Linker/LinkModules.cpp?rev=224782&r1=224781&r2=224782&view=diff
>>>>>> ==============================================================================
>>>>>> --- llvm/trunk/lib/Linker/LinkModules.cpp (original)
>>>>>> +++ llvm/trunk/lib/Linker/LinkModules.cpp Tue Dec 23 13:16:45 2014
>>>>>> @@ -1739,7 +1739,7 @@ bool Linker::LinkModules(Module *Dest, M
>>>>>> //===----------------------------------------------------------------------===//
>>>>>> 
>>>>>> LLVMBool LLVMLinkModules(LLVMModuleRef Dest, LLVMModuleRef Src,
>>>>>> -                         LLVMLinkerMode Mode, char **OutMessages) {
>>>>>> +                         unsigned Unused, char **OutMessages) {
>>>>>> Module *D = unwrap(Dest);
>>>>>> std::string Message;
>>>>>> raw_string_ostream Stream(Message);
>>>>>> 
>>>>>> Modified: llvm/trunk/test/Bindings/OCaml/linker.ml
>>>>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bindings/OCaml/linker.ml?rev=224782&r1=224781&r2=224782&view=diff
>>>>>> ==============================================================================
>>>>>> --- llvm/trunk/test/Bindings/OCaml/linker.ml (original)
>>>>>> +++ llvm/trunk/test/Bindings/OCaml/linker.ml Tue Dec 23 13:16:45 2014
>>>>>> @@ -45,7 +45,7 @@ let test_linker () =
>>>>>> 
>>>>>> let m1 = make_module "one"
>>>>>> and m2 = make_module "two" in
>>>>>> -  link_modules m1 m2 Mode.DestroySource;
>>>>>> +  link_modules m1 m2;
>>>>>> dispose_module m1;
>>>>>> 
>>>>>> let m1 = make_module "one"
>>>>>> 
>>>>>> 
>>>>>> _______________________________________________
>>>>>> llvm-commits mailing list
>>>>>> llvm-commits at cs.uiuc.edu
>>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> llvm-commits mailing list
>>>>> llvm-commits at cs.uiuc.edu
>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>>> 
>>>> 
>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu <mailto:llvm-commits at cs.uiuc.edu>
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits <http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150224/b01200c6/attachment.html>


More information about the llvm-commits mailing list