diff options
author | Gordon Henriksen <gordonhenriksen@mac.com> | 2008-03-20 17:16:03 +0000 |
---|---|---|
committer | Gordon Henriksen <gordonhenriksen@mac.com> | 2008-03-20 17:16:03 +0000 |
commit | b81777a3548efc0c72171097340a78ddafbd281b (patch) | |
tree | 83c98d387bff625012f34d6954d4558538d76151 | |
parent | 1a3ebe36f73d9a19bd4be152c78585fa20d0c1fe (diff) | |
download | bcm5719-llvm-b81777a3548efc0c72171097340a78ddafbd281b.tar.gz bcm5719-llvm-b81777a3548efc0c72171097340a78ddafbd281b.zip |
C and Objective Caml bindings for mem2reg and reg2mem.
Patch by Erick Tryzelaar.
llvm-svn: 48602
5 files changed, 46 insertions, 0 deletions
diff --git a/llvm/bindings/ocaml/transforms/scalar/llvm_scalar_opts.ml b/llvm/bindings/ocaml/transforms/scalar/llvm_scalar_opts.ml index 8b6b7f9879b..b4563b716a8 100644 --- a/llvm/bindings/ocaml/transforms/scalar/llvm_scalar_opts.ml +++ b/llvm/bindings/ocaml/transforms/scalar/llvm_scalar_opts.ml @@ -13,6 +13,14 @@ external add_constant_propagation : [<Llvm.PassManager.any] Llvm.PassManager.t external add_instruction_combining : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit = "llvm_add_instruction_combining" +external +add_memory_to_register_promotion : [<Llvm.PassManager.any] Llvm.PassManager.t + -> unit + = "llvm_add_memory_to_register_promotion" +external +add_memory_to_register_demotion : [<Llvm.PassManager.any] Llvm.PassManager.t + -> unit + = "llvm_add_memory_to_register_demotion" external add_reassociation : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit = "llvm_add_reassociation" diff --git a/llvm/bindings/ocaml/transforms/scalar/llvm_scalar_opts.mli b/llvm/bindings/ocaml/transforms/scalar/llvm_scalar_opts.mli index 19efaa015e0..6fcce0432d7 100644 --- a/llvm/bindings/ocaml/transforms/scalar/llvm_scalar_opts.mli +++ b/llvm/bindings/ocaml/transforms/scalar/llvm_scalar_opts.mli @@ -22,6 +22,18 @@ external add_instruction_combining : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit = "llvm_add_instruction_combining" +(** See the [llvm::createPromoteMemoryToRegisterPass] function. *) +external +add_memory_to_register_promotion : [<Llvm.PassManager.any] Llvm.PassManager.t + -> unit + = "llvm_add_memory_to_register_promotion" + +(** See the [llvm::createDemoteMemoryToRegisterPass] function. *) +external +add_memory_to_register_demotion : [<Llvm.PassManager.any] Llvm.PassManager.t + -> unit + = "llvm_add_memory_to_register_demotion" + (** See the [llvm::createReassociatePass] function. *) external add_reassociation : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit diff --git a/llvm/bindings/ocaml/transforms/scalar/scalar_opts_ocaml.c b/llvm/bindings/ocaml/transforms/scalar/scalar_opts_ocaml.c index 5ceb3699ccb..87c10609843 100644 --- a/llvm/bindings/ocaml/transforms/scalar/scalar_opts_ocaml.c +++ b/llvm/bindings/ocaml/transforms/scalar/scalar_opts_ocaml.c @@ -32,6 +32,18 @@ CAMLprim value llvm_add_instruction_combining(LLVMPassManagerRef PM) { } /* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ +CAMLprim value llvm_add_memory_to_register_promotion(LLVMPassManagerRef PM) { + LLVMAddPromoteMemoryToRegisterPass(PM); + return Val_unit; +} + +/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ +CAMLprim value llvm_add_memory_to_register_demotion(LLVMPassManagerRef PM) { + LLVMAddDemoteMemoryToRegisterPass(PM); + return Val_unit; +} + +/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */ CAMLprim value llvm_add_reassociation(LLVMPassManagerRef PM) { LLVMAddReassociatePass(PM); return Val_unit; diff --git a/llvm/include/llvm-c/Transforms/Scalar.h b/llvm/include/llvm-c/Transforms/Scalar.h index 00e8c351024..6e0ff12c5f6 100644 --- a/llvm/include/llvm-c/Transforms/Scalar.h +++ b/llvm/include/llvm-c/Transforms/Scalar.h @@ -31,6 +31,12 @@ void LLVMAddConstantPropagationPass(LLVMPassManagerRef PM); /** See llvm::createInstructionCombiningPass function. */ void LLVMAddInstructionCombiningPass(LLVMPassManagerRef PM); +/** See llvm::createPromoteMemoryToRegisterPass function. */ +void LLVMAddPromoteMemoryToRegisterPass(LLVMPassManagerRef PM); + +/** See llvm::demotePromoteMemoryToRegisterPass function. */ +void LLVMAddDemoteMemoryToRegisterPass(LLVMPassManagerRef PM); + /** See llvm::createReassociatePass function. */ void LLVMAddReassociatePass(LLVMPassManagerRef PM); diff --git a/llvm/lib/Transforms/Scalar/Scalar.cpp b/llvm/lib/Transforms/Scalar/Scalar.cpp index 08b6bb3eeea..838f52b35f8 100644 --- a/llvm/lib/Transforms/Scalar/Scalar.cpp +++ b/llvm/lib/Transforms/Scalar/Scalar.cpp @@ -26,6 +26,14 @@ void LLVMAddInstructionCombiningPass(LLVMPassManagerRef PM) { unwrap(PM)->add(createInstructionCombiningPass()); } +void LLVMAddPromoteMemoryToRegisterPass(LLVMPassManagerRef PM) { + unwrap(PM)->add(createPromoteMemoryToRegisterPass()); +} + +void LLVMAddDemoteMemoryToRegisterPass(LLVMPassManagerRef PM) { + unwrap(PM)->add(createDemoteRegisterToMemoryPass()); +} + void LLVMAddReassociatePass(LLVMPassManagerRef PM) { unwrap(PM)->add(createReassociatePass()); } |