https://github.com/arsenm created https://github.com/llvm/llvm-project/pull/134275
None >From 94bafd4dced658cf81b4ab36af65496be827e848 Mon Sep 17 00:00:00 2001 From: Matt Arsenault <matthew.arsena...@amd.com> Date: Thu, 3 Apr 2025 23:44:32 +0700 Subject: [PATCH] ObjCARCContract: Use stripPointerCastsAndAliases --- .../Transforms/ObjCARC/ObjCARCContract.cpp | 34 ++++++------------- 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/llvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp b/llvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp index e11748b2c9dbb..ed7a235f5e2e3 100644 --- a/llvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp +++ b/llvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp @@ -661,30 +661,16 @@ bool ObjCARCContract::run(Function &F, AAResults *A, DominatorTree *D) { Value *Arg = cast<CallInst>(Inst)->getArgOperand(0); - // TODO: Change this to a do-while. - for (;;) { - ReplaceArgUses(Arg); - - // If Arg is a no-op casted pointer, strip one level of casts and iterate. - if (const BitCastInst *BI = dyn_cast<BitCastInst>(Arg)) - Arg = BI->getOperand(0); - else if (isa<GEPOperator>(Arg) && - cast<GEPOperator>(Arg)->hasAllZeroIndices()) - Arg = cast<GEPOperator>(Arg)->getPointerOperand(); - else if (isa<GlobalAlias>(Arg) && - !cast<GlobalAlias>(Arg)->isInterposable()) - Arg = cast<GlobalAlias>(Arg)->getAliasee(); - else { - // If Arg is a PHI node, get PHIs that are equivalent to it and replace - // their uses. - if (PHINode *PN = dyn_cast<PHINode>(Arg)) { - SmallVector<Value *, 1> PHIList; - getEquivalentPHIs(*PN, PHIList); - for (Value *PHI : PHIList) - ReplaceArgUses(PHI); - } - break; - } + ReplaceArgUses(Arg); + + Arg = Arg->stripPointerCastsAndAliases(); + // If Arg is a PHI node, get PHIs that are equivalent to it and replace + // their uses. + if (PHINode *PN = dyn_cast<PHINode>(Arg)) { + SmallVector<Value *, 1> PHIList; + getEquivalentPHIs(*PN, PHIList); + for (Value *PHI : PHIList) + ReplaceArgUses(PHI); } } _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits