[llvm] 5c80217 - [IRBuilder] Move CreateNot() to fold API
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 1 05:49:05 PDT 2022
Author: Nikita Popov
Date: 2022-07-01T14:48:57+02:00
New Revision: 5c8021777c3a2bc2c4a97e8913929a6ca969db95
URL: https://github.com/llvm/llvm-project/commit/5c8021777c3a2bc2c4a97e8913929a6ca969db95
DIFF: https://github.com/llvm/llvm-project/commit/5c8021777c3a2bc2c4a97e8913929a6ca969db95.diff
LOG: [IRBuilder] Move CreateNot() to fold API
Drop the IRBuilderFolder method entirely and base this on
CreateXor(V, -1) instead, so this will now go through FoldBinOp.
May not be NFC if the InstSimplifyBuilder is used.
Added:
Modified:
llvm/include/llvm/Analysis/InstSimplifyFolder.h
llvm/include/llvm/Analysis/TargetFolder.h
llvm/include/llvm/IR/ConstantFolder.h
llvm/include/llvm/IR/IRBuilder.h
llvm/include/llvm/IR/IRBuilderFolder.h
llvm/include/llvm/IR/NoFolder.h
Removed:
################################################################################
diff --git a/llvm/include/llvm/Analysis/InstSimplifyFolder.h b/llvm/include/llvm/Analysis/InstSimplifyFolder.h
index 33b6f12efbca..53fd06c8b0cb 100644
--- a/llvm/include/llvm/Analysis/InstSimplifyFolder.h
+++ b/llvm/include/llvm/Analysis/InstSimplifyFolder.h
@@ -118,9 +118,6 @@ class InstSimplifyFolder final : public IRBuilderFolder {
Value *CreateFNeg(Constant *C) const override {
return ConstFolder.CreateFNeg(C);
}
- Value *CreateNot(Constant *C) const override {
- return ConstFolder.CreateNot(C);
- }
Value *CreateUnOp(Instruction::UnaryOps Opc, Constant *C) const override {
return ConstFolder.CreateUnOp(Opc, C);
diff --git a/llvm/include/llvm/Analysis/TargetFolder.h b/llvm/include/llvm/Analysis/TargetFolder.h
index 93ac33ce5eff..1d9b103e2acc 100644
--- a/llvm/include/llvm/Analysis/TargetFolder.h
+++ b/llvm/include/llvm/Analysis/TargetFolder.h
@@ -175,9 +175,6 @@ class TargetFolder final : public IRBuilderFolder {
Constant *CreateFNeg(Constant *C) const override {
return Fold(ConstantExpr::getFNeg(C));
}
- Constant *CreateNot(Constant *C) const override {
- return Fold(ConstantExpr::getNot(C));
- }
Constant *CreateUnOp(Instruction::UnaryOps Opc, Constant *C) const override {
return Fold(ConstantExpr::get(Opc, C));
diff --git a/llvm/include/llvm/IR/ConstantFolder.h b/llvm/include/llvm/IR/ConstantFolder.h
index 1243043a64d6..320e784b58af 100644
--- a/llvm/include/llvm/IR/ConstantFolder.h
+++ b/llvm/include/llvm/IR/ConstantFolder.h
@@ -167,10 +167,6 @@ class ConstantFolder final : public IRBuilderFolder {
return ConstantExpr::getFNeg(C);
}
- Constant *CreateNot(Constant *C) const override {
- return ConstantExpr::getNot(C);
- }
-
Constant *CreateUnOp(Instruction::UnaryOps Opc, Constant *C) const override {
return ConstantExpr::get(Opc, C);
}
diff --git a/llvm/include/llvm/IR/IRBuilder.h b/llvm/include/llvm/IR/IRBuilder.h
index 902d945baabe..885da3c2c9c7 100644
--- a/llvm/include/llvm/IR/IRBuilder.h
+++ b/llvm/include/llvm/IR/IRBuilder.h
@@ -1610,9 +1610,7 @@ class IRBuilderBase {
}
Value *CreateNot(Value *V, const Twine &Name = "") {
- if (auto *VC = dyn_cast<Constant>(V))
- return Insert(Folder.CreateNot(VC), Name);
- return Insert(BinaryOperator::CreateNot(V), Name);
+ return CreateXor(V, Constant::getAllOnesValue(V->getType()), Name);
}
Value *CreateUnOp(Instruction::UnaryOps Opc,
diff --git a/llvm/include/llvm/IR/IRBuilderFolder.h b/llvm/include/llvm/IR/IRBuilderFolder.h
index 1cc59938b2d9..258e0d80ac90 100644
--- a/llvm/include/llvm/IR/IRBuilderFolder.h
+++ b/llvm/include/llvm/IR/IRBuilderFolder.h
@@ -74,7 +74,6 @@ class IRBuilderFolder {
virtual Value *CreateNeg(Constant *C,
bool HasNUW = false, bool HasNSW = false) const = 0;
virtual Value *CreateFNeg(Constant *C) const = 0;
- virtual Value *CreateNot(Constant *C) const = 0;
virtual Value *CreateUnOp(Instruction::UnaryOps Opc, Constant *C) const = 0;
//===--------------------------------------------------------------------===//
diff --git a/llvm/include/llvm/IR/NoFolder.h b/llvm/include/llvm/IR/NoFolder.h
index 8f3f1d6565c9..cf6d9cb1f479 100644
--- a/llvm/include/llvm/IR/NoFolder.h
+++ b/llvm/include/llvm/IR/NoFolder.h
@@ -119,10 +119,6 @@ class NoFolder final : public IRBuilderFolder {
return UnaryOperator::CreateFNeg(C);
}
- Instruction *CreateNot(Constant *C) const override {
- return BinaryOperator::CreateNot(C);
- }
-
Instruction *CreateUnOp(Instruction::UnaryOps Opc,
Constant *C) const override {
return UnaryOperator::Create(Opc, C);
More information about the llvm-commits
mailing list