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 llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits