mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-28 16:11:29 +00:00
[OCaml] Add functions for accessing metadata nodes.
Patch by Xinyu Zhuang. Differential Revision: http://reviews.llvm.org/D19309 llvm-svn: 273370
This commit is contained in:
parent
7a6ec86fcc
commit
ee462ca194
@ -483,6 +483,8 @@ external mdstring : llcontext -> string -> llvalue = "llvm_mdstring"
|
|||||||
external mdnode : llcontext -> llvalue array -> llvalue = "llvm_mdnode"
|
external mdnode : llcontext -> llvalue array -> llvalue = "llvm_mdnode"
|
||||||
external mdnull : llcontext -> llvalue = "llvm_mdnull"
|
external mdnull : llcontext -> llvalue = "llvm_mdnull"
|
||||||
external get_mdstring : llvalue -> string option = "llvm_get_mdstring"
|
external get_mdstring : llvalue -> string option = "llvm_get_mdstring"
|
||||||
|
external get_mdnode_operands : llvalue -> llvalue array
|
||||||
|
= "llvm_get_mdnode_operands"
|
||||||
external get_named_metadata : llmodule -> string -> llvalue array
|
external get_named_metadata : llmodule -> string -> llvalue array
|
||||||
= "llvm_get_namedmd"
|
= "llvm_get_namedmd"
|
||||||
external add_named_metadata_operand : llmodule -> string -> llvalue -> unit
|
external add_named_metadata_operand : llmodule -> string -> llvalue -> unit
|
||||||
|
@ -852,6 +852,10 @@ val mdnull : llcontext -> llvalue
|
|||||||
See the method [llvm::MDString::getString] *)
|
See the method [llvm::MDString::getString] *)
|
||||||
val get_mdstring : llvalue -> string option
|
val get_mdstring : llvalue -> string option
|
||||||
|
|
||||||
|
(** [get_mdnode_operands v] returns the operands in the MDNode. *)
|
||||||
|
(* See the method [llvm::MDNode::getOperand] *)
|
||||||
|
val get_mdnode_operands : llvalue -> llvalue array
|
||||||
|
|
||||||
(** [get_named_metadata m name] returns all the MDNodes belonging to the named
|
(** [get_named_metadata m name] returns all the MDNodes belonging to the named
|
||||||
metadata (if any).
|
metadata (if any).
|
||||||
See the method [llvm::NamedMDNode::getOperand]. *)
|
See the method [llvm::NamedMDNode::getOperand]. *)
|
||||||
|
@ -734,6 +734,17 @@ CAMLprim value llvm_get_mdstring(LLVMValueRef V) {
|
|||||||
CAMLreturn(Val_int(0));
|
CAMLreturn(Val_int(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CAMLprim value llvm_get_mdnode_operands(LLVMValueRef V) {
|
||||||
|
CAMLparam0();
|
||||||
|
CAMLlocal1(Operands);
|
||||||
|
unsigned int n;
|
||||||
|
|
||||||
|
n = LLVMGetMDNodeNumOperands(V);
|
||||||
|
Operands = alloc(n, 0);
|
||||||
|
LLVMGetMDNodeOperands(V, (LLVMValueRef *) Operands);
|
||||||
|
CAMLreturn(Operands);
|
||||||
|
}
|
||||||
|
|
||||||
/* llmodule -> string -> llvalue array */
|
/* llmodule -> string -> llvalue array */
|
||||||
CAMLprim value llvm_get_namedmd(LLVMModuleRef M, value Name)
|
CAMLprim value llvm_get_namedmd(LLVMModuleRef M, value Name)
|
||||||
{
|
{
|
||||||
|
@ -1122,6 +1122,7 @@ let test_builder () =
|
|||||||
|
|
||||||
insist ((has_metadata i) = true);
|
insist ((has_metadata i) = true);
|
||||||
insist ((metadata i kind) = Some md);
|
insist ((metadata i kind) = Some md);
|
||||||
|
insist ((get_mdnode_operands md) = [| m1; m2 |]);
|
||||||
|
|
||||||
clear_metadata i kind;
|
clear_metadata i kind;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user