Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
llvm/bindings/ocaml/transforms/scalar_opts/scalar_opts_ocaml.c
Show All 9 Lines | |||||
|* This file glues LLVM's OCaml interface to its C interface. These functions *| | |* This file glues LLVM's OCaml interface to its C interface. These functions *| | ||||
|* are by and large transparent wrappers to the corresponding C functions. *| | |* are by and large transparent wrappers to the corresponding C functions. *| | ||||
|* *| | |* *| | ||||
|* Note that these functions intentionally take liberties with the CAMLparamX *| | |* Note that these functions intentionally take liberties with the CAMLparamX *| | ||||
|* macros, since most of the parameters are not GC heap objects. *| | |* macros, since most of the parameters are not GC heap objects. *| | ||||
|* *| | |* *| | ||||
\*===----------------------------------------------------------------------===*/ | \*===----------------------------------------------------------------------===*/ | ||||
#include "caml/memory.h" | |||||
#include "caml/misc.h" | |||||
#include "caml/mlvalues.h" | |||||
#include "llvm_ocaml.h" | |||||
#include "llvm-c/Transforms/Scalar.h" | #include "llvm-c/Transforms/Scalar.h" | ||||
#include "llvm-c/Transforms/Utils.h" | #include "llvm-c/Transforms/Utils.h" | ||||
#include "caml/mlvalues.h" | |||||
#include "caml/misc.h" | |||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_aggressive_dce(LLVMPassManagerRef PM) { | value llvm_add_aggressive_dce(value PM) { | ||||
LLVMAddAggressiveDCEPass(PM); | LLVMAddAggressiveDCEPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
value llvm_add_dce(LLVMPassManagerRef PM) { | value llvm_add_dce(value PM) { | ||||
LLVMAddDCEPass(PM); | LLVMAddDCEPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_alignment_from_assumptions(LLVMPassManagerRef PM) { | value llvm_add_alignment_from_assumptions(value PM) { | ||||
LLVMAddAlignmentFromAssumptionsPass(PM); | LLVMAddAlignmentFromAssumptionsPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_cfg_simplification(LLVMPassManagerRef PM) { | value llvm_add_cfg_simplification(value PM) { | ||||
LLVMAddCFGSimplificationPass(PM); | LLVMAddCFGSimplificationPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_dead_store_elimination(LLVMPassManagerRef PM) { | value llvm_add_dead_store_elimination(value PM) { | ||||
LLVMAddDeadStoreEliminationPass(PM); | LLVMAddDeadStoreEliminationPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_scalarizer(LLVMPassManagerRef PM) { | value llvm_add_scalarizer(value PM) { | ||||
LLVMAddScalarizerPass(PM); | LLVMAddScalarizerPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_merged_load_store_motion(LLVMPassManagerRef PM) { | value llvm_add_merged_load_store_motion(value PM) { | ||||
LLVMAddMergedLoadStoreMotionPass(PM); | LLVMAddMergedLoadStoreMotionPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_gvn(LLVMPassManagerRef PM) { | value llvm_add_gvn(value PM) { | ||||
LLVMAddGVNPass(PM); | LLVMAddGVNPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_ind_var_simplify(LLVMPassManagerRef PM) { | value llvm_add_ind_var_simplify(value PM) { | ||||
LLVMAddIndVarSimplifyPass(PM); | LLVMAddIndVarSimplifyPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_instruction_combining(LLVMPassManagerRef PM) { | value llvm_add_instruction_combining(value PM) { | ||||
LLVMAddInstructionCombiningPass(PM); | LLVMAddInstructionCombiningPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_jump_threading(LLVMPassManagerRef PM) { | value llvm_add_jump_threading(value PM) { | ||||
LLVMAddJumpThreadingPass(PM); | LLVMAddJumpThreadingPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_licm(LLVMPassManagerRef PM) { | value llvm_add_licm(value PM) { | ||||
LLVMAddLICMPass(PM); | LLVMAddLICMPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_loop_rotate(LLVMPassManagerRef PM) { | value llvm_add_loop_rotate(value PM) { | ||||
LLVMAddLoopRotatePass(PM); | LLVMAddLoopRotatePass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_loop_unroll(LLVMPassManagerRef PM) { | value llvm_add_loop_unroll(value PM) { | ||||
LLVMAddLoopUnrollPass(PM); | LLVMAddLoopUnrollPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_memcpy_opt(LLVMPassManagerRef PM) { | value llvm_add_memcpy_opt(value PM) { | ||||
LLVMAddMemCpyOptPass(PM); | LLVMAddMemCpyOptPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_partially_inline_lib_calls(LLVMPassManagerRef PM) { | value llvm_add_partially_inline_lib_calls(value PM) { | ||||
LLVMAddPartiallyInlineLibCallsPass(PM); | LLVMAddPartiallyInlineLibCallsPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_lower_atomic(LLVMPassManagerRef PM) { | value llvm_add_lower_atomic(value PM) { | ||||
LLVMAddLowerAtomicPass(PM); | LLVMAddLowerAtomicPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_lower_switch(LLVMPassManagerRef PM) { | value llvm_add_lower_switch(value PM) { | ||||
LLVMAddLowerSwitchPass(PM); | LLVMAddLowerSwitchPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_promote_memory_to_register(LLVMPassManagerRef PM) { | value llvm_add_promote_memory_to_register(value PM) { | ||||
LLVMAddPromoteMemoryToRegisterPass(PM); | LLVMAddPromoteMemoryToRegisterPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_reassociation(LLVMPassManagerRef PM) { | value llvm_add_reassociation(value PM) { | ||||
LLVMAddReassociatePass(PM); | LLVMAddReassociatePass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_sccp(LLVMPassManagerRef PM) { | value llvm_add_sccp(value PM) { | ||||
LLVMAddSCCPPass(PM); | LLVMAddSCCPPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_scalar_repl_aggregates(LLVMPassManagerRef PM) { | value llvm_add_scalar_repl_aggregates(value PM) { | ||||
LLVMAddScalarReplAggregatesPass(PM); | LLVMAddScalarReplAggregatesPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_scalar_repl_aggregates_ssa(LLVMPassManagerRef PM) { | value llvm_add_scalar_repl_aggregates_ssa(value PM) { | ||||
LLVMAddScalarReplAggregatesPassSSA(PM); | LLVMAddScalarReplAggregatesPassSSA(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* int -> [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* int -> [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_scalar_repl_aggregates_with_threshold(value threshold, | value llvm_add_scalar_repl_aggregates_with_threshold(value threshold, | ||||
LLVMPassManagerRef PM) { | value PM) { | ||||
LLVMAddScalarReplAggregatesPassWithThreshold(PM, Int_val(threshold)); | LLVMAddScalarReplAggregatesPassWithThreshold(PassManager_val(PM), | ||||
Int_val(threshold)); | |||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_simplify_lib_calls(LLVMPassManagerRef PM) { | value llvm_add_simplify_lib_calls(value PM) { | ||||
LLVMAddSimplifyLibCallsPass(PM); | LLVMAddSimplifyLibCallsPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_tail_call_elimination(LLVMPassManagerRef PM) { | value llvm_add_tail_call_elimination(value PM) { | ||||
LLVMAddTailCallEliminationPass(PM); | LLVMAddTailCallEliminationPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_demote_memory_to_register(LLVMPassManagerRef PM) { | value llvm_add_demote_memory_to_register(value PM) { | ||||
LLVMAddDemoteMemoryToRegisterPass(PM); | LLVMAddDemoteMemoryToRegisterPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_verifier(LLVMPassManagerRef PM) { | value llvm_add_verifier(value PM) { | ||||
LLVMAddVerifierPass(PM); | LLVMAddVerifierPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_correlated_value_propagation(LLVMPassManagerRef PM) { | value llvm_add_correlated_value_propagation(value PM) { | ||||
LLVMAddCorrelatedValuePropagationPass(PM); | LLVMAddCorrelatedValuePropagationPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_early_cse(LLVMPassManagerRef PM) { | value llvm_add_early_cse(value PM) { | ||||
LLVMAddEarlyCSEPass(PM); | LLVMAddEarlyCSEPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_lower_expect_intrinsic(LLVMPassManagerRef PM) { | value llvm_add_lower_expect_intrinsic(value PM) { | ||||
LLVMAddLowerExpectIntrinsicPass(PM); | LLVMAddLowerExpectIntrinsicPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_lower_constant_intrinsics(LLVMPassManagerRef PM) { | value llvm_add_lower_constant_intrinsics(value PM) { | ||||
LLVMAddLowerConstantIntrinsicsPass(PM); | LLVMAddLowerConstantIntrinsicsPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_type_based_alias_analysis(LLVMPassManagerRef PM) { | value llvm_add_type_based_alias_analysis(value PM) { | ||||
LLVMAddTypeBasedAliasAnalysisPass(PM); | LLVMAddTypeBasedAliasAnalysisPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_scoped_no_alias_aa(LLVMPassManagerRef PM) { | value llvm_add_scoped_no_alias_aa(value PM) { | ||||
LLVMAddScopedNoAliasAAPass(PM); | LLVMAddScopedNoAliasAAPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_basic_alias_analysis(LLVMPassManagerRef PM) { | value llvm_add_basic_alias_analysis(value PM) { | ||||
LLVMAddBasicAliasAnalysisPass(PM); | LLVMAddBasicAliasAnalysisPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } | ||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ | ||||
value llvm_add_unify_function_exit_nodes(LLVMPassManagerRef PM) { | value llvm_add_unify_function_exit_nodes(value PM) { | ||||
LLVMAddUnifyFunctionExitNodesPass(PM); | LLVMAddUnifyFunctionExitNodesPass(PassManager_val(PM)); | ||||
return Val_unit; | return Val_unit; | ||||
} | } |