From: Peter Zotov Date: Wed, 21 Oct 2015 17:43:02 +0000 (+0000) Subject: [OCaml] Expose Llvm.{set_,}unnamed_addr. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=7d30a2ed8bbfb77386e3198a74f0288aec52e874;p=oota-llvm.git [OCaml] Expose Llvm.{set_,}unnamed_addr. Patch by Jacques-Pascal Deplaix git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250912 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/bindings/ocaml/llvm/llvm.ml b/bindings/ocaml/llvm/llvm.ml index 9a3cb1f0de0..259d57bc068 100644 --- a/bindings/ocaml/llvm/llvm.ml +++ b/bindings/ocaml/llvm/llvm.ml @@ -579,6 +579,8 @@ external global_parent : llvalue -> llmodule = "LLVMGetGlobalParent" external is_declaration : llvalue -> bool = "llvm_is_declaration" external linkage : llvalue -> Linkage.t = "llvm_linkage" external set_linkage : Linkage.t -> llvalue -> unit = "llvm_set_linkage" +external unnamed_addr : llvalue -> bool = "llvm_unnamed_addr" +external set_unnamed_addr : bool -> llvalue -> unit = "llvm_set_unnamed_addr" external section : llvalue -> string = "llvm_section" external set_section : string -> llvalue -> unit = "llvm_set_section" external visibility : llvalue -> Visibility.t = "llvm_visibility" diff --git a/bindings/ocaml/llvm/llvm.mli b/bindings/ocaml/llvm/llvm.mli index dcda02764f5..541c35a2a22 100644 --- a/bindings/ocaml/llvm/llvm.mli +++ b/bindings/ocaml/llvm/llvm.mli @@ -1255,6 +1255,16 @@ val linkage : llvalue -> Linkage.t See the method [llvm::GlobalValue::setLinkage]. *) val set_linkage : Linkage.t -> llvalue -> unit +(** [unnamed_addr g] returns [true] if the global value [g] has the unnamed_addr + attribute. Returns [false] otherwise. + See the method [llvm::GlobalValue::getUnnamedAddr]. *) +val unnamed_addr : llvalue -> bool + +(** [set_unnamed_addr b g] if [b] is [true], sets the unnamed_addr attribute of + the global value [g]. Unset it otherwise. + See the method [llvm::GlobalValue::setUnnamedAddr]. *) +val set_unnamed_addr : bool -> llvalue -> unit + (** [section g] returns the linker section of the global value [g]. See the method [llvm::GlobalValue::getSection]. *) val section : llvalue -> string diff --git a/bindings/ocaml/llvm/llvm_ocaml.c b/bindings/ocaml/llvm/llvm_ocaml.c index 3889f9276cc..b4c47e7475e 100644 --- a/bindings/ocaml/llvm/llvm_ocaml.c +++ b/bindings/ocaml/llvm/llvm_ocaml.c @@ -940,6 +940,17 @@ CAMLprim value llvm_set_linkage(value Linkage, LLVMValueRef Global) { return Val_unit; } +/* llvalue -> bool */ +CAMLprim value llvm_unnamed_addr(LLVMValueRef Global) { + return Val_bool(LLVMHasUnnamedAddr(Global)); +} + +/* bool -> llvalue -> unit */ +CAMLprim value llvm_set_unnamed_addr(value UseUnnamedAddr, LLVMValueRef Global) { + LLVMSetUnnamedAddr(Global, Bool_val(UseUnnamedAddr)); + return Val_unit; +} + /* llvalue -> string */ CAMLprim value llvm_section(LLVMValueRef Global) { return caml_copy_string(LLVMGetSection(Global));