1 (*===-- llvm_scalar_opts.mli - 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 10 (** Scalar Transforms. 11 12 This interface provides an OCaml API for LLVM scalar transforms, the 13 classes in the [LLVMScalarOpts] library. *) 14 15 (** See the [llvm::createAggressiveDCEPass] function. *) 16 external add_aggressive_dce 17 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit 18 = "llvm_add_aggressive_dce" 19 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" 24 25 (** See the [llvm::createCFGSimplificationPass] function. *) 26 external add_cfg_simplification 27 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit 28 = "llvm_add_cfg_simplification" 29 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" 34 35 (** See [llvm::createScalarizerPass] function. *) 36 external add_scalarizer 37 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit 38 = "llvm_add_scalarizer" 39 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" 44 45 (** See the [llvm::createGVNPass] function. *) 46 external add_gvn 47 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit 48 = "llvm_add_gvn" 49 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" 54 55 (** See the [llvm::createInstructionCombiningPass] function. *) 56 external add_instruction_combination 57 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit 58 = "llvm_add_instruction_combining" 59 60 (** See the [llvm::createJumpThreadingPass] function. *) 61 external add_jump_threading 62 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit 63 = "llvm_add_jump_threading" 64 65 (** See the [llvm::createLICMPass] function. *) 66 external add_licm 67 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit 68 = "llvm_add_licm" 69 70 (** See the [llvm::createLoopDeletionPass] function. *) 71 external add_loop_deletion 72 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit 73 = "llvm_add_loop_deletion" 74 75 (** See the [llvm::createLoopIdiomPass] function. *) 76 external add_loop_idiom 77 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit 78 = "llvm_add_loop_idiom" 79 80 (** See the [llvm::createLoopRotatePass] function. *) 81 external add_loop_rotation 82 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit 83 = "llvm_add_loop_rotate" 84 85 (** See the [llvm::createLoopRerollPass] function. *) 86 external add_loop_reroll 87 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit 88 = "llvm_add_loop_reroll" 89 90 (** See the [llvm::createLoopUnrollPass] function. *) 91 external add_loop_unroll 92 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit 93 = "llvm_add_loop_unroll" 94 95 (** See the [llvm::createLoopUnswitchPass] function. *) 96 external add_loop_unswitch 97 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit 98 = "llvm_add_loop_unswitch" 99 100 (** See the [llvm::createMemCpyOptPass] function. *) 101 external add_memcpy_opt 102 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit 103 = "llvm_add_memcpy_opt" 104 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" 109 110 (** See the [llvm::createLowerSwitchPass] function. *) 111 external add_lower_switch 112 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit 113 = "llvm_add_lower_switch" 114 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" 119 120 (** See the [llvm::createReassociatePass] function. *) 121 external add_reassociation 122 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit 123 = "llvm_add_reassociation" 124 125 (** See the [llvm::createSCCPPass] function. *) 126 external add_sccp 127 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit 128 = "llvm_add_sccp" 129 130 (** See the [llvm::createSROAPass] function. *) 131 external add_scalar_repl_aggregation 132 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit 133 = "llvm_add_scalar_repl_aggregates" 134 135 (** See the [llvm::createSROAPass] function. *) 136 external add_scalar_repl_aggregation_ssa 137 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit 138 = "llvm_add_scalar_repl_aggregates_ssa" 139 140 (** See the [llvm::createSROAPass] 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" 144 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" 149 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" 154 155 (** See the [llvm::createConstantPropagationPass] function. *) 156 external add_constant_propagation 157 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit 158 = "llvm_add_constant_propagation" 159 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" 164 165 (** See the [llvm::createVerifierPass] function. *) 166 external add_verifier 167 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit 168 = "llvm_add_verifier" 169 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" 174 175 (** See the [llvm::createEarlyCSE] function. *) 176 external add_early_cse 177 : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit 178 = "llvm_add_early_cse" 179 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" 184 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" 189 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" 194 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" 199