14ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov(*===-- llvm_passmgr_builder.mli - LLVM OCaml Interface -------*- OCaml -*-===*
24ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov *
34ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov *                     The LLVM Compiler Infrastructure
44ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov *
54ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov * This file is distributed under the University of Illinois Open Source
64ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov * License. See LICENSE.TXT for details.
74ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov *
84ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov *===----------------------------------------------------------------------===*)
94ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov
104ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov(** Pass Manager Builder.
114ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov
124ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov    This interface provides an OCaml API for LLVM pass manager builder
134ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov    from the [LLVMCore] library. *)
144ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov
154ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotovtype t
164ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov
174ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov(** See [llvm::PassManagerBuilder]. *)
184ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotovexternal create : unit -> t
194ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov  = "llvm_pmbuilder_create"
204ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov
214ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov(** See [llvm::PassManagerBuilder::OptLevel]. *)
224ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotovexternal set_opt_level : int -> t -> unit
234ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov  = "llvm_pmbuilder_set_opt_level"
244ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov
254ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov(** See [llvm::PassManagerBuilder::SizeLevel]. *)
264ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotovexternal set_size_level : int -> t -> unit
274ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov  = "llvm_pmbuilder_set_size_level"
284ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov
294ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov(** See [llvm::PassManagerBuilder::DisableUnitAtATime]. *)
304ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotovexternal set_disable_unit_at_a_time : bool -> t -> unit
314ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov  = "llvm_pmbuilder_set_disable_unit_at_a_time"
324ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov
334ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov(** See [llvm::PassManagerBuilder::DisableUnrollLoops]. *)
344ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotovexternal set_disable_unroll_loops : bool -> t -> unit
354ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov  = "llvm_pmbuilder_set_disable_unroll_loops"
364ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov
374ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov(** See [llvm::PassManagerBuilder::Inliner]. *)
384ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotovexternal use_inliner_with_threshold : int -> t -> unit
394ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov  = "llvm_pmbuilder_use_inliner_with_threshold"
404ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov
414ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov(** See [llvm::PassManagerBuilder::populateFunctionPassManager]. *)
424ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotovexternal populate_function_pass_manager
434ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov  : [ `Function ] Llvm.PassManager.t -> t -> unit
444ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov  = "llvm_pmbuilder_populate_function_pass_manager"
454ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov
464ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov(** See [llvm::PassManagerBuilder::populateModulePassManager]. *)
474ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotovexternal populate_module_pass_manager
484ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov  : [ `Module ] Llvm.PassManager.t -> t -> unit
494ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov  = "llvm_pmbuilder_populate_module_pass_manager"
504ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov
514ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov(** See [llvm::PassManagerBuilder::populateLTOPassManager]. *)
524ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotovexternal populate_lto_pass_manager
534ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov  : [ `Module ] Llvm.PassManager.t -> internalize:bool -> run_inliner:bool -> t -> unit
544ebe64ae7ec729b29964b355face33af0c4ce424Peter Zotov  = "llvm_pmbuilder_populate_lto_pass_manager"