mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
[OCaml] Add OCaml API for LLVMGetIndices
Summary: This patch adds a thin wrapper around LLVMGetNumIndices and LLVMGetIndices to return the indices of ExtractValue or InsertValue instructions as an OCaml array. It has not seemed to be necessary to expose LLVMGetNumIndices separately. Reviewers: whitequark Reviewed By: whitequark Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D52207 llvm-svn: 342474
This commit is contained in:
parent
7b9800b7a6
commit
1598b84403
@ -538,6 +538,7 @@ external operand : llvalue -> int -> llvalue = "llvm_operand"
|
||||
external operand_use : llvalue -> int -> lluse = "llvm_operand_use"
|
||||
external set_operand : llvalue -> int -> llvalue -> unit = "llvm_set_operand"
|
||||
external num_operands : llvalue -> int = "llvm_num_operands"
|
||||
external indices : llvalue -> int array = "llvm_indices"
|
||||
|
||||
(*--... Operations on constants of (mostly) any type .......................--*)
|
||||
external is_constant : llvalue -> bool = "llvm_is_constant"
|
||||
|
@ -814,6 +814,11 @@ val set_operand : llvalue -> int -> llvalue -> unit
|
||||
val num_operands : llvalue -> int
|
||||
|
||||
|
||||
(** [indices i] returns the indices for the ExtractValue or InsertValue
|
||||
instruction [i].
|
||||
See the [llvm::getIndices] methods. *)
|
||||
val indices : llvalue -> int array
|
||||
|
||||
(** {7 Operations on constants of (mostly) any type} *)
|
||||
|
||||
(** [is_constant v] returns [true] if the value [v] is a constant, [false]
|
||||
|
@ -732,6 +732,19 @@ CAMLprim value llvm_num_operands(LLVMValueRef V) {
|
||||
return Val_int(LLVMGetNumOperands(V));
|
||||
}
|
||||
|
||||
/* llvalue -> int array */
|
||||
CAMLprim value llvm_indices(LLVMValueRef Instr) {
|
||||
CAMLparam0();
|
||||
CAMLlocal1(indices);
|
||||
unsigned n = LLVMGetNumIndices(Instr);
|
||||
const unsigned *Indices = LLVMGetIndices(Instr);
|
||||
indices = caml_alloc(n, 0);
|
||||
for (unsigned i = 0; i < n; i++) {
|
||||
Op_val(indices)[i] = Val_int(Indices[i]);
|
||||
}
|
||||
CAMLreturn(indices);
|
||||
}
|
||||
|
||||
/*--... Operations on constants of (mostly) any type .......................--*/
|
||||
|
||||
/* llvalue -> bool */
|
||||
|
Loading…
Reference in New Issue
Block a user