Index: llvm/trunk/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.ml =================================================================== --- llvm/trunk/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.ml +++ llvm/trunk/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.ml @@ -121,3 +121,6 @@ external add_basic_alias_analysis : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit = "llvm_add_basic_alias_analysis" +external add_unify_function_exit_nodes + : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit + = "llvm_add_unify_function_exit_nodes" Index: llvm/trunk/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.mli =================================================================== --- llvm/trunk/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.mli +++ llvm/trunk/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.mli @@ -201,3 +201,8 @@ external add_basic_alias_analysis : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit = "llvm_add_basic_alias_analysis" + +(** See the [llvm::createUnifyFunctionExitNodesPass] function. *) +external add_unify_function_exit_nodes + : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit + = "llvm_add_unify_function_exit_nodes" Index: llvm/trunk/bindings/ocaml/transforms/scalar_opts/scalar_opts_ocaml.c =================================================================== --- llvm/trunk/bindings/ocaml/transforms/scalar_opts/scalar_opts_ocaml.c +++ llvm/trunk/bindings/ocaml/transforms/scalar_opts/scalar_opts_ocaml.c @@ -248,3 +248,9 @@ LLVMAddBasicAliasAnalysisPass(PM); return Val_unit; } + +/* [ unit */ +CAMLprim value llvm_add_unify_function_exit_nodes(LLVMPassManagerRef PM) { + LLVMAddUnifyFunctionExitNodesPass(PM); + return Val_unit; +} Index: llvm/trunk/include/llvm-c/Transforms/Scalar.h =================================================================== --- llvm/trunk/include/llvm-c/Transforms/Scalar.h +++ llvm/trunk/include/llvm-c/Transforms/Scalar.h @@ -153,6 +153,9 @@ /** See llvm::createBasicAliasAnalysisPass function */ void LLVMAddBasicAliasAnalysisPass(LLVMPassManagerRef PM); +/** See llvm::createUnifyFunctionExitNodesPass function */ +void LLVMAddUnifyFunctionExitNodesPass(LLVMPassManagerRef PM); + /** * @} */ Index: llvm/trunk/lib/Transforms/Scalar/Scalar.cpp =================================================================== --- llvm/trunk/lib/Transforms/Scalar/Scalar.cpp +++ llvm/trunk/lib/Transforms/Scalar/Scalar.cpp @@ -26,6 +26,7 @@ #include "llvm/InitializePasses.h" #include "llvm/Transforms/Scalar/GVN.h" #include "llvm/Transforms/Scalar/SimpleLoopUnswitch.h" +#include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h" using namespace llvm; @@ -278,3 +279,7 @@ void LLVMAddLowerExpectIntrinsicPass(LLVMPassManagerRef PM) { unwrap(PM)->add(createLowerExpectIntrinsicPass()); } + +void LLVMAddUnifyFunctionExitNodesPass(LLVMPassManagerRef PM) { + unwrap(PM)->add(createUnifyFunctionExitNodesPass()); +}