1(*===-- llvm_passmgr_builder.ml - LLVM OCaml Interface --------*- OCaml -*-===*
2 *
3 *                     The LLVM Compiler Infrastructure
4 *
5 * This file is distributed under the University of Illinois Open Source
6 * License. See LICENSE.TXT for details.
7 *
8 *===----------------------------------------------------------------------===*)
9
10type t
11
12external create : unit -> t
13  = "llvm_pmbuilder_create"
14external set_opt_level : int -> t -> unit
15  = "llvm_pmbuilder_set_opt_level"
16external set_size_level : int -> t -> unit
17  = "llvm_pmbuilder_set_size_level"
18external set_disable_unit_at_a_time : bool -> t -> unit
19  = "llvm_pmbuilder_set_disable_unit_at_a_time"
20external set_disable_unroll_loops : bool -> t -> unit
21  = "llvm_pmbuilder_set_disable_unroll_loops"
22external use_inliner_with_threshold : int -> t -> unit
23  = "llvm_pmbuilder_use_inliner_with_threshold"
24external populate_function_pass_manager
25  : [ `Function ] Llvm.PassManager.t -> t -> unit
26  = "llvm_pmbuilder_populate_function_pass_manager"
27external populate_module_pass_manager
28  : [ `Module ] Llvm.PassManager.t -> t -> unit
29  = "llvm_pmbuilder_populate_module_pass_manager"
30external populate_lto_pass_manager
31  : [ `Module ] Llvm.PassManager.t -> internalize:bool -> run_inliner:bool -> t -> unit
32  = "llvm_pmbuilder_populate_lto_pass_manager"