summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorLone_Wolf2023-02-26 13:09:04 +0100
committerLone_Wolf2023-02-26 13:09:04 +0100
commit84afb56696e392af9517f30cb406fee5073a3498 (patch)
tree606c325ff9722e470eaa4a3df1bca10730c1c16f
parent5cb6bb8bed8d4ef863858c834bf1f2830345fc9d (diff)
downloadaur-84afb56696e392af9517f30cb406fee5073a3498.tar.gz
revert another commit to keep mesa-minimal-git building
-rw-r--r--.SRCINFO9
-rw-r--r--0001-OCaml-Remove-all-PassManager-related-functions.patch1622
-rw-r--r--PKGBUILD11
3 files changed, 1636 insertions, 6 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 6301233f0099..f27786dbbc24 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,5 +1,5 @@
pkgbase = llvm-minimal-git
- pkgver = 17.0.0_r452740.1c2280264058
+ pkgver = 17.0.0_r452967.d9f6077db05c
pkgrel = 1
url = https://llvm.org/
arch = x86_64
@@ -22,18 +22,21 @@ pkgbase = llvm-minimal-git
source = local://llvm-config.h
source = git+https://github.com/KhronosGroup/SPIRV-LLVM-Translator.git
source = 0001-IPSCCP-Remove-legacy-pass.patch
+ source = 0001-OCaml-Remove-all-PassManager-related-functions.patch
md5sums = SKIP
md5sums = 295c343dcd457dc534662f011d7cff1a
md5sums = SKIP
md5sums = 245054bc67dec3eb30329bbdeed171b1
+ md5sums = 4c5ac9bca18c8a92280b1699f2f85a16
sha512sums = SKIP
sha512sums = 75e743dea28b280943b3cc7f8bbb871b57d110a7f2b9da2e6845c1c36bf170dd883fca54e463f5f49e0c3effe07fbd0db0f8cf5a12a2469d3f792af21a73fcdd
sha512sums = SKIP
sha512sums = 4c1e8a455163ceb1e7d3f09f5e68f731e47f2346a2f62e1fe97b19f54c16781efc0b75d52304fe9d4aa62512fd6f32b7bd6e12b319cbe72e7831f1a056ffbfd0
+ sha512sums = 92f971db948e8acd4a55cb46ef28dc394c5df07f57844b63d82fc19436e2dfe7b184599ca17d84ef4fa63f6281628d8cc734d74dcc95bc0eee8a5e7c3778f49a
pkgname = llvm-minimal-git
pkgdesc = Collection of modular and reusable compiler and toolchain technologies
- depends = llvm-libs-minimal-git=17.0.0_r452740.1c2280264058-1
+ depends = llvm-libs-minimal-git=17.0.0_r452967.d9f6077db05c-1
depends = perl
optdepends = python: for using lit (LLVM Integrated Tester)
optdepends = python-setuptools: for using lit
@@ -57,7 +60,7 @@ pkgname = llvm-libs-minimal-git
pkgname = spirv-llvm-translator-minimal-git
pkgdesc = Tool and a library for bi-directional translation between SPIR-V and LLVM IR, trunk version
- depends = llvm-minimal-git=17.0.0_r452740.1c2280264058-1
+ depends = llvm-minimal-git=17.0.0_r452967.d9f6077db05c-1
depends = spirv-tools-git
provides = spirv-llvm-translator
conflicts = spirv-llvm-translator
diff --git a/0001-OCaml-Remove-all-PassManager-related-functions.patch b/0001-OCaml-Remove-all-PassManager-related-functions.patch
new file mode 100644
index 000000000000..49c5049c5f66
--- /dev/null
+++ b/0001-OCaml-Remove-all-PassManager-related-functions.patch
@@ -0,0 +1,1622 @@
+From e0efe46b33068f2e651e850cdc3ede0306f1853c Mon Sep 17 00:00:00 2001
+From: Alan Hu <alanh@ccs.neu.edu>
+Date: Fri, 24 Feb 2023 13:14:11 -0800
+Subject: [PATCH] [OCaml] Remove all PassManager-related functions
+
+Reviewed By: aeubanks, nikic
+
+Differential Revision: https://reviews.llvm.org/D144751
+---
+ llvm/bindings/ocaml/llvm/llvm.ml | 18 --
+ llvm/bindings/ocaml/llvm/llvm.mli | 51 ----
+ llvm/bindings/ocaml/llvm/llvm_ocaml.c | 33 ---
+ llvm/bindings/ocaml/target/llvm_target.ml | 2 -
+ llvm/bindings/ocaml/target/llvm_target.mli | 4 -
+ llvm/bindings/ocaml/target/target_ocaml.c | 7 -
+ llvm/bindings/ocaml/transforms/CMakeLists.txt | 5 +-
+ .../ocaml/transforms/ipo/CMakeLists.txt | 5 -
+ .../bindings/ocaml/transforms/ipo/ipo_ocaml.c | 50 ----
+ .../bindings/ocaml/transforms/ipo/llvm_ipo.ml | 23 --
+ .../ocaml/transforms/ipo/llvm_ipo.mli | 38 ---
+ .../transforms/passmgr_builder/CMakeLists.txt | 5 -
+ .../passmgr_builder/llvm_passmgr_builder.ml | 28 ---
+ .../passmgr_builder/llvm_passmgr_builder.mli | 48 ----
+ .../passmgr_builder/passmgr_builder_ocaml.c | 92 -------
+ .../transforms/scalar_opts/CMakeLists.txt | 5 -
+ .../scalar_opts/llvm_scalar_opts.ml | 116 ---------
+ .../scalar_opts/llvm_scalar_opts.mli | 187 --------------
+ .../scalar_opts/scalar_opts_ocaml.c | 231 ------------------
+ .../ocaml/transforms/vectorize/CMakeLists.txt | 5 -
+ .../transforms/vectorize/llvm_vectorize.ml | 14 --
+ .../transforms/vectorize/llvm_vectorize.mli | 22 --
+ .../transforms/vectorize/vectorize_ocaml.c | 32 ---
+ llvm/docs/CMakeLists.txt | 4 -
+ llvm/test/Bindings/OCaml/core.ml | 24 --
+ llvm/test/Bindings/OCaml/ipo.ml | 63 -----
+ llvm/test/Bindings/OCaml/passmgr_builder.ml | 60 -----
+ llvm/test/Bindings/OCaml/scalar_opts.ml | 87 -------
+ llvm/test/Bindings/OCaml/target.ml | 4 +-
+ llvm/test/Bindings/OCaml/vectorize.ml | 55 -----
+ llvm/test/CMakeLists.txt | 4 -
+ 31 files changed, 2 insertions(+), 1320 deletions(-)
+ delete mode 100644 llvm/bindings/ocaml/transforms/ipo/CMakeLists.txt
+ delete mode 100644 llvm/bindings/ocaml/transforms/ipo/ipo_ocaml.c
+ delete mode 100644 llvm/bindings/ocaml/transforms/ipo/llvm_ipo.ml
+ delete mode 100644 llvm/bindings/ocaml/transforms/ipo/llvm_ipo.mli
+ delete mode 100644 llvm/bindings/ocaml/transforms/passmgr_builder/CMakeLists.txt
+ delete mode 100644 llvm/bindings/ocaml/transforms/passmgr_builder/llvm_passmgr_builder.ml
+ delete mode 100644 llvm/bindings/ocaml/transforms/passmgr_builder/llvm_passmgr_builder.mli
+ delete mode 100644 llvm/bindings/ocaml/transforms/passmgr_builder/passmgr_builder_ocaml.c
+ delete mode 100644 llvm/bindings/ocaml/transforms/scalar_opts/CMakeLists.txt
+ delete mode 100644 llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.ml
+ delete mode 100644 llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.mli
+ delete mode 100644 llvm/bindings/ocaml/transforms/scalar_opts/scalar_opts_ocaml.c
+ delete mode 100644 llvm/bindings/ocaml/transforms/vectorize/CMakeLists.txt
+ delete mode 100644 llvm/bindings/ocaml/transforms/vectorize/llvm_vectorize.ml
+ delete mode 100644 llvm/bindings/ocaml/transforms/vectorize/llvm_vectorize.mli
+ delete mode 100644 llvm/bindings/ocaml/transforms/vectorize/vectorize_ocaml.c
+ delete mode 100644 llvm/test/Bindings/OCaml/ipo.ml
+ delete mode 100644 llvm/test/Bindings/OCaml/passmgr_builder.ml
+ delete mode 100644 llvm/test/Bindings/OCaml/scalar_opts.ml
+ delete mode 100644 llvm/test/Bindings/OCaml/vectorize.ml
+
+diff --git a/llvm/bindings/ocaml/llvm/llvm.ml b/llvm/bindings/ocaml/llvm/llvm.ml
+index 10d44a6cf998..4487866891e4 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 38bf555d0230..59ac5b855130 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 0762ebef1bb0..dff14cf79c55 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 0922ebe55345..29af0187f940 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 8d310793bea2..56ecb2d908dd 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 2b7259bf2bc5..d0bc6f162f0d 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 beb8694019b7..0628d6763874 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 4b8784fad67b..000000000000
+--- 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 008d18e0822b..000000000000
+--- 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 e54ee494e7be..000000000000
+--- 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 baa098495e9c..000000000000
+--- 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 b012863d8ec7..000000000000
+--- 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 c39a592c47d3..000000000000
+--- 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 d2861ea343b6..000000000000
+--- 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 de0a76219d37..000000000000
+--- 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 d680b02046c6..000000000000
+--- 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 cf212b90f717..000000000000
+--- 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 ff21c357f74c..000000000000
+--- 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 a8041695f0ed..000000000000
+--- 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 47af23928ccb..000000000000
+--- 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 a2e280e15848..000000000000
+--- 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 7376d9e6d814..000000000000
+--- 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 d9b15bf4588e..000000000000
+--- 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 0f2681e0cd86..5e420a269632 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 f8ed68585d8a..86a5a115172c 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 9866de4e8ec1..000000000000
+--- 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 f761b2a31456..000000000000
+--- 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 861e38c4bf01..000000000000
+--- 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 900668147b74..e9465fd0eb29 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 72cd191b3626..000000000000
+--- 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 5f52ce73c782..9339940baf58 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()
+
+--
+2.39.2
+
diff --git a/PKGBUILD b/PKGBUILD
index b2eba42295c4..2e81a8bdbf97 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -16,7 +16,7 @@
pkgbase=llvm-minimal-git
pkgname=('llvm-minimal-git' 'llvm-libs-minimal-git' 'spirv-llvm-translator-minimal-git')
-pkgver=17.0.0_r452740.1c2280264058
+pkgver=17.0.0_r452967.d9f6077db05c
pkgrel=1
arch=('x86_64')
url="https://llvm.org/"
@@ -27,16 +27,19 @@ source=("llvm-project::git+https://github.com/llvm/llvm-project.git"
'local://llvm-config.h'
"git+https://github.com/KhronosGroup/SPIRV-LLVM-Translator.git"
'0001-IPSCCP-Remove-legacy-pass.patch'
+ '0001-OCaml-Remove-all-PassManager-related-functions.patch'
)
md5sums=('SKIP'
'295c343dcd457dc534662f011d7cff1a'
'SKIP'
- '245054bc67dec3eb30329bbdeed171b1')
+ '245054bc67dec3eb30329bbdeed171b1'
+ '4c5ac9bca18c8a92280b1699f2f85a16')
sha512sums=('SKIP'
'75e743dea28b280943b3cc7f8bbb871b57d110a7f2b9da2e6845c1c36bf170dd883fca54e463f5f49e0c3effe07fbd0db0f8cf5a12a2469d3f792af21a73fcdd'
'SKIP'
- '4c1e8a455163ceb1e7d3f09f5e68f731e47f2346a2f62e1fe97b19f54c16781efc0b75d52304fe9d4aa62512fd6f32b7bd6e12b319cbe72e7831f1a056ffbfd0')
+ '4c1e8a455163ceb1e7d3f09f5e68f731e47f2346a2f62e1fe97b19f54c16781efc0b75d52304fe9d4aa62512fd6f32b7bd6e12b319cbe72e7831f1a056ffbfd0'
+ '92f971db948e8acd4a55cb46ef28dc394c5df07f57844b63d82fc19436e2dfe7b184599ca17d84ef4fa63f6281628d8cc734d74dcc95bc0eee8a5e7c3778f49a')
options=('staticlibs' '!lto')
# explicitly disable lto to reduce number of build hangs / test failures
@@ -65,6 +68,8 @@ pkgver() {
prepare() {
+ # revert https://github.com/llvm/llvm-project/commit/e0efe46b33068f2e651e850cdc3ede0306f1853c so the passmanager patch keeps working
+ patch --directory="llvm-project" --reverse --strip=1 --input="${srcdir}/0001-OCaml-Remove-all-PassManager-related-functions.patch"
# reverting commit b677d0753c0a771c6203607f5dbb56189193a14c , see https://gitlab.freedesktop.org/mesa/mesa/-/issues/8297
patch --directory="llvm-project" --reverse --strip=1 --input="${srcdir}/0001-IPSCCP-Remove-legacy-pass.patch"