aboutsummaryrefslogtreecommitdiff
path: root/bindings/ocaml/target/target_ocaml.c
diff options
context:
space:
mode:
Diffstat (limited to 'bindings/ocaml/target/target_ocaml.c')
-rw-r--r--bindings/ocaml/target/target_ocaml.c25
1 files changed, 3 insertions, 22 deletions
diff --git a/bindings/ocaml/target/target_ocaml.c b/bindings/ocaml/target/target_ocaml.c
index 8f77cb46f132..b63bef6d3d5b 100644
--- a/bindings/ocaml/target/target_ocaml.c
+++ b/bindings/ocaml/target/target_ocaml.c
@@ -15,6 +15,7 @@
|* *|
\*===----------------------------------------------------------------------===*/
+#include "llvm-c/Core.h"
#include "llvm-c/Target.h"
#include "llvm-c/TargetMachine.h"
#include "caml/alloc.h"
@@ -64,13 +65,6 @@ CAMLprim value llvm_datalayout_as_string(value TD) {
return Copy;
}
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> DataLayout.t -> unit */
-CAMLprim value llvm_datalayout_add_to_pass_manager(LLVMPassManagerRef PM,
- value DL) {
- LLVMAddTargetData(DataLayout_val(DL), PM);
- return Val_unit;
-}
-
/* DataLayout.t -> Endian.t */
CAMLprim value llvm_datalayout_byte_order(value DL) {
return Val_int(LLVMByteOrder(DataLayout_val(DL)));
@@ -304,21 +298,8 @@ CAMLprim value llvm_targetmachine_features(value Machine) {
/* TargetMachine.t -> DataLayout.t */
CAMLprim value llvm_targetmachine_data_layout(value Machine) {
- CAMLparam1(Machine);
- CAMLlocal1(DataLayout);
- char *TargetDataCStr;
-
- /* LLVMGetTargetMachineData returns a pointer owned by the TargetMachine,
- so it is impossible to wrap it with llvm_alloc_target_data, which assumes
- that OCaml owns the pointer. */
- LLVMTargetDataRef OrigDataLayout;
- OrigDataLayout = LLVMGetTargetMachineData(TargetMachine_val(Machine));
-
- TargetDataCStr = LLVMCopyStringRepOfTargetData(OrigDataLayout);
- DataLayout = llvm_alloc_data_layout(LLVMCreateTargetData(TargetDataCStr));
- LLVMDisposeMessage(TargetDataCStr);
-
- CAMLreturn(DataLayout);
+ return llvm_alloc_data_layout(LLVMCreateTargetDataLayout(
+ TargetMachine_val(Machine)));
}
/* bool -> TargetMachine.t -> unit */