[llvm] r194382 - [OCaml] Add missing Llvm_target functions

Peter Zotov whitequark at whitequark.org
Mon Nov 11 06:47:28 PST 2013


Author: whitequark
Date: Mon Nov 11 08:47:28 2013
New Revision: 194382

URL: http://llvm.org/viewvc/llvm-project?rev=194382&view=rev
Log:
[OCaml] Add missing Llvm_target functions

Modified:
    llvm/trunk/bindings/ocaml/target/llvm_target.ml
    llvm/trunk/bindings/ocaml/target/llvm_target.mli
    llvm/trunk/bindings/ocaml/target/target_ocaml.c
    llvm/trunk/test/Bindings/Ocaml/target.ml

Modified: llvm/trunk/bindings/ocaml/target/llvm_target.ml
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/target/llvm_target.ml?rev=194382&r1=194381&r2=194382&view=diff
==============================================================================
--- llvm/trunk/bindings/ocaml/target/llvm_target.ml (original)
+++ llvm/trunk/bindings/ocaml/target/llvm_target.ml Mon Nov 11 08:47:28 2013
@@ -26,6 +26,11 @@ external byte_order : DataLayout.t -> En
 external pointer_size : DataLayout.t -> int = "llvm_pointer_size"
 external intptr_type : DataLayout.t -> Llvm.llcontext -> Llvm.lltype
                      = "llvm_intptr_type"
+external qualified_pointer_size : DataLayout.t -> int -> int
+                                = "llvm_qualified_pointer_size"
+external qualified_intptr_type : DataLayout.t -> Llvm.llcontext ->
+                                 int -> Llvm.lltype
+                               = "llvm_qualified_intptr_type"
 external size_in_bits : DataLayout.t -> Llvm.lltype -> Int64.t
                       = "llvm_size_in_bits"
 external store_size : DataLayout.t -> Llvm.lltype -> Int64.t = "llvm_store_size"

Modified: llvm/trunk/bindings/ocaml/target/llvm_target.mli
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/target/llvm_target.mli?rev=194382&r1=194381&r2=194382&view=diff
==============================================================================
--- llvm/trunk/bindings/ocaml/target/llvm_target.mli (original)
+++ llvm/trunk/bindings/ocaml/target/llvm_target.mli Mon Nov 11 08:47:28 2013
@@ -50,6 +50,18 @@ external pointer_size : DataLayout.t ->
 external intptr_type : DataLayout.t -> Llvm.llcontext -> Llvm.lltype
                      = "llvm_intptr_type"
 
+(** Returns the pointer size in bytes for a target in a given address space.
+    See the method llvm::DataLayout::getPointerSize. *)
+external qualified_pointer_size : DataLayout.t -> int -> int
+                                = "llvm_qualified_pointer_size"
+
+(** Returns the integer type that is the same size as a pointer on a target
+    in a given address space.
+    See the method llvm::DataLayout::getIntPtrType. *)
+external qualified_intptr_type : DataLayout.t -> Llvm.llcontext ->
+                                 int -> Llvm.lltype
+                               = "llvm_qualified_intptr_type"
+
 (** Computes the size of a type in bits for a target.
     See the method llvm::DataLayout::getTypeSizeInBits. *)
 external size_in_bits : DataLayout.t -> Llvm.lltype -> Int64.t

Modified: llvm/trunk/bindings/ocaml/target/target_ocaml.c
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/target/target_ocaml.c?rev=194382&r1=194381&r2=194382&view=diff
==============================================================================
--- llvm/trunk/bindings/ocaml/target/target_ocaml.c (original)
+++ llvm/trunk/bindings/ocaml/target/target_ocaml.c Mon Nov 11 08:47:28 2013
@@ -77,6 +77,17 @@ CAMLprim LLVMTypeRef llvm_intptr_type(va
   return LLVMIntPtrTypeInContext(C, TargetData_val(TD));;
 }
 
+/* DataLayout.t -> int -> int */
+CAMLprim value llvm_qualified_pointer_size(LLVMTargetDataRef TD, value AS) {
+  return Val_int(LLVMPointerSizeForAS(TargetData_val(TD), Int_val(AS)));
+}
+
+/* DataLayout.t -> int -> Llvm.lltype */
+CAMLprim LLVMTypeRef llvm_qualified_intptr_type(LLVMTargetDataRef TD,
+                                                LLVMContextRef C, value AS) {
+  return LLVMIntPtrTypeForASInContext(C, TargetData_val(TD), Int_val(AS));
+}
+
 /* DataLayout.t -> Llvm.lltype -> Int64.t */
 CAMLprim value llvm_size_in_bits(value TD, LLVMTypeRef Ty) {
   return caml_copy_int64(LLVMSizeOfTypeInBits(TargetData_val(TD), Ty));

Modified: llvm/trunk/test/Bindings/Ocaml/target.ml
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bindings/Ocaml/target.ml?rev=194382&r1=194381&r2=194382&view=diff
==============================================================================
--- llvm/trunk/test/Bindings/Ocaml/target.ml (original)
+++ llvm/trunk/test/Bindings/Ocaml/target.ml Mon Nov 11 08:47:28 2013
@@ -47,6 +47,8 @@ let test_target_data () =
   assert_equal (byte_order td) Endian.Little;
   assert_equal (pointer_size td) 4;
   assert_equal (intptr_type td context) i32_type;
+  assert_equal (qualified_pointer_size td 0) 4;
+  assert_equal (qualified_intptr_type td context 0) i32_type;
   assert_equal (size_in_bits td sty) (Int64.of_int 96);
   assert_equal (store_size td sty) (Int64.of_int 12);
   assert_equal (abi_size td sty) (Int64.of_int 12);





More information about the llvm-commits mailing list