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"