[llvm] 5e81d67 - [PPCBoolRetToInt] Avoid use of ConstantExpr::getZExt() (NFC)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 28 07:02:00 PDT 2023
Author: Nikita Popov
Date: 2023-09-28T16:01:51+02:00
New Revision: 5e81d6742a8c9b075168c5c6f871e5bf7876be51
URL: https://github.com/llvm/llvm-project/commit/5e81d6742a8c9b075168c5c6f871e5bf7876be51
DIFF: https://github.com/llvm/llvm-project/commit/5e81d6742a8c9b075168c5c6f871e5bf7876be51.diff
LOG: [PPCBoolRetToInt] Avoid use of ConstantExpr::getZExt() (NFC)
Use IRBuilder instead, which will either insert an instruction
or constant fold.
Added:
Modified:
llvm/lib/Target/PowerPC/PPCBoolRetToInt.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/PowerPC/PPCBoolRetToInt.cpp b/llvm/lib/Target/PowerPC/PPCBoolRetToInt.cpp
index 3c6b1f84b821113..20f53bd4badf1d3 100644
--- a/llvm/lib/Target/PowerPC/PPCBoolRetToInt.cpp
+++ b/llvm/lib/Target/PowerPC/PPCBoolRetToInt.cpp
@@ -45,6 +45,7 @@
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
+#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/OperandTraits.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Use.h"
@@ -95,8 +96,6 @@ class PPCBoolRetToInt : public FunctionPass {
Type *IntTy = ST->isPPC64() ? Type::getInt64Ty(V->getContext())
: Type::getInt32Ty(V->getContext());
- if (auto *C = dyn_cast<Constant>(V))
- return ConstantExpr::getZExt(C, IntTy);
if (auto *P = dyn_cast<PHINode>(V)) {
// Temporarily set the operands to 0. We'll fix this later in
// runOnUse.
@@ -108,13 +107,12 @@ class PPCBoolRetToInt : public FunctionPass {
return Q;
}
- auto *A = dyn_cast<Argument>(V);
- auto *I = dyn_cast<Instruction>(V);
- assert((A || I) && "Unknown value type");
-
- auto InstPt =
- A ? &*A->getParent()->getEntryBlock().begin() : I->getNextNode();
- return new ZExtInst(V, IntTy, "", InstPt);
+ IRBuilder IRB(V->getContext());
+ if (auto *I = dyn_cast<Instruction>(V))
+ IRB.SetInsertPoint(I->getNextNode());
+ else
+ IRB.SetInsertPoint(&Func->getEntryBlock(), Func->getEntryBlock().begin());
+ return IRB.CreateZExt(V, IntTy);
}
typedef SmallPtrSet<const PHINode *, 8> PHINodeSet;
@@ -196,6 +194,7 @@ class PPCBoolRetToInt : public FunctionPass {
auto &TM = TPC->getTM<PPCTargetMachine>();
ST = TM.getSubtargetImpl(F);
+ Func = &F;
PHINodeSet PromotablePHINodes = getPromotablePHINodes(F);
B2IMap Bool2IntMap;
@@ -277,6 +276,7 @@ class PPCBoolRetToInt : public FunctionPass {
private:
const PPCSubtarget *ST;
+ Function *Func;
};
} // end anonymous namespace
More information about the llvm-commits
mailing list