[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