[llvm] e0efe46 - [OCaml] Remove all PassManager-related functions
Arthur Eubanks via llvm-commits
llvm-commits at lists.llvm.org
Fri Feb 24 13:15:01 PST 2023
Author: Alan Hu
Date: 2023-02-24T13:14:18-08:00
New Revision: e0efe46b33068f2e651e850cdc3ede0306f1853c
URL: https://github.com/llvm/llvm-project/commit/e0efe46b33068f2e651e850cdc3ede0306f1853c
DIFF: https://github.com/llvm/llvm-project/commit/e0efe46b33068f2e651e850cdc3ede0306f1853c.diff
LOG: [OCaml] Remove all PassManager-related functions
Reviewed By: aeubanks, nikic
Differential Revision: https://reviews.llvm.org/D144751
Added:
Modified:
llvm/bindings/ocaml/llvm/llvm.ml
llvm/bindings/ocaml/llvm/llvm.mli
llvm/bindings/ocaml/llvm/llvm_ocaml.c
llvm/bindings/ocaml/target/llvm_target.ml
llvm/bindings/ocaml/target/llvm_target.mli
llvm/bindings/ocaml/target/target_ocaml.c
llvm/bindings/ocaml/transforms/CMakeLists.txt
llvm/docs/CMakeLists.txt
llvm/test/Bindings/OCaml/core.ml
llvm/test/Bindings/OCaml/target.ml
llvm/test/CMakeLists.txt
Removed:
llvm/bindings/ocaml/transforms/ipo/CMakeLists.txt
llvm/bindings/ocaml/transforms/ipo/ipo_ocaml.c
llvm/bindings/ocaml/transforms/ipo/llvm_ipo.ml
llvm/bindings/ocaml/transforms/ipo/llvm_ipo.mli
llvm/bindings/ocaml/transforms/passmgr_builder/CMakeLists.txt
llvm/bindings/ocaml/transforms/passmgr_builder/llvm_passmgr_builder.ml
llvm/bindings/ocaml/transforms/passmgr_builder/llvm_passmgr_builder.mli
llvm/bindings/ocaml/transforms/passmgr_builder/passmgr_builder_ocaml.c
llvm/bindings/ocaml/transforms/scalar_opts/CMakeLists.txt
llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.ml
llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.mli
llvm/bindings/ocaml/transforms/scalar_opts/scalar_opts_ocaml.c
llvm/bindings/ocaml/transforms/vectorize/CMakeLists.txt
llvm/bindings/ocaml/transforms/vectorize/llvm_vectorize.ml
llvm/bindings/ocaml/transforms/vectorize/llvm_vectorize.mli
llvm/bindings/ocaml/transforms/vectorize/vectorize_ocaml.c
llvm/test/Bindings/OCaml/ipo.ml
llvm/test/Bindings/OCaml/passmgr_builder.ml
llvm/test/Bindings/OCaml/scalar_opts.ml
llvm/test/Bindings/OCaml/vectorize.ml
################################################################################
diff --git a/llvm/bindings/ocaml/llvm/llvm.ml b/llvm/bindings/ocaml/llvm/llvm.ml
index 10d44a6cf998f..4487866891e4d 100644
--- a/llvm/bindings/ocaml/llvm/llvm.ml
+++ b/llvm/bindings/ocaml/llvm/llvm.ml
@@ -1392,21 +1392,3 @@ module MemoryBuffer = struct
external as_string : llmemorybuffer -> string = "llvm_memorybuffer_as_string"
external dispose : llmemorybuffer -> unit = "llvm_memorybuffer_dispose"
end
-
-
-(*===-- Pass Manager ------------------------------------------------------===*)
-
-module PassManager = struct
- type 'a t
- type any = [ `Module | `Function ]
- external create : unit -> [ `Module ] t = "llvm_passmanager_create"
- external create_function : llmodule -> [ `Function ] t
- = "LLVMCreateFunctionPassManager"
- external run_module : llmodule -> [ `Module ] t -> bool
- = "llvm_passmanager_run_module"
- external initialize : [ `Function ] t -> bool = "llvm_passmanager_initialize"
- external run_function : llvalue -> [ `Function ] t -> bool
- = "llvm_passmanager_run_function"
- external finalize : [ `Function ] t -> bool = "llvm_passmanager_finalize"
- external dispose : [< any ] t -> unit = "llvm_passmanager_dispose"
-end
diff --git a/llvm/bindings/ocaml/llvm/llvm.mli b/llvm/bindings/ocaml/llvm/llvm.mli
index 38bf555d0230a..59ac5b8551303 100644
--- a/llvm/bindings/ocaml/llvm/llvm.mli
+++ b/llvm/bindings/ocaml/llvm/llvm.mli
@@ -2622,54 +2622,3 @@ module MemoryBuffer : sig
(** Disposes of a memory buffer. *)
val dispose : llmemorybuffer -> unit
end
-
-
-(** {6 Pass Managers} *)
-
-module PassManager : sig
- (** *)
- type 'a t
- type any = [ `Module | `Function ]
-
- (** [PassManager.create ()] constructs a new whole-module pass pipeline. This
- type of pipeline is suitable for link-time optimization and whole-module
- transformations.
- See the constructor of [llvm::PassManager]. *)
- val create : unit -> [ `Module ] t
-
- (** [PassManager.create_function m] constructs a new function-by-function
- pass pipeline over the module [m]. It does not take ownership of [m].
- This type of pipeline is suitable for code generation and JIT compilation
- tasks.
- See the constructor of [llvm::FunctionPassManager]. *)
- val create_function : llmodule -> [ `Function ] t
-
- (** [run_module m pm] initializes, executes on the module [m], and finalizes
- all of the passes scheduled in the pass manager [pm]. Returns [true] if
- any of the passes modified the module, [false] otherwise.
- See the [llvm::PassManager::run] method. *)
- val run_module : llmodule -> [ `Module ] t -> bool
-
- (** [initialize fpm] initializes all of the function passes scheduled in the
- function pass manager [fpm]. Returns [true] if any of the passes modified
- the module, [false] otherwise.
- See the [llvm::FunctionPassManager::doInitialization] method. *)
- val initialize : [ `Function ] t -> bool
-
- (** [run_function f fpm] executes all of the function passes scheduled in the
- function pass manager [fpm] over the function [f]. Returns [true] if any
- of the passes modified [f], [false] otherwise.
- See the [llvm::FunctionPassManager::run] method. *)
- val run_function : llvalue -> [ `Function ] t -> bool
-
- (** [finalize fpm] finalizes all of the function passes scheduled in the
- function pass manager [fpm]. Returns [true] if any of the passes
- modified the module, [false] otherwise.
- See the [llvm::FunctionPassManager::doFinalization] method. *)
- val finalize : [ `Function ] t -> bool
-
- (** Frees the memory of a pass pipeline. For function pipelines, does not free
- the module.
- See the destructor of [llvm::BasePassManager]. *)
- val dispose : [< any ] t -> unit
-end
diff --git a/llvm/bindings/ocaml/llvm/llvm_ocaml.c b/llvm/bindings/ocaml/llvm/llvm_ocaml.c
index 0762ebef1bb08..dff14cf79c55e 100644
--- a/llvm/bindings/ocaml/llvm/llvm_ocaml.c
+++ b/llvm/bindings/ocaml/llvm/llvm_ocaml.c
@@ -2339,36 +2339,3 @@ value llvm_memorybuffer_dispose(LLVMMemoryBufferRef MemBuf) {
LLVMDisposeMemoryBuffer(MemBuf);
return Val_unit;
}
-
-/*===-- Pass Managers -----------------------------------------------------===*/
-
-/* unit -> [ `Module ] PassManager.t */
-LLVMPassManagerRef llvm_passmanager_create(value Unit) {
- return LLVMCreatePassManager();
-}
-
-/* llmodule -> [ `Function ] PassManager.t -> bool */
-value llvm_passmanager_run_module(LLVMModuleRef M, LLVMPassManagerRef PM) {
- return Val_bool(LLVMRunPassManager(PM, M));
-}
-
-/* [ `Function ] PassManager.t -> bool */
-value llvm_passmanager_initialize(LLVMPassManagerRef FPM) {
- return Val_bool(LLVMInitializeFunctionPassManager(FPM));
-}
-
-/* llvalue -> [ `Function ] PassManager.t -> bool */
-value llvm_passmanager_run_function(LLVMValueRef F, LLVMPassManagerRef FPM) {
- return Val_bool(LLVMRunFunctionPassManager(FPM, F));
-}
-
-/* [ `Function ] PassManager.t -> bool */
-value llvm_passmanager_finalize(LLVMPassManagerRef FPM) {
- return Val_bool(LLVMFinalizeFunctionPassManager(FPM));
-}
-
-/* PassManager.any PassManager.t -> unit */
-value llvm_passmanager_dispose(LLVMPassManagerRef PM) {
- LLVMDisposePassManager(PM);
- return Val_unit;
-}
diff --git a/llvm/bindings/ocaml/target/llvm_target.ml b/llvm/bindings/ocaml/target/llvm_target.ml
index 0922ebe55345a..29af0187f940b 100644
--- a/llvm/bindings/ocaml/target/llvm_target.ml
+++ b/llvm/bindings/ocaml/target/llvm_target.ml
@@ -122,8 +122,6 @@ module TargetMachine = struct
= "llvm_targetmachine_features"
external data_layout : t -> DataLayout.t
= "llvm_targetmachine_data_layout"
- external add_analysis_passes : [< Llvm.PassManager.any ] Llvm.PassManager.t -> t -> unit
- = "llvm_targetmachine_add_analysis_passes"
external set_verbose_asm : bool -> t -> unit
= "llvm_targetmachine_set_verbose_asm"
external emit_to_file : Llvm.llmodule -> CodeGenFileType.t -> string ->
diff --git a/llvm/bindings/ocaml/target/llvm_target.mli b/llvm/bindings/ocaml/target/llvm_target.mli
index 8d310793bea21..56ecb2d908dd3 100644
--- a/llvm/bindings/ocaml/target/llvm_target.mli
+++ b/llvm/bindings/ocaml/target/llvm_target.mli
@@ -200,10 +200,6 @@ module TargetMachine : sig
[llvm::TargetMachine::getFeatureString]. *)
val features : t -> string
- (** Adds the target-specific analysis passes to the pass manager.
- See [llvm::TargetMachine::addAnalysisPasses]. *)
- val add_analysis_passes : [< Llvm.PassManager.any ] Llvm.PassManager.t -> t -> unit
-
(** Sets the assembly verbosity of this target machine.
See [llvm::TargetMachine::setAsmVerbosity]. *)
val set_verbose_asm : bool -> t -> unit
diff --git a/llvm/bindings/ocaml/target/target_ocaml.c b/llvm/bindings/ocaml/target/target_ocaml.c
index 2b7259bf2bc5f..d0bc6f162f0d2 100644
--- a/llvm/bindings/ocaml/target/target_ocaml.c
+++ b/llvm/bindings/ocaml/target/target_ocaml.c
@@ -327,10 +327,3 @@ llvm_targetmachine_emit_to_memory_buffer(LLVMModuleRef Module, value FileType,
return Buffer;
}
-
-/* TargetMachine.t -> Llvm.PassManager.t -> unit */
-value llvm_targetmachine_add_analysis_passes(LLVMPassManagerRef PM,
- value Machine) {
- LLVMAddAnalysisPasses(TargetMachine_val(Machine), PM);
- return Val_unit;
-}
diff --git a/llvm/bindings/ocaml/transforms/CMakeLists.txt b/llvm/bindings/ocaml/transforms/CMakeLists.txt
index beb8694019b7a..0628d6763874e 100644
--- a/llvm/bindings/ocaml/transforms/CMakeLists.txt
+++ b/llvm/bindings/ocaml/transforms/CMakeLists.txt
@@ -1,5 +1,2 @@
-add_subdirectory(ipo)
-add_subdirectory(passmgr_builder)
-add_subdirectory(scalar_opts)
add_subdirectory(utils)
-add_subdirectory(vectorize)
+
diff --git a/llvm/bindings/ocaml/transforms/ipo/CMakeLists.txt b/llvm/bindings/ocaml/transforms/ipo/CMakeLists.txt
deleted file mode 100644
index 4b8784fad67bb..0000000000000
--- a/llvm/bindings/ocaml/transforms/ipo/CMakeLists.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-add_ocaml_library(llvm_ipo
- OCAML llvm_ipo
- OCAMLDEP llvm
- C ipo_ocaml
- LLVM ipo)
diff --git a/llvm/bindings/ocaml/transforms/ipo/ipo_ocaml.c b/llvm/bindings/ocaml/transforms/ipo/ipo_ocaml.c
deleted file mode 100644
index 008d18e0822bf..0000000000000
--- a/llvm/bindings/ocaml/transforms/ipo/ipo_ocaml.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*===-- ipo_ocaml.c - LLVM OCaml Glue ---------------------------*- C++ -*-===*\
-|* *|
-|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *|
-|* Exceptions. *|
-|* See https://llvm.org/LICENSE.txt for license information. *|
-|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *|
-|* *|
-|*===----------------------------------------------------------------------===*|
-|* *|
-|* This file glues LLVM's OCaml interface to its C interface. These functions *|
-|* are by and large transparent wrappers to the corresponding C functions. *|
-|* *|
-|* Note that these functions intentionally take liberties with the CAMLparamX *|
-|* macros, since most of the parameters are not GC heap objects. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#include "llvm-c/Transforms/IPO.h"
-#include "caml/mlvalues.h"
-#include "caml/misc.h"
-
-/* [`Module] Llvm.PassManager.t -> unit */
-value llvm_add_constant_merge(LLVMPassManagerRef PM) {
- LLVMAddConstantMergePass(PM);
- return Val_unit;
-}
-
-/* [`Module] Llvm.PassManager.t -> unit */
-value llvm_add_dead_arg_elimination(LLVMPassManagerRef PM) {
- LLVMAddDeadArgEliminationPass(PM);
- return Val_unit;
-}
-
-/* [`Module] Llvm.PassManager.t -> unit */
-value llvm_add_function_attrs(LLVMPassManagerRef PM) {
- LLVMAddFunctionAttrsPass(PM);
- return Val_unit;
-}
-
-/* [`Module] Llvm.PassManager.t -> unit */
-value llvm_add_always_inliner(LLVMPassManagerRef PM) {
- LLVMAddAlwaysInlinerPass(PM);
- return Val_unit;
-}
-
-/* [`Module] Llvm.PassManager.t -> unit */
-value llvm_add_global_dce(LLVMPassManagerRef PM) {
- LLVMAddGlobalDCEPass(PM);
- return Val_unit;
-}
diff --git a/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.ml b/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.ml
deleted file mode 100644
index e54ee494e7be7..0000000000000
--- a/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.ml
+++ /dev/null
@@ -1,23 +0,0 @@
-(*===-- llvm_ipo.ml - LLVM OCaml Interface --------------------*- OCaml -*-===*
- *
- * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- * See https://llvm.org/LICENSE.txt for license information.
- * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- *
- *===----------------------------------------------------------------------===*)
-
-external add_constant_merge
- : [ `Module ] Llvm.PassManager.t -> unit
- = "llvm_add_constant_merge"
-external add_dead_arg_elimination
- : [ `Module ] Llvm.PassManager.t -> unit
- = "llvm_add_dead_arg_elimination"
-external add_function_attrs
- : [ `Module ] Llvm.PassManager.t -> unit
- = "llvm_add_function_attrs"
-external add_always_inliner
- : [ `Module ] Llvm.PassManager.t -> unit
- = "llvm_add_always_inliner"
-external add_global_dce
- : [ `Module ] Llvm.PassManager.t -> unit
- = "llvm_add_global_dce"
diff --git a/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.mli b/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.mli
deleted file mode 100644
index baa098495e9c6..0000000000000
--- a/llvm/bindings/ocaml/transforms/ipo/llvm_ipo.mli
+++ /dev/null
@@ -1,38 +0,0 @@
-(*===-- llvm_ipo.mli - LLVM OCaml Interface -------------------*- OCaml -*-===*
- *
- * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- * See https://llvm.org/LICENSE.txt for license information.
- * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- *
- *===----------------------------------------------------------------------===*)
-
-(** IPO Transforms.
-
- This interface provides an OCaml API for LLVM interprocedural optimizations, the
- classes in the [LLVMIPO] library. *)
-
-(** See the [llvm::createConstantMergePass] function. *)
-external add_constant_merge
- : [ `Module ] Llvm.PassManager.t -> unit
- = "llvm_add_constant_merge"
-
-(** See the [llvm::createDeadArgEliminationPass] function. *)
-external add_dead_arg_elimination
- : [ `Module ] Llvm.PassManager.t -> unit
- = "llvm_add_dead_arg_elimination"
-
-(** See the [llvm::createFunctionAttrsPass] function. *)
-external add_function_attrs
- : [ `Module ] Llvm.PassManager.t -> unit
- = "llvm_add_function_attrs"
-
-(** See the [llvm::createAlwaysInlinerPass] function. *)
-external add_always_inliner
- : [ `Module ] Llvm.PassManager.t -> unit
- = "llvm_add_always_inliner"
-
-(** See the [llvm::createGlobalDCEPass] function. *)
-external add_global_dce
- : [ `Module ] Llvm.PassManager.t -> unit
- = "llvm_add_global_dce"
-
\ No newline at end of file
diff --git a/llvm/bindings/ocaml/transforms/passmgr_builder/CMakeLists.txt b/llvm/bindings/ocaml/transforms/passmgr_builder/CMakeLists.txt
deleted file mode 100644
index b012863d8ec7e..0000000000000
--- a/llvm/bindings/ocaml/transforms/passmgr_builder/CMakeLists.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-add_ocaml_library(llvm_passmgr_builder
- OCAML llvm_passmgr_builder
- OCAMLDEP llvm
- C passmgr_builder_ocaml
- LLVM ipo)
diff --git a/llvm/bindings/ocaml/transforms/passmgr_builder/llvm_passmgr_builder.ml b/llvm/bindings/ocaml/transforms/passmgr_builder/llvm_passmgr_builder.ml
deleted file mode 100644
index c39a592c47d35..0000000000000
--- a/llvm/bindings/ocaml/transforms/passmgr_builder/llvm_passmgr_builder.ml
+++ /dev/null
@@ -1,28 +0,0 @@
-(*===-- llvm_passmgr_builder.ml - LLVM OCaml Interface --------*- OCaml -*-===*
- *
- * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- * See https://llvm.org/LICENSE.txt for license information.
- * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- *
- *===----------------------------------------------------------------------===*)
-
-type t
-
-external create : unit -> t
- = "llvm_pmbuilder_create"
-external set_opt_level : int -> t -> unit
- = "llvm_pmbuilder_set_opt_level"
-external set_size_level : int -> t -> unit
- = "llvm_pmbuilder_set_size_level"
-external set_disable_unit_at_a_time : bool -> t -> unit
- = "llvm_pmbuilder_set_disable_unit_at_a_time"
-external set_disable_unroll_loops : bool -> t -> unit
- = "llvm_pmbuilder_set_disable_unroll_loops"
-external use_inliner_with_threshold : int -> t -> unit
- = "llvm_pmbuilder_use_inliner_with_threshold"
-external populate_function_pass_manager
- : [ `Function ] Llvm.PassManager.t -> t -> unit
- = "llvm_pmbuilder_populate_function_pass_manager"
-external populate_module_pass_manager
- : [ `Module ] Llvm.PassManager.t -> t -> unit
- = "llvm_pmbuilder_populate_module_pass_manager"
\ No newline at end of file
diff --git a/llvm/bindings/ocaml/transforms/passmgr_builder/llvm_passmgr_builder.mli b/llvm/bindings/ocaml/transforms/passmgr_builder/llvm_passmgr_builder.mli
deleted file mode 100644
index d2861ea343b6d..0000000000000
--- a/llvm/bindings/ocaml/transforms/passmgr_builder/llvm_passmgr_builder.mli
+++ /dev/null
@@ -1,48 +0,0 @@
-(*===-- llvm_passmgr_builder.mli - LLVM OCaml Interface -------*- OCaml -*-===*
- *
- * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- * See https://llvm.org/LICENSE.txt for license information.
- * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- *
- *===----------------------------------------------------------------------===*)
-
-(** Pass Manager Builder.
-
- This interface provides an OCaml API for LLVM pass manager builder
- from the [LLVMCore] library. *)
-
-type t
-
-(** See the [llvm::PassManagerBuilder] function. *)
-external create : unit -> t
- = "llvm_pmbuilder_create"
-
-(** See the [llvm::PassManagerBuilder::OptLevel] function. *)
-external set_opt_level : int -> t -> unit
- = "llvm_pmbuilder_set_opt_level"
-
-(** See the [llvm::PassManagerBuilder::SizeLevel] function. *)
-external set_size_level : int -> t -> unit
- = "llvm_pmbuilder_set_size_level"
-
-(** See the [llvm::PassManagerBuilder::DisableUnitAtATime] function. *)
-external set_disable_unit_at_a_time : bool -> t -> unit
- = "llvm_pmbuilder_set_disable_unit_at_a_time"
-
-(** See the [llvm::PassManagerBuilder::DisableUnrollLoops] function. *)
-external set_disable_unroll_loops : bool -> t -> unit
- = "llvm_pmbuilder_set_disable_unroll_loops"
-
-(** See the [llvm::PassManagerBuilder::Inliner] function. *)
-external use_inliner_with_threshold : int -> t -> unit
- = "llvm_pmbuilder_use_inliner_with_threshold"
-
-(** See the [llvm::PassManagerBuilder::populateFunctionPassManager] function. *)
-external populate_function_pass_manager
- : [ `Function ] Llvm.PassManager.t -> t -> unit
- = "llvm_pmbuilder_populate_function_pass_manager"
-
-(** See the [llvm::PassManagerBuilder::populateModulePassManager] function. *)
-external populate_module_pass_manager
- : [ `Module ] Llvm.PassManager.t -> t -> unit
- = "llvm_pmbuilder_populate_module_pass_manager"
diff --git a/llvm/bindings/ocaml/transforms/passmgr_builder/passmgr_builder_ocaml.c b/llvm/bindings/ocaml/transforms/passmgr_builder/passmgr_builder_ocaml.c
deleted file mode 100644
index de0a76219d377..0000000000000
--- a/llvm/bindings/ocaml/transforms/passmgr_builder/passmgr_builder_ocaml.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/*===-- passmgr_builder_ocaml.c - LLVM OCaml Glue ---------------*- C++ -*-===*\
-|* *|
-|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *|
-|* Exceptions. *|
-|* See https://llvm.org/LICENSE.txt for license information. *|
-|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *|
-|* *|
-|*===----------------------------------------------------------------------===*|
-|* *|
-|* This file glues LLVM's OCaml interface to its C interface. These functions *|
-|* are by and large transparent wrappers to the corresponding C functions. *|
-|* *|
-|* Note that these functions intentionally take liberties with the CAMLparamX *|
-|* macros, since most of the parameters are not GC heap objects. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#include "llvm-c/Transforms/PassManagerBuilder.h"
-#include "caml/mlvalues.h"
-#include "caml/custom.h"
-#include "caml/misc.h"
-
-#define PMBuilder_val(v) (*(LLVMPassManagerBuilderRef *)(Data_custom_val(v)))
-
-static void llvm_finalize_pmbuilder(value PMB) {
- LLVMPassManagerBuilderDispose(PMBuilder_val(PMB));
-}
-
-static struct custom_operations pmbuilder_ops = {
- (char *)"Llvm_passmgr_builder.t", llvm_finalize_pmbuilder,
- custom_compare_default, custom_hash_default,
- custom_serialize_default, custom_deserialize_default,
- custom_compare_ext_default};
-
-static value alloc_pmbuilder(LLVMPassManagerBuilderRef Ref) {
- value Val =
- alloc_custom(&pmbuilder_ops, sizeof(LLVMPassManagerBuilderRef), 0, 1);
- PMBuilder_val(Val) = Ref;
- return Val;
-}
-
-/* t -> unit */
-value llvm_pmbuilder_create(value Unit) {
- return alloc_pmbuilder(LLVMPassManagerBuilderCreate());
-}
-
-/* int -> t -> unit */
-value llvm_pmbuilder_set_opt_level(value OptLevel, value PMB) {
- LLVMPassManagerBuilderSetOptLevel(PMBuilder_val(PMB), Int_val(OptLevel));
- return Val_unit;
-}
-
-/* int -> t -> unit */
-value llvm_pmbuilder_set_size_level(value SizeLevel, value PMB) {
- LLVMPassManagerBuilderSetSizeLevel(PMBuilder_val(PMB), Int_val(SizeLevel));
- return Val_unit;
-}
-
-/* int -> t -> unit */
-value llvm_pmbuilder_use_inliner_with_threshold(value Threshold, value PMB) {
- LLVMPassManagerBuilderSetOptLevel(PMBuilder_val(PMB), Int_val(Threshold));
- return Val_unit;
-}
-
-/* bool -> t -> unit */
-value llvm_pmbuilder_set_disable_unit_at_a_time(value DisableUnitAtATime,
- value PMB) {
- LLVMPassManagerBuilderSetDisableUnitAtATime(PMBuilder_val(PMB),
- Bool_val(DisableUnitAtATime));
- return Val_unit;
-}
-
-/* bool -> t -> unit */
-value llvm_pmbuilder_set_disable_unroll_loops(value DisableUnroll, value PMB) {
- LLVMPassManagerBuilderSetDisableUnrollLoops(PMBuilder_val(PMB),
- Bool_val(DisableUnroll));
- return Val_unit;
-}
-
-/* [ `Function ] Llvm.PassManager.t -> t -> unit */
-value llvm_pmbuilder_populate_function_pass_manager(LLVMPassManagerRef PM,
- value PMB) {
- LLVMPassManagerBuilderPopulateFunctionPassManager(PMBuilder_val(PMB), PM);
- return Val_unit;
-}
-
-/* [ `Module ] Llvm.PassManager.t -> t -> unit */
-value llvm_pmbuilder_populate_module_pass_manager(LLVMPassManagerRef PM,
- value PMB) {
- LLVMPassManagerBuilderPopulateModulePassManager(PMBuilder_val(PMB), PM);
- return Val_unit;
-}
diff --git a/llvm/bindings/ocaml/transforms/scalar_opts/CMakeLists.txt b/llvm/bindings/ocaml/transforms/scalar_opts/CMakeLists.txt
deleted file mode 100644
index d680b02046c6b..0000000000000
--- a/llvm/bindings/ocaml/transforms/scalar_opts/CMakeLists.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-add_ocaml_library(llvm_scalar_opts
- OCAML llvm_scalar_opts
- OCAMLDEP llvm
- C scalar_opts_ocaml
- LLVM Scalar)
diff --git a/llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.ml b/llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.ml
deleted file mode 100644
index cf212b90f717b..0000000000000
--- a/llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.ml
+++ /dev/null
@@ -1,116 +0,0 @@
-(*===-- llvm_scalar_opts.ml - LLVM OCaml Interface ------------*- OCaml -*-===*
- *
- * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- * See https://llvm.org/LICENSE.txt for license information.
- * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- *
- *===----------------------------------------------------------------------===*)
-
-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"
-external add_cfg_simplification
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_cfg_simplification"
-external add_dead_store_elimination
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_dead_store_elimination"
-external add_scalarizer
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_scalarizer"
-external add_merged_load_store_motion
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_merged_load_store_motion"
-external add_gvn
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_gvn"
-external add_ind_var_simplification
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_ind_var_simplify"
-external add_instruction_combination
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_instruction_combining"
-external add_jump_threading
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_jump_threading"
-external add_licm
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_licm"
-external add_loop_rotation
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_loop_rotate"
-external add_loop_unroll
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_loop_unroll"
-external add_memcpy_opt
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_memcpy_opt"
-external add_partially_inline_lib_calls
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_partially_inline_lib_calls"
-external add_lower_atomic
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_lower_atomic"
-external add_lower_switch
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_lower_switch"
-external add_memory_to_register_promotion
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_promote_memory_to_register"
-external add_reassociation
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_reassociation"
-external add_sccp
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_sccp"
-external add_scalar_repl_aggregation
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_scalar_repl_aggregates"
-external add_scalar_repl_aggregation_ssa
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_scalar_repl_aggregates_ssa"
-external add_scalar_repl_aggregation_with_threshold
- : int -> [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_scalar_repl_aggregates_with_threshold"
-external add_lib_call_simplification
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_simplify_lib_calls"
-external add_tail_call_elimination
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_tail_call_elimination"
-external add_memory_to_register_demotion
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_demote_memory_to_register"
-external add_verifier
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_verifier"
-external add_correlated_value_propagation
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_correlated_value_propagation"
-external add_early_cse
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_early_cse"
-external add_lower_expect_intrinsic
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_lower_expect_intrinsic"
-external add_lower_constant_intrinsics
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_lower_constant_intrinsics"
-external add_type_based_alias_analysis
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_type_based_alias_analysis"
-external add_scoped_no_alias_alias_analysis
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_scoped_no_alias_aa"
-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"
diff --git a/llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.mli b/llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.mli
deleted file mode 100644
index ff21c357f74cc..0000000000000
--- a/llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.mli
+++ /dev/null
@@ -1,187 +0,0 @@
-(*===-- llvm_scalar_opts.mli - LLVM OCaml Interface -----------*- OCaml -*-===*
- *
- * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- * See https://llvm.org/LICENSE.txt for license information.
- * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- *
- *===----------------------------------------------------------------------===*)
-
-(** Scalar Transforms.
-
- This interface provides an OCaml API for LLVM scalar transforms, the
- classes in the [LLVMScalarOpts] library. *)
-
-(** See the [llvm::createAggressiveDCEPass] function. *)
-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
- = "llvm_add_alignment_from_assumptions"
-
-(** See the [llvm::createCFGSimplificationPass] function. *)
-external add_cfg_simplification
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_cfg_simplification"
-
-(** See [llvm::createDeadStoreEliminationPass] function. *)
-external add_dead_store_elimination
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_dead_store_elimination"
-
-(** See [llvm::createScalarizerPass] function. *)
-external add_scalarizer
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_scalarizer"
-
-(** See [llvm::createMergedLoadStoreMotionPass] function. *)
-external add_merged_load_store_motion
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_merged_load_store_motion"
-
-(** See the [llvm::createGVNPass] function. *)
-external add_gvn
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_gvn"
-
-(** See the [llvm::createIndVarSimplifyPass] function. *)
-external add_ind_var_simplification
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_ind_var_simplify"
-
-(** See the [llvm::createInstructionCombiningPass] function. *)
-external add_instruction_combination
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_instruction_combining"
-
-(** See the [llvm::createJumpThreadingPass] function. *)
-external add_jump_threading
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_jump_threading"
-
-(** See the [llvm::createLICMPass] function. *)
-external add_licm
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_licm"
-
-(** See the [llvm::createLoopRotatePass] function. *)
-external add_loop_rotation
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_loop_rotate"
-
-(** See the [llvm::createLoopUnrollPass] function. *)
-external add_loop_unroll
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_loop_unroll"
-
-(** See the [llvm::createMemCpyOptPass] function. *)
-external add_memcpy_opt
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_memcpy_opt"
-
-(** See the [llvm::createPartiallyInlineLibCallsPass] function. *)
-external add_partially_inline_lib_calls
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_partially_inline_lib_calls"
-
-(** See the [llvm::createLowerAtomicPass] function. *)
-external add_lower_atomic
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_lower_atomic"
-
-(** See the [llvm::createLowerSwitchPass] function. *)
-external add_lower_switch
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_lower_switch"
-
-(** See the [llvm::createPromoteMemoryToRegisterPass] function. *)
-external add_memory_to_register_promotion
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_promote_memory_to_register"
-
-(** See the [llvm::createReassociatePass] function. *)
-external add_reassociation
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_reassociation"
-
-(** See the [llvm::createSROAPass] function. *)
-external add_scalar_repl_aggregation
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_scalar_repl_aggregates"
-
-(** See the [llvm::createSROAPass] function. *)
-external add_scalar_repl_aggregation_ssa
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_scalar_repl_aggregates_ssa"
-
-(** See the [llvm::createSROAPass] function. *)
-external add_scalar_repl_aggregation_with_threshold
- : int -> [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_scalar_repl_aggregates_with_threshold"
-
-(** See the [llvm::createSimplifyLibCallsPass] function. *)
-external add_lib_call_simplification
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_simplify_lib_calls"
-
-(** See the [llvm::createTailCallEliminationPass] function. *)
-external add_tail_call_elimination
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_tail_call_elimination"
-
-(** See the [llvm::createDemoteMemoryToRegisterPass] function. *)
-external add_memory_to_register_demotion
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_demote_memory_to_register"
-
-(** See the [llvm::createVerifierPass] function. *)
-external add_verifier
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_verifier"
-
-(** See the [llvm::createCorrelatedValuePropagationPass] function. *)
-external add_correlated_value_propagation
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_correlated_value_propagation"
-
-(** See the [llvm::createEarlyCSE] function. *)
-external add_early_cse
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_early_cse"
-
-(** See the [llvm::createLowerExpectIntrinsicPass] function. *)
-external add_lower_expect_intrinsic
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_lower_expect_intrinsic"
-
-(** See the [llvm::createLowerConstantIntrinsicsPass] function. *)
-external add_lower_constant_intrinsics
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_lower_constant_intrinsics"
-
-(** See the [llvm::createTypeBasedAliasAnalysisPass] function. *)
-external add_type_based_alias_analysis
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_type_based_alias_analysis"
-
-(** See the [llvm::createScopedNoAliasAAPass] function. *)
-external add_scoped_no_alias_alias_analysis
- : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
- = "llvm_add_scoped_no_alias_aa"
-
-(** See the [llvm::createBasicAliasAnalysisPass] function. *)
-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"
diff --git a/llvm/bindings/ocaml/transforms/scalar_opts/scalar_opts_ocaml.c b/llvm/bindings/ocaml/transforms/scalar_opts/scalar_opts_ocaml.c
deleted file mode 100644
index a8041695f0edb..0000000000000
--- a/llvm/bindings/ocaml/transforms/scalar_opts/scalar_opts_ocaml.c
+++ /dev/null
@@ -1,231 +0,0 @@
-/*===-- scalar_opts_ocaml.c - LLVM OCaml Glue -------------------*- C++ -*-===*\
-|* *|
-|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *|
-|* Exceptions. *|
-|* See https://llvm.org/LICENSE.txt for license information. *|
-|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *|
-|* *|
-|*===----------------------------------------------------------------------===*|
-|* *|
-|* This file glues LLVM's OCaml interface to its C interface. These functions *|
-|* are by and large transparent wrappers to the corresponding C functions. *|
-|* *|
-|* Note that these functions intentionally take liberties with the CAMLparamX *|
-|* macros, since most of the parameters are not GC heap objects. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#include "llvm-c/Transforms/Scalar.h"
-#include "llvm-c/Transforms/Utils.h"
-#include "caml/mlvalues.h"
-#include "caml/misc.h"
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_aggressive_dce(LLVMPassManagerRef PM) {
- LLVMAddAggressiveDCEPass(PM);
- return Val_unit;
-}
-
-value llvm_add_dce(LLVMPassManagerRef PM) {
- LLVMAddDCEPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_alignment_from_assumptions(LLVMPassManagerRef PM) {
- LLVMAddAlignmentFromAssumptionsPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_cfg_simplification(LLVMPassManagerRef PM) {
- LLVMAddCFGSimplificationPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_dead_store_elimination(LLVMPassManagerRef PM) {
- LLVMAddDeadStoreEliminationPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_scalarizer(LLVMPassManagerRef PM) {
- LLVMAddScalarizerPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_merged_load_store_motion(LLVMPassManagerRef PM) {
- LLVMAddMergedLoadStoreMotionPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_gvn(LLVMPassManagerRef PM) {
- LLVMAddGVNPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_ind_var_simplify(LLVMPassManagerRef PM) {
- LLVMAddIndVarSimplifyPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_instruction_combining(LLVMPassManagerRef PM) {
- LLVMAddInstructionCombiningPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_jump_threading(LLVMPassManagerRef PM) {
- LLVMAddJumpThreadingPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_licm(LLVMPassManagerRef PM) {
- LLVMAddLICMPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_loop_rotate(LLVMPassManagerRef PM) {
- LLVMAddLoopRotatePass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_loop_unroll(LLVMPassManagerRef PM) {
- LLVMAddLoopUnrollPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_memcpy_opt(LLVMPassManagerRef PM) {
- LLVMAddMemCpyOptPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_partially_inline_lib_calls(LLVMPassManagerRef PM) {
- LLVMAddPartiallyInlineLibCallsPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_lower_atomic(LLVMPassManagerRef PM) {
- LLVMAddLowerAtomicPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_lower_switch(LLVMPassManagerRef PM) {
- LLVMAddLowerSwitchPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_promote_memory_to_register(LLVMPassManagerRef PM) {
- LLVMAddPromoteMemoryToRegisterPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_reassociation(LLVMPassManagerRef PM) {
- LLVMAddReassociatePass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_scalar_repl_aggregates(LLVMPassManagerRef PM) {
- LLVMAddScalarReplAggregatesPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_scalar_repl_aggregates_ssa(LLVMPassManagerRef PM) {
- LLVMAddScalarReplAggregatesPassSSA(PM);
- return Val_unit;
-}
-
-/* int -> [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_scalar_repl_aggregates_with_threshold(value threshold,
- LLVMPassManagerRef PM) {
- LLVMAddScalarReplAggregatesPassWithThreshold(PM, Int_val(threshold));
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_simplify_lib_calls(LLVMPassManagerRef PM) {
- LLVMAddSimplifyLibCallsPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_tail_call_elimination(LLVMPassManagerRef PM) {
- LLVMAddTailCallEliminationPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_demote_memory_to_register(LLVMPassManagerRef PM) {
- LLVMAddDemoteMemoryToRegisterPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_verifier(LLVMPassManagerRef PM) {
- LLVMAddVerifierPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_correlated_value_propagation(LLVMPassManagerRef PM) {
- LLVMAddCorrelatedValuePropagationPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_early_cse(LLVMPassManagerRef PM) {
- LLVMAddEarlyCSEPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_lower_expect_intrinsic(LLVMPassManagerRef PM) {
- LLVMAddLowerExpectIntrinsicPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_lower_constant_intrinsics(LLVMPassManagerRef PM) {
- LLVMAddLowerConstantIntrinsicsPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_type_based_alias_analysis(LLVMPassManagerRef PM) {
- LLVMAddTypeBasedAliasAnalysisPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_scoped_no_alias_aa(LLVMPassManagerRef PM) {
- LLVMAddScopedNoAliasAAPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_basic_alias_analysis(LLVMPassManagerRef PM) {
- LLVMAddBasicAliasAnalysisPass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_unify_function_exit_nodes(LLVMPassManagerRef PM) {
- LLVMAddUnifyFunctionExitNodesPass(PM);
- return Val_unit;
-}
diff --git a/llvm/bindings/ocaml/transforms/vectorize/CMakeLists.txt b/llvm/bindings/ocaml/transforms/vectorize/CMakeLists.txt
deleted file mode 100644
index 47af23928ccbb..0000000000000
--- a/llvm/bindings/ocaml/transforms/vectorize/CMakeLists.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-add_ocaml_library(llvm_vectorize
- OCAML llvm_vectorize
- OCAMLDEP llvm
- C vectorize_ocaml
- LLVM Vectorize)
diff --git a/llvm/bindings/ocaml/transforms/vectorize/llvm_vectorize.ml b/llvm/bindings/ocaml/transforms/vectorize/llvm_vectorize.ml
deleted file mode 100644
index a2e280e158489..0000000000000
--- a/llvm/bindings/ocaml/transforms/vectorize/llvm_vectorize.ml
+++ /dev/null
@@ -1,14 +0,0 @@
-(*===-- llvm_vectorize.ml - LLVM OCaml Interface --------------*- OCaml -*-===*
- *
- * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- * See https://llvm.org/LICENSE.txt for license information.
- * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- *
- *===----------------------------------------------------------------------===*)
-
-external add_loop_vectorize
- : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
- = "llvm_add_loop_vectorize"
-external add_slp_vectorize
- : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
- = "llvm_add_slp_vectorize"
diff --git a/llvm/bindings/ocaml/transforms/vectorize/llvm_vectorize.mli b/llvm/bindings/ocaml/transforms/vectorize/llvm_vectorize.mli
deleted file mode 100644
index 7376d9e6d8146..0000000000000
--- a/llvm/bindings/ocaml/transforms/vectorize/llvm_vectorize.mli
+++ /dev/null
@@ -1,22 +0,0 @@
-(*===-- llvm_vectorize.mli - LLVM OCaml Interface -------------*- OCaml -*-===*
- *
- * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- * See https://llvm.org/LICENSE.txt for license information.
- * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- *
- *===----------------------------------------------------------------------===*)
-
-(** Vectorize Transforms.
-
- This interface provides an OCaml API for LLVM vectorize transforms, the
- classes in the [LLVMVectorize] library. *)
-
-(** See the [llvm::createLoopVectorizePass] function. *)
-external add_loop_vectorize
- : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
- = "llvm_add_loop_vectorize"
-
-(** See the [llvm::createSLPVectorizerPass] function. *)
-external add_slp_vectorize
- : [<Llvm.PassManager.any] Llvm.PassManager.t -> unit
- = "llvm_add_slp_vectorize"
diff --git a/llvm/bindings/ocaml/transforms/vectorize/vectorize_ocaml.c b/llvm/bindings/ocaml/transforms/vectorize/vectorize_ocaml.c
deleted file mode 100644
index d9b15bf4588ed..0000000000000
--- a/llvm/bindings/ocaml/transforms/vectorize/vectorize_ocaml.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/*===-- vectorize_ocaml.c - LLVM OCaml Glue ---------------------*- C++ -*-===*\
-|* *|
-|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *|
-|* Exceptions. *|
-|* See https://llvm.org/LICENSE.txt for license information. *|
-|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *|
-|* *|
-|*===----------------------------------------------------------------------===*|
-|* *|
-|* This file glues LLVM's OCaml interface to its C interface. These functions *|
-|* are by and large transparent wrappers to the corresponding C functions. *|
-|* *|
-|* Note that these functions intentionally take liberties with the CAMLparamX *|
-|* macros, since most of the parameters are not GC heap objects. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#include "llvm-c/Transforms/Vectorize.h"
-#include "caml/mlvalues.h"
-#include "caml/misc.h"
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_loop_vectorize(LLVMPassManagerRef PM) {
- LLVMAddLoopVectorizePass(PM);
- return Val_unit;
-}
-
-/* [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
-value llvm_add_slp_vectorize(LLVMPassManagerRef PM) {
- LLVMAddSLPVectorizePass(PM);
- return Val_unit;
-}
diff --git a/llvm/docs/CMakeLists.txt b/llvm/docs/CMakeLists.txt
index 0f2681e0cd86b..5e420a2696329 100644
--- a/llvm/docs/CMakeLists.txt
+++ b/llvm/docs/CMakeLists.txt
@@ -131,11 +131,7 @@ if( NOT uses_ocaml LESS 0 AND LLVM_ENABLE_OCAMLDOC )
ocaml_llvm_irreader
ocaml_llvm_linker
ocaml_llvm_target
- ocaml_llvm_ipo
- ocaml_llvm_passmgr_builder
- ocaml_llvm_scalar_opts
ocaml_llvm_transform_utils
- ocaml_llvm_vectorize
)
foreach(llvm_target ${LLVM_TARGETS_TO_BUILD})
diff --git a/llvm/test/Bindings/OCaml/core.ml b/llvm/test/Bindings/OCaml/core.ml
index f8ed68585d8a8..86a5a115172ce 100644
--- a/llvm/test/Bindings/OCaml/core.ml
+++ b/llvm/test/Bindings/OCaml/core.ml
@@ -1458,29 +1458,6 @@ let test_builder () =
* CHECK: !1 = !{i32 1, !"metadata test"}
*)
-(*===-- Pass Managers -----------------------------------------------------===*)
-
-let test_pass_manager () =
- let (++) x f = ignore (f x); x in
-
- begin group "module pass manager";
- ignore (PassManager.create ()
- ++ PassManager.run_module m
- ++ PassManager.dispose)
- end;
-
- begin group "function pass manager";
- let fty = function_type void_type [| |] in
- let fn = define_function "FunctionPassManager" fty m in
- ignore (build_ret_void (builder_at_end context (entry_block fn)));
-
- ignore (PassManager.create_function m
- ++ PassManager.initialize
- ++ PassManager.run_function fn
- ++ PassManager.finalize
- ++ PassManager.dispose)
- end
-
(*===-- Memory Buffer -----------------------------------------------------===*)
@@ -1523,7 +1500,6 @@ let _ =
suite "basic blocks" test_basic_blocks;
suite "instructions" test_instructions;
suite "builder" test_builder;
- suite "pass manager" test_pass_manager;
suite "memory buffer" test_memory_buffer;
suite "writer" test_writer; (* Keep this last; it disposes m. *)
exit !exit_status
diff --git a/llvm/test/Bindings/OCaml/ipo.ml b/llvm/test/Bindings/OCaml/ipo.ml
deleted file mode 100644
index 9866de4e8ec19..0000000000000
--- a/llvm/test/Bindings/OCaml/ipo.ml
+++ /dev/null
@@ -1,63 +0,0 @@
-(* RUN: rm -rf %t && mkdir -p %t && cp %s %t/ipo_opts.ml
- * RUN: %ocamlc -g -w +A -package llvm.ipo -linkpkg %t/ipo_opts.ml -o %t/executable
- * RUN: %t/executable %t/bitcode.bc
- * RUN: %ocamlopt -g -w +A -package llvm.ipo -linkpkg %t/ipo_opts.ml -o %t/executable
- * RUN: %t/executable %t/bitcode.bc
- * XFAIL: vg_leak
- *)
-
-(* Note: It takes several seconds for ocamlopt to link an executable with
- libLLVMCore.a, so it's better to write a big test than a bunch of
- little ones. *)
-
-open Llvm
-open Llvm_ipo
-open Llvm_target
-
-let context = global_context ()
-let void_type = Llvm.void_type context
-let i8_type = Llvm.i8_type context
-
-(* Tiny unit test framework - really just to help find which line is busted *)
-let print_checkpoints = false
-
-let suite name f =
- if print_checkpoints then
- prerr_endline (name ^ ":");
- f ()
-
-
-(*===-- Fixture -----------------------------------------------------------===*)
-
-let filename = Sys.argv.(1)
-let m = create_module context filename
-
-
-(*===-- Transforms --------------------------------------------------------===*)
-
-let test_transforms () =
- let (++) x f = f x; x in
-
- let fty = function_type i8_type [| |] in
- let fn = define_function "fn" fty m in
- let fn2 = define_function "fn2" fty m in begin
- ignore (build_ret (const_int i8_type 4) (builder_at_end context (entry_block fn)));
- let b = builder_at_end context (entry_block fn2) in
- ignore (build_ret (build_call fty fn [| |] "" b) b);
- end;
-
- ignore (PassManager.create ()
- ++ add_constant_merge
- ++ add_dead_arg_elimination
- ++ add_function_attrs
- ++ add_always_inliner
- ++ add_global_dce
- ++ PassManager.run_module m
- ++ PassManager.dispose)
-
-
-(*===-- Driver ------------------------------------------------------------===*)
-
-let _ =
- suite "transforms" test_transforms;
- dispose_module m
diff --git a/llvm/test/Bindings/OCaml/passmgr_builder.ml b/llvm/test/Bindings/OCaml/passmgr_builder.ml
deleted file mode 100644
index f761b2a31456a..0000000000000
--- a/llvm/test/Bindings/OCaml/passmgr_builder.ml
+++ /dev/null
@@ -1,60 +0,0 @@
-(* RUN: rm -rf %t && mkdir -p %t && cp %s %t/passmgr_builder.ml
- * RUN: %ocamlc -g -w +A -package llvm.passmgr_builder -linkpkg %t/passmgr_builder.ml -o %t/executable
- * RUN: %t/executable %t/bitcode.bc
- * RUN: %ocamlopt -g -w +A -package llvm.passmgr_builder -linkpkg %t/passmgr_builder.ml -o %t/executable
- * RUN: %t/executable %t/bitcode.bc
- * XFAIL: vg_leak
- *)
-
-(* Note: It takes several seconds for ocamlopt to link an executable with
- libLLVMCore.a, so it's better to write a big test than a bunch of
- little ones. *)
-
-open Llvm
-open Llvm_passmgr_builder
-
-let context = global_context ()
-let void_type = Llvm.void_type context
-
-(* Tiny unit test framework - really just to help find which line is busted *)
-let print_checkpoints = false
-
-let suite name f =
- if print_checkpoints then
- prerr_endline (name ^ ":");
- f ()
-
-
-(*===-- Fixture -----------------------------------------------------------===*)
-
-let filename = Sys.argv.(1)
-let m = create_module context filename
-
-
-(*===-- Pass Manager Builder ----------------------------------------------===*)
-
-let test_pmbuilder () =
- let (++) x f = ignore (f x); x in
-
- let module_passmgr = PassManager.create () in
- let func_passmgr = PassManager.create_function m in
-
- ignore (Llvm_passmgr_builder.create ()
- ++ set_opt_level 3
- ++ set_size_level 1
- ++ set_disable_unit_at_a_time false
- ++ set_disable_unroll_loops false
- ++ use_inliner_with_threshold 10
- ++ populate_function_pass_manager func_passmgr
- ++ populate_module_pass_manager module_passmgr);
- Gc.compact ();
-
- PassManager.dispose module_passmgr;
- PassManager.dispose func_passmgr
-
-
-(*===-- Driver ------------------------------------------------------------===*)
-
-let _ =
- suite "pass manager builder" test_pmbuilder;
- dispose_module m
diff --git a/llvm/test/Bindings/OCaml/scalar_opts.ml b/llvm/test/Bindings/OCaml/scalar_opts.ml
deleted file mode 100644
index 861e38c4bf012..0000000000000
--- a/llvm/test/Bindings/OCaml/scalar_opts.ml
+++ /dev/null
@@ -1,87 +0,0 @@
-(* RUN: rm -rf %t && mkdir -p %t && cp %s %t/scalar_opts.ml
- * RUN: %ocamlc -g -w +A -package llvm.scalar_opts -linkpkg %t/scalar_opts.ml -o %t/executable
- * RUN: %t/executable %t/bitcode.bc
- * RUN: %ocamlopt -g -w +A -package llvm.scalar_opts -linkpkg %t/scalar_opts.ml -o %t/executable
- * RUN: %t/executable %t/bitcode.bc
- * XFAIL: vg_leak
- *)
-
-(* Note: It takes several seconds for ocamlopt to link an executable with
- libLLVMCore.a, so it's better to write a big test than a bunch of
- little ones. *)
-
-open Llvm
-open Llvm_scalar_opts
-open Llvm_target
-
-let context = global_context ()
-let void_type = Llvm.void_type context
-
-(* Tiny unit test framework - really just to help find which line is busted *)
-let print_checkpoints = false
-
-let suite name f =
- if print_checkpoints then
- prerr_endline (name ^ ":");
- f ()
-
-
-(*===-- Fixture -----------------------------------------------------------===*)
-
-let filename = Sys.argv.(1)
-let m = create_module context filename
-
-
-(*===-- Transforms --------------------------------------------------------===*)
-
-let test_transforms () =
- let (++) x f = f x; x in
-
- let fty = function_type void_type [| |] in
- let fn = define_function "fn" fty m in
- ignore (build_ret_void (builder_at_end context (entry_block fn)));
-
- ignore (PassManager.create_function m
- ++ add_aggressive_dce
- ++ add_alignment_from_assumptions
- ++ add_cfg_simplification
- ++ add_dead_store_elimination
- ++ add_scalarizer
- ++ add_merged_load_store_motion
- ++ add_gvn
- ++ add_ind_var_simplification
- ++ add_instruction_combination
- ++ add_jump_threading
- ++ add_licm
- ++ add_loop_rotation
- ++ add_loop_unroll
- ++ add_memcpy_opt
- ++ add_partially_inline_lib_calls
- ++ add_lower_switch
- ++ add_memory_to_register_promotion
- ++ add_reassociation
- ++ add_sccp
- ++ add_scalar_repl_aggregation
- ++ add_scalar_repl_aggregation_ssa
- ++ add_scalar_repl_aggregation_with_threshold 4
- ++ add_lib_call_simplification
- ++ add_tail_call_elimination
- ++ add_memory_to_register_demotion
- ++ add_verifier
- ++ add_correlated_value_propagation
- ++ add_early_cse
- ++ add_lower_expect_intrinsic
- ++ add_type_based_alias_analysis
- ++ add_scoped_no_alias_alias_analysis
- ++ add_basic_alias_analysis
- ++ PassManager.initialize
- ++ PassManager.run_function fn
- ++ PassManager.finalize
- ++ PassManager.dispose)
-
-
-(*===-- Driver ------------------------------------------------------------===*)
-
-let _ =
- suite "transforms" test_transforms;
- dispose_module m
diff --git a/llvm/test/Bindings/OCaml/target.ml b/llvm/test/Bindings/OCaml/target.ml
index 900668147b747..e9465fd0eb296 100644
--- a/llvm/test/Bindings/OCaml/target.ml
+++ b/llvm/test/Bindings/OCaml/target.ml
@@ -82,9 +82,7 @@ let test_target_machine () =
assert_equal (TM.cpu machine) "";
assert_equal (TM.features machine) "";
ignore (TM.data_layout machine);
- TM.set_verbose_asm true machine;
- let pm = PassManager.create () in
- TM.add_analysis_passes pm machine
+ TM.set_verbose_asm true machine
(*===-- Code Emission -----------------------------------------------------===*)
diff --git a/llvm/test/Bindings/OCaml/vectorize.ml b/llvm/test/Bindings/OCaml/vectorize.ml
deleted file mode 100644
index 72cd191b36265..0000000000000
--- a/llvm/test/Bindings/OCaml/vectorize.ml
+++ /dev/null
@@ -1,55 +0,0 @@
-(* RUN: rm -rf %t && mkdir -p %t && cp %s %t/vectorize_opts.ml
- * RUN: %ocamlc -g -w +A -package llvm.vectorize -linkpkg %t/vectorize_opts.ml -o %t/executable
- * RUN: %t/executable %t/bitcode.bc
- * RUN: %ocamlopt -g -w +A -package llvm.vectorize -linkpkg %t/vectorize_opts.ml -o %t/executable
- * RUN: %t/executable %t/bitcode.bc
- * XFAIL: vg_leak
- *)
-
-(* Note: It takes several seconds for ocamlopt to link an executable with
- libLLVMCore.a, so it's better to write a big test than a bunch of
- little ones. *)
-
-open Llvm
-open Llvm_vectorize
-open Llvm_target
-
-let context = global_context ()
-let void_type = Llvm.void_type context
-
-(* Tiny unit test framework - really just to help find which line is busted *)
-let print_checkpoints = false
-
-let suite name f =
- if print_checkpoints then
- prerr_endline (name ^ ":");
- f ()
-
-
-(*===-- Fixture -----------------------------------------------------------===*)
-
-let filename = Sys.argv.(1)
-let m = create_module context filename
-
-
-(*===-- Transforms --------------------------------------------------------===*)
-
-let test_transforms () =
- let (++) x f = f x; x in
-
- let fty = function_type void_type [| |] in
- let fn = define_function "fn" fty m in
- ignore (build_ret_void (builder_at_end context (entry_block fn)));
-
- ignore (PassManager.create ()
- ++ add_loop_vectorize
- ++ add_slp_vectorize
- ++ PassManager.run_module m
- ++ PassManager.dispose)
-
-
-(*===-- Driver ------------------------------------------------------------===*)
-
-let _ =
- suite "transforms" test_transforms;
- dispose_module m
diff --git a/llvm/test/CMakeLists.txt b/llvm/test/CMakeLists.txt
index 5f52ce73c7825..9339940baf584 100644
--- a/llvm/test/CMakeLists.txt
+++ b/llvm/test/CMakeLists.txt
@@ -212,11 +212,7 @@ if(TARGET ocaml_llvm)
ocaml_llvm_irreader
ocaml_llvm_linker
ocaml_llvm_target
- ocaml_llvm_ipo
- ocaml_llvm_passmgr_builder
- ocaml_llvm_scalar_opts
ocaml_llvm_transform_utils
- ocaml_llvm_vectorize
)
endif()
More information about the llvm-commits
mailing list