[OCaml] Accept context explicitly in Llvm_target functions
authorPeter Zotov <whitequark@whitequark.org>
Mon, 11 Nov 2013 14:47:20 +0000 (14:47 +0000)
committerPeter Zotov <whitequark@whitequark.org>
Mon, 11 Nov 2013 14:47:20 +0000 (14:47 +0000)
Llvm_target.intptr_type used to implicitly use global context. As
none of other functions in OCaml bindings do, it is changed to
accept context explicitly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194381 91177308-0d34-0410-b5e6-96231b3b80d8

bindings/ocaml/target/llvm_target.ml
bindings/ocaml/target/llvm_target.mli
bindings/ocaml/target/target_ocaml.c
test/Bindings/Ocaml/executionengine.ml
test/Bindings/Ocaml/target.ml

index d892567092fd474dd395af1a4dafc42c7ce40ac5..b6a4d51ebb1261a954cee963af88b9b08eedc030 100644 (file)
@@ -24,7 +24,8 @@ end
 
 external byte_order : DataLayout.t -> Endian.t = "llvm_byte_order"
 external pointer_size : DataLayout.t -> int = "llvm_pointer_size"
-external intptr_type : DataLayout.t -> Llvm.lltype = "llvm_intptr_type"
+external intptr_type : DataLayout.t -> Llvm.llcontext -> Llvm.lltype
+                     = "llvm_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 f5426af1df11bf0b8495fe3c065295276bbc180f..7c255ad4ad782e4a3db2609bca3d0a898754f73f 100644 (file)
@@ -47,7 +47,8 @@ external pointer_size : DataLayout.t -> int = "llvm_pointer_size"
 
 (** Returns the integer type that is the same size as a pointer on a target.
     See the method llvm::DataLayout::getIntPtrType. *)
-external intptr_type : DataLayout.t -> Llvm.lltype = "llvm_intptr_type"
+external intptr_type : DataLayout.t -> Llvm.llcontext -> Llvm.lltype
+                     = "llvm_intptr_type"
 
 (** Computes the size of a type in bits for a target.
     See the method llvm::DataLayout::getTypeSizeInBits. *)
index e45774272787b3951bdb15c7eb6c79a70e6b856d..46bf8dc45489fd5e400154c8247922199f6756ea 100644 (file)
@@ -72,9 +72,9 @@ CAMLprim value llvm_pointer_size(value TD) {
   return Val_int(LLVMPointerSize(TargetData_val(TD)));
 }
 
-/* DataLayout.t -> int -> Llvm.lltype */
-CAMLprim LLVMTypeRef llvm_intptr_type(value TD) {
-  return LLVMIntPtrType(TargetData_val(TD));;
+/* DataLayout.t -> Llvm.llcontext -> Llvm.lltype */
+CAMLprim LLVMTypeRef llvm_intptr_type(value TD, LLVMContextRef C) {
+  return LLVMIntPtrTypeInContext(C, TargetData_val(TD));;
 }
 
 /* DataLayout.t -> Llvm.lltype -> Int64.t */
index c33da626cffb725106ea32b1da1cadcb3e4636c4..9cbeae8832c149d63fe541a95cb228c3ad23f8c3 100644 (file)
@@ -107,7 +107,7 @@ let test_executionengine () =
   let td = ExecutionEngine.target_data ee in
 
   (* Demonstrate that a garbage pointer wasn't returned. *)
-  let ty = intptr_type td in
+  let ty = intptr_type td context in
   if ty != i32_type && ty != i64_type then bomb "target_data did not work";
   
   (* dispose *)
index 0f1aa18e395c6d8fc599132d9ce90722fdd24488..017a886059c17b84d3ec80e65df10d2ba3320538 100644 (file)
@@ -46,7 +46,7 @@ let test_target_data () =
   assert_equal (DataLayout.as_string td) layout;
   assert_equal (byte_order td) Endian.Little;
   assert_equal (pointer_size td) 4;
-  assert_equal (intptr_type td) i32_type;
+  assert_equal (intptr_type td context) 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);