diff options
author | Gordon Henriksen <gordonhenriksen@mac.com> | 2007-12-26 21:21:51 +0000 |
---|---|---|
committer | Gordon Henriksen <gordonhenriksen@mac.com> | 2007-12-26 21:21:51 +0000 |
commit | cb44dc87059473f857ca5eb557c6bd7cd4ba2035 (patch) | |
tree | d253b979e4f90c7ba52dc268a5d479530c5a881a /bindings/ocaml/llvm/llvm_ocaml.c | |
parent | ef1a05fd8e9d8d699f359ec6cf45ef91447d0ae3 (diff) | |
download | external_llvm-cb44dc87059473f857ca5eb557c6bd7cd4ba2035.zip external_llvm-cb44dc87059473f857ca5eb557c6bd7cd4ba2035.tar.gz external_llvm-cb44dc87059473f857ca5eb557c6bd7cd4ba2035.tar.bz2 |
Adding an uninitialized builder constructor to the Ocaml bindings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45362 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'bindings/ocaml/llvm/llvm_ocaml.c')
-rw-r--r-- | bindings/ocaml/llvm/llvm_ocaml.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/bindings/ocaml/llvm/llvm_ocaml.c b/bindings/ocaml/llvm/llvm_ocaml.c index 7224439..d8856e7 100644 --- a/bindings/ocaml/llvm/llvm_ocaml.c +++ b/bindings/ocaml/llvm/llvm_ocaml.c @@ -668,7 +668,7 @@ CAMLprim value llvm_incoming(LLVMValueRef PhiNode) { #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 @@ static struct custom_operations builder_ops = { 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 */ |