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. *) 16 external add_constant_propagation : [<Llvm.PassManager.any] Llvm.PassManager.t 17 -> unit 18 = "llvm_add_constant_propagation" 19 20 (** See the [llvm::createSCCPPass] function. *) 21 external add_sccp : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit 22 = "llvm_add_sccp" 23 24 (** See [llvm::createDeadStoreEliminationPass] function. *) 25 external 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. *) 30 external add_aggressive_dce : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit 31 = "llvm_add_aggressive_dce" 32 33 (** See the [llvm::createScalarReplAggregatesPass] function. *) 34 external 35 add_scalar_repl_aggregation : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit 36 = "llvm_add_scalar_repl_aggregation" 37 38 (** See the [llvm::createIndVarSimplifyPass] function. *) 39 external add_ind_var_simplification : [<Llvm.PassManager.any] Llvm.PassManager.t 40 -> unit 41 = "llvm_add_ind_var_simplification" 42 43 (** See the [llvm::createInstructionCombiningPass] function. *) 44 external 45 add_instruction_combination : [<Llvm.PassManager.any] Llvm.PassManager.t 46 -> unit 47 = "llvm_add_instruction_combination" 48 49 (** See the [llvm::createLICMPass] function. *) 50 external add_licm : [<Llvm.PassManager.any] Llvm.PassManager.t 51 -> unit 52 = "llvm_add_licm" 53 54 (** See the [llvm::createLoopUnswitchPass] function. *) 55 external add_loop_unswitch : [<Llvm.PassManager.any] Llvm.PassManager.t 56 -> unit 57 = "llvm_add_loop_unswitch" 58 59 (** See the [llvm::createLoopUnrollPass] function. *) 60 external add_loop_unroll : [<Llvm.PassManager.any] Llvm.PassManager.t 61 -> unit 62 = "llvm_add_loop_unroll" 63 64 (** See the [llvm::createLoopRotatePass] function. *) 65 external add_loop_rotation : [<Llvm.PassManager.any] Llvm.PassManager.t 66 -> unit 67 = "llvm_add_loop_rotation" 68 69 (** See the [llvm::createPromoteMemoryToRegisterPass] function. *) 70 external 71 add_memory_to_register_promotion : [<Llvm.PassManager.any] Llvm.PassManager.t 72 -> unit 73 = "llvm_add_memory_to_register_promotion" 74 75 (** See the [llvm::createDemoteMemoryToRegisterPass] function. *) 76 external 77 add_memory_to_register_demotion : [<Llvm.PassManager.any] Llvm.PassManager.t 78 -> unit 79 = "llvm_add_memory_to_register_demotion" 80 81 (** See the [llvm::createReassociatePass] function. *) 82 external add_reassociation : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit 83 = "llvm_add_reassociation" 84 85 (** See the [llvm::createJumpThreadingPass] function. *) 86 external add_jump_threading : [<Llvm.PassManager.any] Llvm.PassManager.t 87 -> unit 88 = "llvm_add_jump_threading" 89 90 (** See the [llvm::createCFGSimplificationPass] function. *) 91 external add_cfg_simplification : [<Llvm.PassManager.any] Llvm.PassManager.t 92 -> unit 93 = "llvm_add_cfg_simplification" 94 95 (** See the [llvm::createTailCallEliminationPass] function. *) 96 external 97 add_tail_call_elimination : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit 98 = "llvm_add_tail_call_elimination" 99 100 (** See the [llvm::createGVNPass] function. *) 101 external add_gvn : [<Llvm.PassManager.any] Llvm.PassManager.t 102 -> unit 103 = "llvm_add_gvn" 104 105 (** See the [llvm::createMemCpyOptPass] function. *) 106 external add_memcpy_opt : [<Llvm.PassManager.any] Llvm.PassManager.t 107 -> unit 108 = "llvm_add_memcpy_opt" 109 110 (** See the [llvm::createLoopDeletionPass] function. *) 111 external add_loop_deletion : [<Llvm.PassManager.any] Llvm.PassManager.t 112 -> unit 113 = "llvm_add_loop_deletion" 114 115 (** See the [llvm::createSimplifyLibCallsPass] function. *) 116 external 117 add_lib_call_simplification : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit 118 = "llvm_add_lib_call_simplification" 119