diff options
-rw-r--r-- | llvm/bindings/ocaml/transforms/ipo/ipo_ocaml.c | 6 | ||||
-rw-r--r-- | llvm/bindings/ocaml/transforms/ipo/llvm_ipo.ml | 3 | ||||
-rw-r--r-- | llvm/bindings/ocaml/transforms/ipo/llvm_ipo.mli | 5 | ||||
-rw-r--r-- | llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.ml | 3 | ||||
-rw-r--r-- | llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.mli | 5 | ||||
-rw-r--r-- | llvm/bindings/ocaml/transforms/scalar_opts/scalar_opts_ocaml.c | 5 | ||||
-rw-r--r-- | llvm/include/llvm-c/Transforms/IPO.h | 3 | ||||
-rw-r--r-- | llvm/include/llvm-c/Transforms/Scalar.h | 3 | ||||
-rw-r--r-- | llvm/lib/Transforms/IPO/IPO.cpp | 4 | ||||
-rw-r--r-- | llvm/lib/Transforms/Scalar/Scalar.cpp | 4 |
10 files changed, 41 insertions, 0 deletions
diff --git a/llvm/bindings/ocaml/transforms/ipo/ipo_ocaml.c b/llvm/bindings/ocaml/transforms/ipo/ipo_ocaml.c index e4226d8b370..9fcaa10534f 100644 --- a/llvm/bindings/ocaml/transforms/ipo/ipo_ocaml.c +++ b/llvm/bindings/ocaml/transforms/ipo/ipo_ocaml.c @@ -32,6 +32,12 @@ CAMLprim value llvm_add_constant_merge(LLVMPassManagerRef PM) { } /* [`Module] Llvm.PassManager.t -> unit */ +CAMLprim value llvm_add_merge_functions(LLVMPassManagerRef PM) { + LLVMAddMergeFunctionsPass(PM); + return Val_unit; +} + +/* [`Module] Llvm.PassManager.t -> unit */ CAMLprim value llvm_add_dead_arg_elimination(LLVMPassManagerRef PM) { LLVMAddDeadArgEliminationPass(PM); return Val_unit; diff --git a/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.ml b/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.ml index cc6b0507968..1fb5594fcc7 100644 --- a/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.ml +++ b/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.ml @@ -12,6 +12,9 @@ external add_argument_promotion external add_constant_merge : [ `Module ] Llvm.PassManager.t -> unit = "llvm_add_constant_merge" +external add_merge_functions + : [ `Module ] Llvm.PassManager.t -> unit + = "llvm_add_merge_functions" external add_dead_arg_elimination : [ `Module ] Llvm.PassManager.t -> unit = "llvm_add_dead_arg_elimination" diff --git a/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.mli b/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.mli index 4ae988d8e57..6507c5d92c2 100644 --- a/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.mli +++ b/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.mli @@ -21,6 +21,11 @@ external add_constant_merge : [ `Module ] Llvm.PassManager.t -> unit = "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. *) external add_dead_arg_elimination : [ `Module ] Llvm.PassManager.t -> unit diff --git a/llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.ml b/llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.ml index 0c99b0f34f7..6864076053b 100644 --- a/llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.ml +++ b/llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.ml @@ -9,6 +9,9 @@ external add_aggressive_dce : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit = "llvm_add_aggressive_dce" +external add_dce + : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit + = "llvm_add_dce" external add_alignment_from_assumptions : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit = "llvm_add_alignment_from_assumptions" diff --git a/llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.mli b/llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.mli index 76d86ddf001..8970431aeab 100644 --- a/llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.mli +++ b/llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.mli @@ -16,6 +16,11 @@ external add_aggressive_dce : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit = "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. *) external add_alignment_from_assumptions : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit diff --git a/llvm/bindings/ocaml/transforms/scalar_opts/scalar_opts_ocaml.c b/llvm/bindings/ocaml/transforms/scalar_opts/scalar_opts_ocaml.c index cb3d50d31fb..56ebbf3c43c 100644 --- a/llvm/bindings/ocaml/transforms/scalar_opts/scalar_opts_ocaml.c +++ b/llvm/bindings/ocaml/transforms/scalar_opts/scalar_opts_ocaml.c @@ -26,6 +26,11 @@ CAMLprim value llvm_add_aggressive_dce(LLVMPassManagerRef PM) { return Val_unit; } +CAMLprim value llvm_add_dce(LLVMPassManagerRef PM) { + LLVMAddDCEPass(PM); + return Val_unit; +} + /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ CAMLprim value llvm_add_alignment_from_assumptions(LLVMPassManagerRef PM) { LLVMAddAlignmentFromAssumptionsPass(PM); diff --git a/llvm/include/llvm-c/Transforms/IPO.h b/llvm/include/llvm-c/Transforms/IPO.h index 748b6db05e3..51d00758128 100644 --- a/llvm/include/llvm-c/Transforms/IPO.h +++ b/llvm/include/llvm-c/Transforms/IPO.h @@ -34,6 +34,9 @@ void LLVMAddArgumentPromotionPass(LLVMPassManagerRef PM); /** See llvm::createConstantMergePass function. */ void LLVMAddConstantMergePass(LLVMPassManagerRef PM); +/** See llvm::createMergeFunctionsPass function. */ +void LLVMAddMergeFunctionsPass(LLVMPassManagerRef PM); + /** See llvm::createCalledValuePropagationPass function. */ void LLVMAddCalledValuePropagationPass(LLVMPassManagerRef PM); diff --git a/llvm/include/llvm-c/Transforms/Scalar.h b/llvm/include/llvm-c/Transforms/Scalar.h index 031cf98b2df..484ac90ab5d 100644 --- a/llvm/include/llvm-c/Transforms/Scalar.h +++ b/llvm/include/llvm-c/Transforms/Scalar.h @@ -35,6 +35,9 @@ extern "C" { /** See llvm::createAggressiveDCEPass function. */ void LLVMAddAggressiveDCEPass(LLVMPassManagerRef PM); +/** See llvm::createDeadCodeEliminationPass function. */ +void LLVMAddDCEPass(LLVMPassManagerRef PM); + /** See llvm::createBitTrackingDCEPass function. */ void LLVMAddBitTrackingDCEPass(LLVMPassManagerRef PM); diff --git a/llvm/lib/Transforms/IPO/IPO.cpp b/llvm/lib/Transforms/IPO/IPO.cpp index 465ffbd9055..bddf7521159 100644 --- a/llvm/lib/Transforms/IPO/IPO.cpp +++ b/llvm/lib/Transforms/IPO/IPO.cpp @@ -114,6 +114,10 @@ void LLVMAddIPSCCPPass(LLVMPassManagerRef PM) { unwrap(PM)->add(createIPSCCPPass()); } +void LLVMAddMergeFunctionsPass(LLVMPassManagerRef PM) { + unwrap(PM)->add(createMergeFunctionsPass()); +} + void LLVMAddInternalizePass(LLVMPassManagerRef PM, unsigned AllButMain) { auto PreserveMain = [=](const GlobalValue &GV) { return AllButMain && GV.getName() == "main"; diff --git a/llvm/lib/Transforms/Scalar/Scalar.cpp b/llvm/lib/Transforms/Scalar/Scalar.cpp index 869cf00e0a8..688b8b9079e 100644 --- a/llvm/lib/Transforms/Scalar/Scalar.cpp +++ b/llvm/lib/Transforms/Scalar/Scalar.cpp @@ -123,6 +123,10 @@ void LLVMAddAggressiveDCEPass(LLVMPassManagerRef PM) { unwrap(PM)->add(createAggressiveDCEPass()); } +void LLVMAddDCEPass(LLVMPassManagerRef PM) { + unwrap(PM)->add(createDeadCodeEliminationPass()); +} + void LLVMAddBitTrackingDCEPass(LLVMPassManagerRef PM) { unwrap(PM)->add(createBitTrackingDCEPass()); } |