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
This commit is contained in:
Gordon Henriksen
2007-12-26 21:21:51 +00:00
parent 8d2a922814
commit a09a89983b
3 changed files with 24 additions and 11 deletions

View File

@@ -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
};
/* 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);
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) {
LLVMBuilderRef B = LLVMCreateBuilder();
LLVMPositionBuilderBefore(B, Inst);
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 */