1 (*===-- llvm_ipo.mli - LLVM OCaml Interface -------------------*- OCaml -*-===*
3 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 * See https://llvm.org/LICENSE.txt for license information.
5 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 *===----------------------------------------------------------------------===*)
11 This interface provides an OCaml API for LLVM interprocedural optimizations, the
12 classes in the [LLVMIPO] library. *)
14 (** See the [llvm::createAddArgumentPromotionPass] function. *)
15 external add_argument_promotion
16 : [ `Module
] Llvm.PassManager.t
-> unit
17 = "llvm_add_argument_promotion"
19 (** See the [llvm::createConstantMergePass] function. *)
20 external add_constant_merge
21 : [ `Module
] Llvm.PassManager.t
-> unit
22 = "llvm_add_constant_merge"
24 (** See the [llvm::createDeadArgEliminationPass] function. *)
25 external add_dead_arg_elimination
26 : [ `Module
] Llvm.PassManager.t
-> unit
27 = "llvm_add_dead_arg_elimination"
29 (** See the [llvm::createFunctionAttrsPass] function. *)
30 external add_function_attrs
31 : [ `Module
] Llvm.PassManager.t
-> unit
32 = "llvm_add_function_attrs"
34 (** See the [llvm::createFunctionInliningPass] function. *)
35 external add_function_inlining
36 : [ `Module
] Llvm.PassManager.t
-> unit
37 = "llvm_add_function_inlining"
39 (** See the [llvm::createAlwaysInlinerPass] function. *)
40 external add_always_inliner
41 : [ `Module
] Llvm.PassManager.t
-> unit
42 = "llvm_add_always_inliner"
44 (** See the [llvm::createGlobalDCEPass] function. *)
45 external add_global_dce
46 : [ `Module
] Llvm.PassManager.t
-> unit
47 = "llvm_add_global_dce"
49 (** See the [llvm::createGlobalOptimizerPass] function. *)
50 external add_global_optimizer
51 : [ `Module
] Llvm.PassManager.t
-> unit
52 = "llvm_add_global_optimizer"
54 (** See the [llvm::createIPConstantPropagationPass] function. *)
55 external add_ipc_propagation
56 : [ `Module
] Llvm.PassManager.t
-> unit
57 = "llvm_add_ip_constant_propagation"
59 (** See the [llvm::createPruneEHPass] function. *)
61 : [ `Module
] Llvm.PassManager.t
-> unit
64 (** See the [llvm::createIPSCCPPass] function. *)
66 : [ `Module
] Llvm.PassManager.t
-> unit
69 (** See the [llvm::createInternalizePass] function. *)
70 external add_internalize
71 : [ `Module
] Llvm.PassManager.t
-> all_but_main
:bool -> unit
72 = "llvm_add_internalize"
74 (** See the [llvm::createStripDeadPrototypesPass] function. *)
75 external add_strip_dead_prototypes
76 : [ `Module
] Llvm.PassManager.t
-> unit
77 = "llvm_add_strip_dead_prototypes"
79 (** See the [llvm::createStripSymbolsPass] function. *)
80 external add_strip_symbols
81 : [ `Module
] Llvm.PassManager.t
-> unit
82 = "llvm_add_strip_symbols"