summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 786a43e)
raw | patch | inline | side by side (parent: 786a43e)
author | Peter Zotov <whitequark@whitequark.org> | |
Mon, 11 Nov 2013 14:47:28 +0000 (14:47 +0000) | ||
committer | Peter Zotov <whitequark@whitequark.org> | |
Mon, 11 Nov 2013 14:47:28 +0000 (14:47 +0000) |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194382 91177308-0d34-0410-b5e6-96231b3b80d8
index b6a4d51ebb1261a954cee963af88b9b08eedc030..8a6aabf3c6c8de0278d28779cab898da94415716 100644 (file)
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"
index 7c255ad4ad782e4a3db2609bca3d0a898754f73f..87b70059ae6aba3a810f61612bfa7bdb337aee8a 100644 (file)
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
index 46bf8dc45489fd5e400154c8247922199f6756ea..5178c09fde5f820c0beddcf69a3f926b6697b659 100644 (file)
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));
index 017a886059c17b84d3ec80e65df10d2ba3320538..25a96647b0d7872f47cd33d5133532be7a141f94 100644 (file)
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);