[llvm] [OCaml] Remove deprecated const_nuw_neg and build_nuw_neg APIs (PR #171466)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 9 08:11:30 PST 2025
https://github.com/nikic created https://github.com/llvm/llvm-project/pull/171466
I think we usually remove deprecated C API functions from the OCaml bindings right away. These two at least should be essentially useless.
>From 88eef6fcfa2b3e5188335e1442fd96f1afccd231 Mon Sep 17 00:00:00 2001
From: Nikita Popov <npopov at redhat.com>
Date: Tue, 9 Dec 2025 17:02:49 +0100
Subject: [PATCH 1/2] Remove const_nuw_neg
---
llvm/bindings/ocaml/llvm/llvm.ml | 1 -
llvm/bindings/ocaml/llvm/llvm.mli | 5 -----
llvm/bindings/ocaml/llvm/llvm_ocaml.c | 6 ------
llvm/test/Bindings/OCaml/core.ml | 2 --
4 files changed, 14 deletions(-)
diff --git a/llvm/bindings/ocaml/llvm/llvm.ml b/llvm/bindings/ocaml/llvm/llvm.ml
index 3031283055c26..876e662610fef 100644
--- a/llvm/bindings/ocaml/llvm/llvm.ml
+++ b/llvm/bindings/ocaml/llvm/llvm.ml
@@ -649,7 +649,6 @@ external align_of : lltype -> llvalue = "llvm_align_of"
external size_of : lltype -> llvalue = "llvm_size_of"
external const_neg : llvalue -> llvalue = "llvm_const_neg"
external const_nsw_neg : llvalue -> llvalue = "llvm_const_nsw_neg"
-external const_nuw_neg : llvalue -> llvalue = "llvm_const_nuw_neg"
external const_not : llvalue -> llvalue = "llvm_const_not"
external const_add : llvalue -> llvalue -> llvalue = "llvm_const_add"
external const_nsw_add : llvalue -> llvalue -> llvalue = "llvm_const_nsw_add"
diff --git a/llvm/bindings/ocaml/llvm/llvm.mli b/llvm/bindings/ocaml/llvm/llvm.mli
index 460be4fe370b1..2f73e99f93dca 100644
--- a/llvm/bindings/ocaml/llvm/llvm.mli
+++ b/llvm/bindings/ocaml/llvm/llvm.mli
@@ -1096,11 +1096,6 @@ val const_neg : llvalue -> llvalue
See the method [llvm::ConstantExpr::getNSWNeg]. *)
val const_nsw_neg : llvalue -> llvalue
-(** [const_nuw_neg c] returns the arithmetic negation of the constant [c] with
- no unsigned wrapping. The result is undefined if the negation overflows.
- See the method [llvm::ConstantExpr::getNUWNeg]. *)
-val const_nuw_neg : llvalue -> llvalue
-
(** [const_not c] returns the bitwise inverse of the constant [c].
See the method [llvm::ConstantExpr::getNot]. *)
val const_not : llvalue -> llvalue
diff --git a/llvm/bindings/ocaml/llvm/llvm_ocaml.c b/llvm/bindings/ocaml/llvm/llvm_ocaml.c
index a2d948033724c..e5eb5aa933d8f 100644
--- a/llvm/bindings/ocaml/llvm/llvm_ocaml.c
+++ b/llvm/bindings/ocaml/llvm/llvm_ocaml.c
@@ -1164,12 +1164,6 @@ value llvm_const_nsw_neg(value Value) {
return to_val(NegValue);
}
-/* llvalue -> llvalue */
-value llvm_const_nuw_neg(value Value) {
- LLVMValueRef NegValue = LLVMConstNUWNeg(Value_val(Value));
- return to_val(NegValue);
-}
-
/* llvalue -> llvalue */
value llvm_const_not(value Value) {
LLVMValueRef NotValue = LLVMConstNot(Value_val(Value));
diff --git a/llvm/test/Bindings/OCaml/core.ml b/llvm/test/Bindings/OCaml/core.ml
index 9f999be3e9cce..433367ab4af03 100644
--- a/llvm/test/Bindings/OCaml/core.ml
+++ b/llvm/test/Bindings/OCaml/core.ml
@@ -263,7 +263,6 @@ let test_constants () =
group "constant arithmetic";
(* CHECK: @const_neg = global i64 sub
* CHECK: @const_nsw_neg = global i64 sub nsw
- * CHECK: @const_nuw_neg = global i64 sub
* CHECK: @const_not = global i64 xor
* CHECK: @const_add = global i64 add
* CHECK: @const_nsw_add = global i64 add nsw
@@ -279,7 +278,6 @@ let test_constants () =
let foldbomb = const_ptrtoint foldbomb_gv i64_type in
ignore (define_global "const_neg" (const_neg foldbomb) m);
ignore (define_global "const_nsw_neg" (const_nsw_neg foldbomb) m);
- ignore (define_global "const_nuw_neg" (const_nuw_neg foldbomb) m);
ignore (define_global "const_not" (const_not foldbomb) m);
ignore (define_global "const_add" (const_add foldbomb five) m);
ignore (define_global "const_nsw_add" (const_nsw_add foldbomb five) m);
>From e6c4f18a4feb6eed21bb41844c2a450c0ca24ddd Mon Sep 17 00:00:00 2001
From: Nikita Popov <npopov at redhat.com>
Date: Tue, 9 Dec 2025 17:03:27 +0100
Subject: [PATCH 2/2] Remove build_nuw_neg
---
llvm/bindings/ocaml/llvm/llvm.ml | 2 --
llvm/bindings/ocaml/llvm/llvm.mli | 7 -------
llvm/bindings/ocaml/llvm/llvm_ocaml.c | 6 ------
llvm/test/Bindings/OCaml/core.ml | 2 --
4 files changed, 17 deletions(-)
diff --git a/llvm/bindings/ocaml/llvm/llvm.ml b/llvm/bindings/ocaml/llvm/llvm.ml
index 876e662610fef..d78d5d8000f33 100644
--- a/llvm/bindings/ocaml/llvm/llvm.ml
+++ b/llvm/bindings/ocaml/llvm/llvm.ml
@@ -1263,8 +1263,6 @@ external build_neg : llvalue -> string -> llbuilder -> llvalue
= "llvm_build_neg"
external build_nsw_neg : llvalue -> string -> llbuilder -> llvalue
= "llvm_build_nsw_neg"
-external build_nuw_neg : llvalue -> string -> llbuilder -> llvalue
- = "llvm_build_nuw_neg"
external build_fneg : llvalue -> string -> llbuilder -> llvalue
= "llvm_build_fneg"
external build_not : llvalue -> string -> llbuilder -> llvalue
diff --git a/llvm/bindings/ocaml/llvm/llvm.mli b/llvm/bindings/ocaml/llvm/llvm.mli
index 2f73e99f93dca..8ba49f9c2474b 100644
--- a/llvm/bindings/ocaml/llvm/llvm.mli
+++ b/llvm/bindings/ocaml/llvm/llvm.mli
@@ -2207,13 +2207,6 @@ val build_neg : llvalue -> string -> llbuilder -> llvalue
See the method [llvm::LLVMBuilder::CreateNeg]. *)
val build_nsw_neg : llvalue -> string -> llbuilder -> llvalue
-(** [build_nuw_neg x name b] creates a
- [%name = nuw sub 0, %x]
- instruction at the position specified by the instruction builder [b].
- [-0.0] is used for floating point types to compute the correct sign.
- See the method [llvm::LLVMBuilder::CreateNeg]. *)
-val build_nuw_neg : llvalue -> string -> llbuilder -> llvalue
-
(** [build_fneg x name b] creates a
[%name = fsub 0, %x]
instruction at the position specified by the instruction builder [b].
diff --git a/llvm/bindings/ocaml/llvm/llvm_ocaml.c b/llvm/bindings/ocaml/llvm/llvm_ocaml.c
index e5eb5aa933d8f..cd2bd73f57351 100644
--- a/llvm/bindings/ocaml/llvm/llvm_ocaml.c
+++ b/llvm/bindings/ocaml/llvm/llvm_ocaml.c
@@ -2354,12 +2354,6 @@ value llvm_build_nsw_neg(value X, value Name, value B) {
LLVMBuildNSWNeg(Builder_val(B), Value_val(X), String_val(Name)));
}
-/* llvalue -> string -> llbuilder -> llvalue */
-value llvm_build_nuw_neg(value X, value Name, value B) {
- return to_val(
- LLVMBuildNUWNeg(Builder_val(B), Value_val(X), String_val(Name)));
-}
-
/* llvalue -> string -> llbuilder -> llvalue */
value llvm_build_fneg(value X, value Name, value B) {
return to_val(LLVMBuildFNeg(Builder_val(B), Value_val(X), String_val(Name)));
diff --git a/llvm/test/Bindings/OCaml/core.ml b/llvm/test/Bindings/OCaml/core.ml
index 433367ab4af03..289fe013bed2a 100644
--- a/llvm/test/Bindings/OCaml/core.ml
+++ b/llvm/test/Bindings/OCaml/core.ml
@@ -1316,7 +1316,6 @@ let test_builder () =
* CHECK: %build_xor = xor i32 %P1, %P2
* CHECK: %build_neg = sub i32 0, %P1
* CHECK: %build_nsw_neg = sub nsw i32 0, %P1
- * CHECK: %build_nuw_neg = sub nuw i32 0, %P1
* CHECK: %build_fneg = fneg float %F1
* CHECK: %build_not = xor i32 %P1, -1
* CHECK: %build_freeze = freeze i32 %P1
@@ -1348,7 +1347,6 @@ let test_builder () =
ignore (build_xor p1 p2 "build_xor" b);
ignore (build_neg p1 "build_neg" b);
ignore (build_nsw_neg p1 "build_nsw_neg" b);
- ignore (build_nuw_neg p1 "build_nuw_neg" b);
ignore (build_fneg f1 "build_fneg" b);
ignore (build_not p1 "build_not" b);
ignore (build_freeze p1 "build_freeze" b);
More information about the llvm-commits
mailing list