diff options
author | Gordon Henriksen <gordonhenriksen@mac.com> | 2007-12-17 16:08:32 +0000 |
---|---|---|
committer | Gordon Henriksen <gordonhenriksen@mac.com> | 2007-12-17 16:08:32 +0000 |
commit | 9d1b2abbf03926b1ff5d22a2cb4b856d10a3d1f9 (patch) | |
tree | 7c0fd6ef432b8676a5cf19c374b330842c4e5456 /bindings/ocaml/llvm/llvm_ocaml.c | |
parent | fb623c6d2e3cc5ac9dc22e6357ae1815ff3f7d37 (diff) | |
download | external_llvm-9d1b2abbf03926b1ff5d22a2cb4b856d10a3d1f9.zip external_llvm-9d1b2abbf03926b1ff5d22a2cb4b856d10a3d1f9.tar.gz external_llvm-9d1b2abbf03926b1ff5d22a2cb4b856d10a3d1f9.tar.bz2 |
C and Ocaml bindings for address spaces, for that burgeoning market
for Ocaml-based compilers targeting embedded devices. :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45096 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'bindings/ocaml/llvm/llvm_ocaml.c')
-rw-r--r-- | bindings/ocaml/llvm/llvm_ocaml.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/bindings/ocaml/llvm/llvm_ocaml.c b/bindings/ocaml/llvm/llvm_ocaml.c index f9d7e6f..43b6167 100644 --- a/bindings/ocaml/llvm/llvm_ocaml.c +++ b/bindings/ocaml/llvm/llvm_ocaml.c @@ -163,6 +163,17 @@ CAMLprim LLVMTypeRef llvm_array_type(LLVMTypeRef ElementTy, value Count) { return LLVMArrayType(ElementTy, Int_val(Count)); } +/* lltype -> lltype */ +CAMLprim LLVMTypeRef llvm_pointer_type(LLVMTypeRef ElementTy) { + return LLVMPointerType(ElementTy, 0); +} + +/* lltype -> int -> lltype */ +CAMLprim LLVMTypeRef llvm_qualified_pointer_type(LLVMTypeRef ElementTy, + value AddressSpace) { + return LLVMPointerType(ElementTy, Int_val(AddressSpace)); +} + /* lltype -> int -> lltype */ CAMLprim LLVMTypeRef llvm_vector_type(LLVMTypeRef ElementTy, value Count) { return LLVMVectorType(ElementTy, Int_val(Count)); @@ -174,6 +185,11 @@ CAMLprim value llvm_array_length(LLVMTypeRef ArrayTy) { } /* lltype -> int */ +CAMLprim value llvm_address_space(LLVMTypeRef PtrTy) { + return Val_int(LLVMGetPointerAddressSpace(PtrTy)); +} + +/* lltype -> int */ CAMLprim value llvm_vector_size(LLVMTypeRef VectorTy) { return Val_int(LLVMGetVectorSize(VectorTy)); } @@ -399,7 +415,7 @@ CAMLprim LLVMValueRef llvm_declare_global(LLVMTypeRef Ty, value Name, LLVMValueRef GlobalVar; if ((GlobalVar = LLVMGetNamedGlobal(M, String_val(Name)))) { if (LLVMGetElementType(LLVMTypeOf(GlobalVar)) != Ty) - return LLVMConstBitCast(GlobalVar, LLVMPointerType(Ty)); + return LLVMConstBitCast(GlobalVar, LLVMPointerType(Ty, 0)); return GlobalVar; } return LLVMAddGlobal(M, Ty, String_val(Name)); @@ -476,7 +492,7 @@ CAMLprim LLVMValueRef llvm_declare_function(value Name, LLVMTypeRef Ty, LLVMValueRef Fn; if ((Fn = LLVMGetNamedFunction(M, String_val(Name)))) { if (LLVMGetElementType(LLVMTypeOf(Fn)) != Ty) - return LLVMConstBitCast(Fn, LLVMPointerType(Ty)); + return LLVMConstBitCast(Fn, LLVMPointerType(Ty, 0)); return Fn; } return LLVMAddFunction(M, String_val(Name), Ty); |