forked from OSchip/llvm-project
[LLVM-C][Ocaml] Add MergeFunctions and DCE pass
MergeFunctions and DCE pass are missing from OCaml/C-api. This patch adds them. Differential Revision: https://reviews.llvm.org/D65071 Reviewers: whitequark, hiraditya, deadalnix Reviewed By: whitequark Subscribers: llvm-commits Tags: #llvm Authored by: kren1 llvm-svn: 373170
This commit is contained in:
parent
eb78dea4cc
commit
a6d9d31279
|
@ -31,6 +31,12 @@ CAMLprim value llvm_add_constant_merge(LLVMPassManagerRef PM) {
|
||||||
return Val_unit;
|
return Val_unit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* [`Module] Llvm.PassManager.t -> unit */
|
||||||
|
CAMLprim value llvm_add_merge_functions(LLVMPassManagerRef PM) {
|
||||||
|
LLVMAddMergeFunctionsPass(PM);
|
||||||
|
return Val_unit;
|
||||||
|
}
|
||||||
|
|
||||||
/* [`Module] Llvm.PassManager.t -> unit */
|
/* [`Module] Llvm.PassManager.t -> unit */
|
||||||
CAMLprim value llvm_add_dead_arg_elimination(LLVMPassManagerRef PM) {
|
CAMLprim value llvm_add_dead_arg_elimination(LLVMPassManagerRef PM) {
|
||||||
LLVMAddDeadArgEliminationPass(PM);
|
LLVMAddDeadArgEliminationPass(PM);
|
||||||
|
|
|
@ -12,6 +12,9 @@ external add_argument_promotion
|
||||||
external add_constant_merge
|
external add_constant_merge
|
||||||
: [ `Module ] Llvm.PassManager.t -> unit
|
: [ `Module ] Llvm.PassManager.t -> unit
|
||||||
= "llvm_add_constant_merge"
|
= "llvm_add_constant_merge"
|
||||||
|
external add_merge_functions
|
||||||
|
: [ `Module ] Llvm.PassManager.t -> unit
|
||||||
|
= "llvm_add_merge_functions"
|
||||||
external add_dead_arg_elimination
|
external add_dead_arg_elimination
|
||||||
: [ `Module ] Llvm.PassManager.t -> unit
|
: [ `Module ] Llvm.PassManager.t -> unit
|
||||||
= "llvm_add_dead_arg_elimination"
|
= "llvm_add_dead_arg_elimination"
|
||||||
|
|
|
@ -21,6 +21,11 @@ external add_constant_merge
|
||||||
: [ `Module ] Llvm.PassManager.t -> unit
|
: [ `Module ] Llvm.PassManager.t -> unit
|
||||||
= "llvm_add_constant_merge"
|
= "llvm_add_constant_merge"
|
||||||
|
|
||||||
|
(** See the [llvm::createMergeFunctionsPass] function. *)
|
||||||
|
external add_merge_functions
|
||||||
|
: [ `Module ] Llvm.PassManager.t -> unit
|
||||||
|
= "llvm_add_merge_functions"
|
||||||
|
|
||||||
(** See the [llvm::createDeadArgEliminationPass] function. *)
|
(** See the [llvm::createDeadArgEliminationPass] function. *)
|
||||||
external add_dead_arg_elimination
|
external add_dead_arg_elimination
|
||||||
: [ `Module ] Llvm.PassManager.t -> unit
|
: [ `Module ] Llvm.PassManager.t -> unit
|
||||||
|
|
|
@ -9,6 +9,9 @@
|
||||||
external add_aggressive_dce
|
external add_aggressive_dce
|
||||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||||
= "llvm_add_aggressive_dce"
|
= "llvm_add_aggressive_dce"
|
||||||
|
external add_dce
|
||||||
|
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||||
|
= "llvm_add_dce"
|
||||||
external add_alignment_from_assumptions
|
external add_alignment_from_assumptions
|
||||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||||
= "llvm_add_alignment_from_assumptions"
|
= "llvm_add_alignment_from_assumptions"
|
||||||
|
|
|
@ -16,6 +16,11 @@ external add_aggressive_dce
|
||||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||||
= "llvm_add_aggressive_dce"
|
= "llvm_add_aggressive_dce"
|
||||||
|
|
||||||
|
(** See the [llvm::createDCEPass] function. *)
|
||||||
|
external add_dce
|
||||||
|
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||||
|
= "llvm_add_dce"
|
||||||
|
|
||||||
(** See the [llvm::createAlignmentFromAssumptionsPass] function. *)
|
(** See the [llvm::createAlignmentFromAssumptionsPass] function. *)
|
||||||
external add_alignment_from_assumptions
|
external add_alignment_from_assumptions
|
||||||
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
: [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
|
||||||
|
|
|
@ -26,6 +26,11 @@ CAMLprim value llvm_add_aggressive_dce(LLVMPassManagerRef PM) {
|
||||||
return Val_unit;
|
return Val_unit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CAMLprim value llvm_add_dce(LLVMPassManagerRef PM) {
|
||||||
|
LLVMAddDCEPass(PM);
|
||||||
|
return Val_unit;
|
||||||
|
}
|
||||||
|
|
||||||
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
|
||||||
CAMLprim value llvm_add_alignment_from_assumptions(LLVMPassManagerRef PM) {
|
CAMLprim value llvm_add_alignment_from_assumptions(LLVMPassManagerRef PM) {
|
||||||
LLVMAddAlignmentFromAssumptionsPass(PM);
|
LLVMAddAlignmentFromAssumptionsPass(PM);
|
||||||
|
|
|
@ -34,6 +34,9 @@ void LLVMAddArgumentPromotionPass(LLVMPassManagerRef PM);
|
||||||
/** See llvm::createConstantMergePass function. */
|
/** See llvm::createConstantMergePass function. */
|
||||||
void LLVMAddConstantMergePass(LLVMPassManagerRef PM);
|
void LLVMAddConstantMergePass(LLVMPassManagerRef PM);
|
||||||
|
|
||||||
|
/** See llvm::createMergeFunctionsPass function. */
|
||||||
|
void LLVMAddMergeFunctionsPass(LLVMPassManagerRef PM);
|
||||||
|
|
||||||
/** See llvm::createCalledValuePropagationPass function. */
|
/** See llvm::createCalledValuePropagationPass function. */
|
||||||
void LLVMAddCalledValuePropagationPass(LLVMPassManagerRef PM);
|
void LLVMAddCalledValuePropagationPass(LLVMPassManagerRef PM);
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,9 @@ extern "C" {
|
||||||
/** See llvm::createAggressiveDCEPass function. */
|
/** See llvm::createAggressiveDCEPass function. */
|
||||||
void LLVMAddAggressiveDCEPass(LLVMPassManagerRef PM);
|
void LLVMAddAggressiveDCEPass(LLVMPassManagerRef PM);
|
||||||
|
|
||||||
|
/** See llvm::createDeadCodeEliminationPass function. */
|
||||||
|
void LLVMAddDCEPass(LLVMPassManagerRef PM);
|
||||||
|
|
||||||
/** See llvm::createBitTrackingDCEPass function. */
|
/** See llvm::createBitTrackingDCEPass function. */
|
||||||
void LLVMAddBitTrackingDCEPass(LLVMPassManagerRef PM);
|
void LLVMAddBitTrackingDCEPass(LLVMPassManagerRef PM);
|
||||||
|
|
||||||
|
|
|
@ -114,6 +114,10 @@ void LLVMAddIPSCCPPass(LLVMPassManagerRef PM) {
|
||||||
unwrap(PM)->add(createIPSCCPPass());
|
unwrap(PM)->add(createIPSCCPPass());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LLVMAddMergeFunctionsPass(LLVMPassManagerRef PM) {
|
||||||
|
unwrap(PM)->add(createMergeFunctionsPass());
|
||||||
|
}
|
||||||
|
|
||||||
void LLVMAddInternalizePass(LLVMPassManagerRef PM, unsigned AllButMain) {
|
void LLVMAddInternalizePass(LLVMPassManagerRef PM, unsigned AllButMain) {
|
||||||
auto PreserveMain = [=](const GlobalValue &GV) {
|
auto PreserveMain = [=](const GlobalValue &GV) {
|
||||||
return AllButMain && GV.getName() == "main";
|
return AllButMain && GV.getName() == "main";
|
||||||
|
|
|
@ -123,6 +123,10 @@ void LLVMAddAggressiveDCEPass(LLVMPassManagerRef PM) {
|
||||||
unwrap(PM)->add(createAggressiveDCEPass());
|
unwrap(PM)->add(createAggressiveDCEPass());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LLVMAddDCEPass(LLVMPassManagerRef PM) {
|
||||||
|
unwrap(PM)->add(createDeadCodeEliminationPass());
|
||||||
|
}
|
||||||
|
|
||||||
void LLVMAddBitTrackingDCEPass(LLVMPassManagerRef PM) {
|
void LLVMAddBitTrackingDCEPass(LLVMPassManagerRef PM) {
|
||||||
unwrap(PM)->add(createBitTrackingDCEPass());
|
unwrap(PM)->add(createBitTrackingDCEPass());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue