1 (*===-- llvm_scalar_opts.mli - LLVM OCaml Interface -----------*- OCaml -*-===*
3 * The LLVM Compiler Infrastructure
5 * This file is distributed under the University of Illinois Open Source
6 * License. See LICENSE.TXT for details.
8 *===----------------------------------------------------------------------===*)
10 (** Scalar Transforms.
12 This interface provides an OCaml API for LLVM scalar transforms, the
13 classes in the [LLVMScalarOpts] library. *)
15 (** See the [llvm::createAggressiveDCEPass] function. *)
16 external add_aggressive_dce
17 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
18 = "llvm_add_aggressive_dce"
20 (** See the [llvm::createAlignmentFromAssumptionsPass] function. *)
21 external add_alignment_from_assumptions
22 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
23 = "llvm_add_alignment_from_assumptions"
25 (** See the [llvm::createCFGSimplificationPass] function. *)
26 external add_cfg_simplification
27 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
28 = "llvm_add_cfg_simplification"
30 (** See [llvm::createDeadStoreEliminationPass] function. *)
31 external add_dead_store_elimination
32 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
33 = "llvm_add_dead_store_elimination"
35 (** See [llvm::createScalarizerPass] function. *)
36 external add_scalarizer
37 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
38 = "llvm_add_scalarizer"
40 (** See [llvm::createMergedLoadStoreMotionPass] function. *)
41 external add_merged_load_store_motion
42 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
43 = "llvm_add_merged_load_store_motion"
45 (** See the [llvm::createGVNPass] function. *)
47 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
50 (** See the [llvm::createIndVarSimplifyPass] function. *)
51 external add_ind_var_simplification
52 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
53 = "llvm_add_ind_var_simplify"
55 (** See the [llvm::createInstructionCombiningPass] function. *)
56 external add_instruction_combination
57 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
58 = "llvm_add_instruction_combining"
60 (** See the [llvm::createJumpThreadingPass] function. *)
61 external add_jump_threading
62 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
63 = "llvm_add_jump_threading"
65 (** See the [llvm::createLICMPass] function. *)
67 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
70 (** See the [llvm::createLoopDeletionPass] function. *)
71 external add_loop_deletion
72 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
73 = "llvm_add_loop_deletion"
75 (** See the [llvm::createLoopIdiomPass] function. *)
76 external add_loop_idiom
77 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
78 = "llvm_add_loop_idiom"
80 (** See the [llvm::createLoopRotatePass] function. *)
81 external add_loop_rotation
82 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
83 = "llvm_add_loop_rotate"
85 (** See the [llvm::createLoopRerollPass] function. *)
86 external add_loop_reroll
87 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
88 = "llvm_add_loop_reroll"
90 (** See the [llvm::createLoopUnrollPass] function. *)
91 external add_loop_unroll
92 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
93 = "llvm_add_loop_unroll"
95 (** See the [llvm::createLoopUnswitchPass] function. *)
96 external add_loop_unswitch
97 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
98 = "llvm_add_loop_unswitch"
100 (** See the [llvm::createMemCpyOptPass] function. *)
101 external add_memcpy_opt
102 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
103 = "llvm_add_memcpy_opt"
105 (** See the [llvm::createPartiallyInlineLibCallsPass] function. *)
106 external add_partially_inline_lib_calls
107 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
108 = "llvm_add_partially_inline_lib_calls"
110 (** See the [llvm::createLowerSwitchPass] function. *)
111 external add_lower_switch
112 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
113 = "llvm_add_lower_switch"
115 (** See the [llvm::createPromoteMemoryToRegisterPass] function. *)
116 external add_memory_to_register_promotion
117 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
118 = "llvm_add_promote_memory_to_register"
120 (** See the [llvm::createReassociatePass] function. *)
121 external add_reassociation
122 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
123 = "llvm_add_reassociation"
125 (** See the [llvm::createSCCPPass] function. *)
127 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
130 (** See the [llvm::createScalarReplAggregatesPass] function. *)
131 external add_scalar_repl_aggregation
132 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
133 = "llvm_add_scalar_repl_aggregates"
135 (** See the [llvm::createScalarReplAggregatesPassSSA] function. *)
136 external add_scalar_repl_aggregation_ssa
137 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
138 = "llvm_add_scalar_repl_aggregates_ssa"
140 (** See the [llvm::createScalarReplAggregatesWithThreshold] function. *)
141 external add_scalar_repl_aggregation_with_threshold
142 : int -> [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
143 = "llvm_add_scalar_repl_aggregates_with_threshold"
145 (** See the [llvm::createSimplifyLibCallsPass] function. *)
146 external add_lib_call_simplification
147 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
148 = "llvm_add_simplify_lib_calls"
150 (** See the [llvm::createTailCallEliminationPass] function. *)
151 external add_tail_call_elimination
152 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
153 = "llvm_add_tail_call_elimination"
155 (** See the [llvm::createConstantPropagationPass] function. *)
156 external add_constant_propagation
157 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
158 = "llvm_add_constant_propagation"
160 (** See the [llvm::createDemoteMemoryToRegisterPass] function. *)
161 external add_memory_to_register_demotion
162 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
163 = "llvm_add_demote_memory_to_register"
165 (** See the [llvm::createVerifierPass] function. *)
166 external add_verifier
167 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
168 = "llvm_add_verifier"
170 (** See the [llvm::createCorrelatedValuePropagationPass] function. *)
171 external add_correlated_value_propagation
172 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
173 = "llvm_add_correlated_value_propagation"
175 (** See the [llvm::createEarlyCSE] function. *)
176 external add_early_cse
177 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
178 = "llvm_add_early_cse"
180 (** See the [llvm::createLowerExpectIntrinsicPass] function. *)
181 external add_lower_expect_intrinsic
182 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
183 = "llvm_add_lower_expect_intrinsic"
185 (** See the [llvm::createTypeBasedAliasAnalysisPass] function. *)
186 external add_type_based_alias_analysis
187 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
188 = "llvm_add_type_based_alias_analysis"
190 (** See the [llvm::createScopedNoAliasAAPass] function. *)
191 external add_scoped_no_alias_alias_analysis
192 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
193 = "llvm_add_scoped_no_alias_aa"
195 (** See the [llvm::createBasicAliasAnalysisPass] function. *)
196 external add_basic_alias_analysis
197 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
198 = "llvm_add_basic_alias_analysis"