[PATCH] D98851: [OCaml] Add (get/set)_module_identifer functions
Vaivaswatha Nagaraj via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 18 03:52:27 PDT 2021
vaivaswatha created this revision.
vaivaswatha added a reviewer: jberdine.
Herald added a reviewer: whitequark.
vaivaswatha requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Also fix a bug that crept in when fixing a buildbot failure in https://github.com/llvm/llvm-project/commit/f7be9db6220cb39f0eaa12d2af3abedf0d86c303
https://reviews.llvm.org/D98851
Files:
llvm/bindings/ocaml/llvm/llvm.ml
llvm/bindings/ocaml/llvm/llvm.mli
llvm/bindings/ocaml/llvm/llvm_ocaml.c
llvm/test/Bindings/OCaml/core.ml
Index: llvm/test/Bindings/OCaml/core.ml
===================================================================
--- llvm/test/Bindings/OCaml/core.ml
+++ llvm/test/Bindings/OCaml/core.ml
@@ -596,6 +596,10 @@
begin group "iteration";
let m = create_module context "temp" in
+ insist(get_module_identifier m = "temp");
+ set_module_identifer m "temp2";
+ insist(get_module_identifier m = "temp2");
+
insist (At_end m = global_begin m);
insist (At_start m = global_end m);
Index: llvm/bindings/ocaml/llvm/llvm_ocaml.c
===================================================================
--- llvm/bindings/ocaml/llvm/llvm_ocaml.c
+++ llvm/bindings/ocaml/llvm/llvm_ocaml.c
@@ -49,7 +49,7 @@
CAMLlocal1(String);
if (Str) {
String = caml_alloc_string(Len);
- memcpy(String_val(Str), Str, Len);
+ memcpy(String_val(String), Str, Len);
} else {
String = caml_alloc_string(0);
}
@@ -335,6 +335,19 @@
CAMLreturn(ModuleStr);
}
+/* llmodule -> string */
+CAMLprim value llvm_get_module_identifier(LLVMModuleRef M) {
+ size_t Len;
+ const char *Name = LLVMGetModuleIdentifier(M, &Len);
+ return cstr_to_string(Name, (unsigned)Len);
+}
+
+/* llmodule -> string -> unit */
+CAMLprim value llvm_set_module_identifier(LLVMModuleRef M, value Id) {
+ LLVMSetModuleIdentifier(M, String_val(Id), caml_string_length(Id));
+ return Val_unit;
+}
+
/* llmodule -> string -> unit */
CAMLprim value llvm_set_module_inline_asm(LLVMModuleRef M, value Asm) {
LLVMSetModuleInlineAsm(M, String_val(Asm));
Index: llvm/bindings/ocaml/llvm/llvm.mli
===================================================================
--- llvm/bindings/ocaml/llvm/llvm.mli
+++ llvm/bindings/ocaml/llvm/llvm.mli
@@ -543,6 +543,14 @@
See the method [llvm::Module::getContext] *)
val module_context : llmodule -> llcontext
+(** [get_module_identifier m] returns the module identifier of the
+ specified module. See the method [llvm::Module::getModuleIdentifier] *)
+val get_module_identifier : llmodule -> string
+
+(** [set_module_identifier m id] Sets the module identifier of [m]
+ to [id]. See the method [llvm::Module::setModuleIdentifier] *)
+val set_module_identifer : llmodule -> string -> unit
+
(** [get_module_flag m k] Return the corresponding value if key [k] appears in
the module flags of [m], otherwise return None
See the method [llvm::Module::getModuleFlag] *)
Index: llvm/bindings/ocaml/llvm/llvm.ml
===================================================================
--- llvm/bindings/ocaml/llvm/llvm.ml
+++ llvm/bindings/ocaml/llvm/llvm.ml
@@ -442,6 +442,13 @@
external set_module_inline_asm : llmodule -> string -> unit
= "llvm_set_module_inline_asm"
external module_context : llmodule -> llcontext = "LLVMGetModuleContext"
+
+external get_module_identifier : llmodule -> string
+ = "llvm_get_module_identifier"
+
+external set_module_identifer : llmodule -> string -> unit
+ = "llvm_set_module_identifier"
+
external get_module_flag : llmodule -> string -> llmetadata option
= "llvm_get_module_flag"
external add_module_flag : llmodule -> ModuleFlagBehavior.t ->
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D98851.331510.patch
Type: text/x-patch
Size: 3244 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210318/d6c2469c/attachment.bin>
More information about the llvm-commits
mailing list