Author: gordon
Date: Wed Dec 26 15:21:51 2007
New Revision: 45362
URL: http://llvm.org/viewvc/llvm-project?rev=45362&view=rev
Log:
Adding an uninitialized builder constructor to the Ocaml bindings.
Modified:
llvm/trunk/bindings/ocaml/llvm/llvm.ml
llvm/trunk/bindings/ocaml/llvm/llvm.mli
llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c
Modified: llvm/trunk/bindings/ocaml/llvm/llvm.ml
URL:
http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/llvm/llvm.ml?rev=45362&r1=45361&r2=45362&view=diff
==============================================================================
--- llvm/trunk/bindings/ocaml/llvm/llvm.ml (original)
+++ llvm/trunk/bindings/ocaml/llvm/llvm.ml Wed Dec 26 15:21:51 2007
@@ -327,6 +327,8 @@
(*===-- Instruction builders
----------------------------------------------===*)
+external builder: unit-> llbuilder
+ = "llvm_builder"
external builder_before : llvalue -> llbuilder = "llvm_builder_before"
external builder_at_end : llbasicblock -> llbuilder = "llvm_builder_at_end"
external position_before : llvalue -> llbuilder -> unit =
"llvm_position_before"
Modified: llvm/trunk/bindings/ocaml/llvm/llvm.mli
URL:
http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/llvm/llvm.mli?rev=45362&r1=45361&r2=45362&view=diff
==============================================================================
--- llvm/trunk/bindings/ocaml/llvm/llvm.mli (original)
+++ llvm/trunk/bindings/ocaml/llvm/llvm.mli Wed Dec 26 15:21:51 2007
@@ -847,6 +847,12 @@
(*===-- Instruction builders
----------------------------------------------===*)
+(** [builder] creates an instruction builder with no position. It is invalid to
+ use this builder until its position is set with [position_before] or
+ [position_at_end]. See the constructor for [llvm::LLVMBuilder]. **)
+external builder: unit-> llbuilder
+ = "llvm_builder"
+
(** [builder_before ins] creates an instruction builder positioned before the
instruction [isn]. See the constructor for [llvm::LLVMBuilder]. **)
external builder_before : llvalue -> llbuilder = "llvm_builder_before"
Modified: llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c
URL:
http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c?rev=45362&r1=45361&r2=45362&view=diff
==============================================================================
--- llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c (original)
+++ llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c Wed Dec 26 15:21:51 2007
@@ -668,7 +668,7 @@
#define Builder_val(v) (*(LLVMBuilderRef *)(Data_custom_val(v)))
-void llvm_finalize_builder(value B) {
+static void llvm_finalize_builder(value B) {
LLVMDisposeBuilder(Builder_val(B));
}
@@ -681,24 +681,29 @@
custom_deserialize_default
};
+static value alloc_builder(LLVMBuilderRef B) {
+ value V = alloc_custom(&builder_ops, sizeof(LLVMBuilderRef), 0, 1);
+ Builder_val(V) = B;
+ return V;
+}
+
+/* unit-> llbuilder */
+CAMLprim value llvm_builder(value Unit) {
+ return alloc_builder(LLVMCreateBuilder());
+}
+
/* llvalue -> llbuilder */
CAMLprim value llvm_builder_before(LLVMValueRef Inst) {
- value V;
LLVMBuilderRef B = LLVMCreateBuilder();
LLVMPositionBuilderBefore(B, Inst);
- V = alloc_custom(&builder_ops, sizeof(LLVMBuilderRef), 0, 1);
- Builder_val(V) = B;
- return V;
+ return alloc_builder(B);
}
/* llbasicblock -> llbuilder */
CAMLprim value llvm_builder_at_end(LLVMBasicBlockRef BB) {
- value V;
LLVMBuilderRef B = LLVMCreateBuilder();
LLVMPositionBuilderAtEnd(B, BB);
- V = alloc_custom(&builder_ops, sizeof(LLVMBuilderRef), 0, 1);
- Builder_val(V) = B;
- return V;
+ return alloc_builder(B);
}
/* llvalue -> llbuilder -> unit */
_______________________________________________
llvm-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits