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::createConstantPropogationPass] function. *) 16external add_constant_propagation : [<Llvm.PassManager.any] Llvm.PassManager.t 17 -> unit 18 = "llvm_add_constant_propagation" 19 20(** See the [llvm::createSCCPPass] function. *) 21external add_sccp : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit 22 = "llvm_add_sccp" 23 24(** See [llvm::createDeadStoreEliminationPass] function. *) 25external add_dead_store_elimination : [<Llvm.PassManager.any] Llvm.PassManager.t 26 -> unit 27 = "llvm_add_dead_store_elimination" 28 29(** See The [llvm::createAggressiveDCEPass] function. *) 30external add_aggressive_dce : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit 31 = "llvm_add_aggressive_dce" 32 33(** See the [llvm::createScalarReplAggregatesPass] function. *) 34external 35add_scalar_repl_aggregation : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit 36 = "llvm_add_scalar_repl_aggregation" 37 38(** See the [llvm::createScalarReplAggregatesPassSSA] function. *) 39external 40add_scalar_repl_aggregation_ssa : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit 41 = "llvm_add_scalar_repl_aggregation_ssa" 42 43(** See the [llvm::createScalarReplAggregatesWithThreshold] function. *) 44external 45add_scalar_repl_aggregation_with_threshold : int -> [<Llvm.PassManager.any] Llvm.PassManager.t 46 -> unit 47 = "llvm_add_scalar_repl_aggregation_with_threshold" 48 49(** See the [llvm::createIndVarSimplifyPass] function. *) 50external add_ind_var_simplification : [<Llvm.PassManager.any] Llvm.PassManager.t 51 -> unit 52 = "llvm_add_ind_var_simplification" 53 54(** See the [llvm::createInstructionCombiningPass] function. *) 55external 56add_instruction_combination : [<Llvm.PassManager.any] Llvm.PassManager.t 57 -> unit 58 = "llvm_add_instruction_combination" 59 60(** See the [llvm::createLICMPass] function. *) 61external add_licm : [<Llvm.PassManager.any] Llvm.PassManager.t 62 -> unit 63 = "llvm_add_licm" 64 65(** See the [llvm::createLoopUnswitchPass] function. *) 66external add_loop_unswitch : [<Llvm.PassManager.any] Llvm.PassManager.t 67 -> unit 68 = "llvm_add_loop_unswitch" 69 70(** See the [llvm::createLoopUnrollPass] function. *) 71external add_loop_unroll : [<Llvm.PassManager.any] Llvm.PassManager.t 72 -> unit 73 = "llvm_add_loop_unroll" 74 75(** See the [llvm::createLoopRotatePass] function. *) 76external add_loop_rotation : [<Llvm.PassManager.any] Llvm.PassManager.t 77 -> unit 78 = "llvm_add_loop_rotation" 79 80(** See the [llvm::createPromoteMemoryToRegisterPass] function. *) 81external 82add_memory_to_register_promotion : [<Llvm.PassManager.any] Llvm.PassManager.t 83 -> unit 84 = "llvm_add_memory_to_register_promotion" 85 86(** See the [llvm::createDemoteMemoryToRegisterPass] function. *) 87external 88add_memory_to_register_demotion : [<Llvm.PassManager.any] Llvm.PassManager.t 89 -> unit 90 = "llvm_add_memory_to_register_demotion" 91 92(** See the [llvm::createReassociatePass] function. *) 93external add_reassociation : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit 94 = "llvm_add_reassociation" 95 96(** See the [llvm::createJumpThreadingPass] function. *) 97external add_jump_threading : [<Llvm.PassManager.any] Llvm.PassManager.t 98 -> unit 99 = "llvm_add_jump_threading" 100 101(** See the [llvm::createCFGSimplificationPass] function. *) 102external add_cfg_simplification : [<Llvm.PassManager.any] Llvm.PassManager.t 103 -> unit 104 = "llvm_add_cfg_simplification" 105 106(** See the [llvm::createTailCallEliminationPass] function. *) 107external 108add_tail_call_elimination : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit 109 = "llvm_add_tail_call_elimination" 110 111(** See the [llvm::createGVNPass] function. *) 112external add_gvn : [<Llvm.PassManager.any] Llvm.PassManager.t 113 -> unit 114 = "llvm_add_gvn" 115 116(** See the [llvm::createMemCpyOptPass] function. *) 117external add_memcpy_opt : [<Llvm.PassManager.any] Llvm.PassManager.t 118 -> unit 119 = "llvm_add_memcpy_opt" 120 121(** See the [llvm::createLoopDeletionPass] function. *) 122external add_loop_deletion : [<Llvm.PassManager.any] Llvm.PassManager.t 123 -> unit 124 = "llvm_add_loop_deletion" 125 126external add_loop_idiom : [<Llvm.PassManager.any] Llvm.PassManager.t 127 -> unit 128 = "llvm_add_loop_idiom" 129 130(** See the [llvm::createSimplifyLibCallsPass] function. *) 131external 132add_lib_call_simplification : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit 133 = "llvm_add_lib_call_simplification" 134 135(** See the [llvm::createVerifierPass] function. *) 136external 137add_verifier : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit 138 = "llvm_add_verifier" 139 140(** See the [llvm::createCorrelatedValuePropagationPass] function. *) 141external 142add_correlated_value_propagation : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit 143 = "llvm_add_correlated_value_propagation" 144 145(** See the [llvm::createEarlyCSE] function. *) 146external 147add_early_cse : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit 148 = "llvm_add_early_cse" 149 150(** See the [llvm::createLowerExpectIntrinsicPass] function. *) 151external 152add_lower_expect_intrinsic : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit 153 = "llvm_add_lower_expect_intrinsic" 154 155(** See the [llvm::createTypeBasedAliasAnalysisPass] function. *) 156external 157add_type_based_alias_analysis : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit 158 = "llvm_add_type_based_alias_analysis" 159 160(** See the [llvm::createBasicAliasAnalysisPass] function. *) 161external 162add_basic_alias_analysis : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit 163 = "llvm_add_basic_alias_analysis" 164 165