[PATCH] D108504: [InstCombine][NFC] refactor roundtripcast
Krishna Kariya via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 20 23:57:49 PDT 2021
Krishnakariya created this revision.
Herald added subscribers: hiraditya, arichardson.
Krishnakariya requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Split from D107822 <https://reviews.llvm.org/D107822>.
Refactoring "simplifyIntToPtrRoundTripCast" and "isIntToPtrRoundTripCast".
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D108504
Files:
llvm/lib/Transforms/InstCombine/InstCombineInternal.h
llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
Index: llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
===================================================================
--- llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
+++ llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
@@ -349,6 +349,14 @@
// Simplifies IntToPtr/PtrToInt RoundTrip Cast To BitCast.
// inttoptr ( ptrtoint (x) ) --> x
Value *InstCombinerImpl::simplifyIntToPtrRoundTripCast(Value *Val) {
+ if (Value *Ptr = isIntToPtrRoundTripCast(Val)) {
+ return CastInst::CreateBitOrPointerCast(Ptr, Val->getType(), "",
+ cast<Instruction>(Val));
+ }
+ return nullptr;
+}
+
+Value *InstCombinerImpl::isIntToPtrRoundTripCast(Value *Val) {
auto *IntToPtr = dyn_cast<IntToPtrInst>(Val);
if (IntToPtr && DL.getPointerTypeSizeInBits(IntToPtr->getDestTy()) ==
DL.getTypeSizeInBits(IntToPtr->getSrcTy())) {
@@ -359,8 +367,7 @@
PtrToInt->getSrcTy()->getPointerAddressSpace() &&
DL.getPointerTypeSizeInBits(PtrToInt->getSrcTy()) ==
DL.getTypeSizeInBits(PtrToInt->getDestTy())) {
- return CastInst::CreateBitOrPointerCast(PtrToInt->getOperand(0), CastTy,
- "", PtrToInt);
+ return PtrToInt->getOperand(0);
}
}
return nullptr;
Index: llvm/lib/Transforms/InstCombine/InstCombineInternal.h
===================================================================
--- llvm/lib/Transforms/InstCombine/InstCombineInternal.h
+++ llvm/lib/Transforms/InstCombine/InstCombineInternal.h
@@ -343,6 +343,7 @@
Instruction::CastOps isEliminableCastPair(const CastInst *CI1,
const CastInst *CI2);
Value *simplifyIntToPtrRoundTripCast(Value *Val);
+ Value *isIntToPtrRoundTripCast(Value *Val);
Value *foldAndOfICmps(ICmpInst *LHS, ICmpInst *RHS, BinaryOperator &And);
Value *foldOrOfICmps(ICmpInst *LHS, ICmpInst *RHS, BinaryOperator &Or);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D108504.367943.patch
Type: text/x-patch
Size: 1986 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210821/a8b17c81/attachment.bin>
More information about the llvm-commits
mailing list