[OCaml] Expose Llvm_target.TargetMachine.add_analysis_passes.
authorPeter Zotov <whitequark@whitequark.org>
Wed, 29 Oct 2014 08:16:14 +0000 (08:16 +0000)
committerPeter Zotov <whitequark@whitequark.org>
Wed, 29 Oct 2014 08:16:14 +0000 (08:16 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220846 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/target.ml

index aadd90f5518af1fbca715ef553d6c4ff30d91cd6..bd7388e29fa649e39ea188e2c3b110e341144834 100644 (file)
@@ -126,6 +126,8 @@ module TargetMachine = struct
                     = "llvm_targetmachine_features"
   external data_layout : t -> DataLayout.t
                        = "llvm_targetmachine_data_layout"
+  external add_analysis_passes : [< Llvm.PassManager.any ] Llvm.PassManager.t -> t -> unit
+                               = "llvm_targetmachine_add_analysis_passes"
   external set_verbose_asm : bool -> t -> unit
                            = "llvm_targetmachine_set_verbose_asm"
   external emit_to_file : Llvm.llmodule -> CodeGenFileType.t -> string ->
index ca91e0d9105e009f93138ac8fd473b0ac5547017..676bc613c649c4b21c86d29f5b881ba17c246dad 100644 (file)
@@ -207,6 +207,10 @@ module TargetMachine : sig
   (** Returns the data layout of this target machine. *)
   val data_layout : t -> DataLayout.t
 
+  (** Adds the target-specific analysis passes to the pass manager.
+      See [llvm::TargetMachine::addAnalysisPasses]. *)
+  val add_analysis_passes : [< Llvm.PassManager.any ] Llvm.PassManager.t -> t -> unit
+
   (** Sets the assembly verbosity of this target machine.
       See [llvm::TargetMachine::setAsmVerbosity]. *)
   val set_verbose_asm : bool -> t -> unit
index fea3eff174ae62b8d58949793836ea023e87c7c6..efb5d9bd51e55fd8620059b6dc46c6fc2452d6b8 100644 (file)
@@ -374,3 +374,10 @@ CAMLprim LLVMMemoryBufferRef llvm_targetmachine_emit_to_memory_buffer(
 
   return Buffer;
 }
+
+/* TargetMachine.t -> Llvm.PassManager.t -> unit */
+CAMLprim value llvm_targetmachine_add_analysis_passes(LLVMPassManagerRef PM,
+                                                      value Machine) {
+  LLVMAddAnalysisPasses(TargetMachine_val(Machine), PM);
+  return Val_unit;
+}
index 35135880e29fee440b62634590f2f467a50b75cd..e431fa4a25422d87061c22a2b90168d87f654f0a 100644 (file)
@@ -87,7 +87,9 @@ let test_target_machine () =
   assert_equal (TM.cpu machine) "";
   assert_equal (TM.features machine) "";
   ignore (TM.data_layout machine);
-  TM.set_verbose_asm true machine
+  TM.set_verbose_asm true machine;
+  let pm = PassManager.create () in
+  TM.add_analysis_passes pm machine
 
 
 (*===-- Code Emission -----------------------------------------------------===*)