From 786a43e2d8f98034046b7fd3a78d94e57a466895 Mon Sep 17 00:00:00 2001 From: Peter Zotov Date: Mon, 11 Nov 2013 14:47:20 +0000 Subject: [PATCH] [OCaml] Accept context explicitly in Llvm_target functions 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 | 3 ++- bindings/ocaml/target/llvm_target.mli | 3 ++- bindings/ocaml/target/target_ocaml.c | 6 +++--- test/Bindings/Ocaml/executionengine.ml | 2 +- test/Bindings/Ocaml/target.ml | 2 +- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/bindings/ocaml/target/llvm_target.ml b/bindings/ocaml/target/llvm_target.ml index d892567092f..b6a4d51ebb1 100644 --- a/bindings/ocaml/target/llvm_target.ml +++ b/bindings/ocaml/target/llvm_target.ml @@ -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" diff --git a/bindings/ocaml/target/llvm_target.mli b/bindings/ocaml/target/llvm_target.mli index f5426af1df1..7c255ad4ad7 100644 --- a/bindings/ocaml/target/llvm_target.mli +++ b/bindings/ocaml/target/llvm_target.mli @@ -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. *) diff --git a/bindings/ocaml/target/target_ocaml.c b/bindings/ocaml/target/target_ocaml.c index e4577427278..46bf8dc4548 100644 --- a/bindings/ocaml/target/target_ocaml.c +++ b/bindings/ocaml/target/target_ocaml.c @@ -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 */ diff --git a/test/Bindings/Ocaml/executionengine.ml b/test/Bindings/Ocaml/executionengine.ml index c33da626cff..9cbeae8832c 100644 --- a/test/Bindings/Ocaml/executionengine.ml +++ b/test/Bindings/Ocaml/executionengine.ml @@ -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 *) diff --git a/test/Bindings/Ocaml/target.ml b/test/Bindings/Ocaml/target.ml index 0f1aa18e395..017a886059c 100644 --- a/test/Bindings/Ocaml/target.ml +++ b/test/Bindings/Ocaml/target.ml @@ -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); -- 2.34.1