diff --git a/include/swift/SIL/SILBasicBlock.h b/include/swift/SIL/SILBasicBlock.h index de4332fc4cf..d479c74100d 100644 --- a/include/swift/SIL/SILBasicBlock.h +++ b/include/swift/SIL/SILBasicBlock.h @@ -135,7 +135,6 @@ public: const SILArgument *getBBArg(unsigned i) const { return BBArgList[i]; } SILArgument *getBBArg(unsigned i) { return BBArgList[i]; } SILArgument *replaceBBArg(unsigned i, SILType Ty, ValueDecl *D =nullptr); - size_t getBBArgIndex(SILArgument *Arg); /// \brief Remove all block arguments. void dropAllArgs() { BBArgList.clear(); } diff --git a/include/swift/SILPasses/Utils/SCCVisitor.h b/include/swift/SILPasses/Utils/SCCVisitor.h index 87f5d7887cc..c71a3d2dc3a 100644 --- a/include/swift/SILPasses/Utils/SCCVisitor.h +++ b/include/swift/SILPasses/Utils/SCCVisitor.h @@ -134,7 +134,7 @@ private: if (auto *A = dyn_cast(User)) { auto *BB = A->getParent(); - auto Index = BB->getBBArgIndex(A); + auto Index = A->getIndex(); for (auto *Pred : BB->getPreds()) { auto *V = getArgForTerminator(Pred->getTerminator(), BB, Index); diff --git a/lib/SIL/SILBasicBlock.cpp b/lib/SIL/SILBasicBlock.cpp index 4a50e38d0e2..fdd329593e4 100644 --- a/lib/SIL/SILBasicBlock.cpp +++ b/lib/SIL/SILBasicBlock.cpp @@ -89,15 +89,6 @@ SILArgument *SILBasicBlock::replaceBBArg(unsigned i, SILType Ty, ValueDecl *D) { return NewArg; } -size_t SILBasicBlock::getBBArgIndex(SILArgument *Target) { - auto *Block = Target->getParent(); - for (size_t i = 0, e = Block->getNumBBArg(); i != e; ++i) - if (Block->getBBArg(i) == Target) - return i; - - llvm_unreachable("Expected to find argument in block's argument list!"); -} - SILArgument *SILBasicBlock::createArgument(SILType Ty) { return new (getModule()) SILArgument(Ty, this); } diff --git a/lib/SILPasses/ArrayBoundsCheckOpts.cpp b/lib/SILPasses/ArrayBoundsCheckOpts.cpp index d5a6eb6433d..74c027d6cb5 100644 --- a/lib/SILPasses/ArrayBoundsCheckOpts.cpp +++ b/lib/SILPasses/ArrayBoundsCheckOpts.cpp @@ -860,7 +860,7 @@ private: auto *PreheaderTerm = dyn_cast(Preheader->getTerminator()); if (!PreheaderTerm) return nullptr; - auto Start = PreheaderTerm->getArg(Header->getBBArgIndex(HeaderVal)); + auto Start = PreheaderTerm->getArg(HeaderVal->getIndex()); // Find the exit condition. auto CondBr = dyn_cast(ExitingBlk->getTerminator()); diff --git a/lib/SILPasses/DeadCodeElimination.cpp b/lib/SILPasses/DeadCodeElimination.cpp index 3c79c0f7b1e..d641bb77dcb 100644 --- a/lib/SILPasses/DeadCodeElimination.cpp +++ b/lib/SILPasses/DeadCodeElimination.cpp @@ -236,7 +236,7 @@ void DCE::propagateLiveBlockArgument(SILArgument *Arg) { return; auto *Block = Arg->getParent(); - auto ArgIndex = Block->getBBArgIndex(Arg); + auto ArgIndex = Arg->getIndex(); for (auto Pred : Block->getPreds()) markTerminatorArgsLive(Pred, Block, ArgIndex); diff --git a/lib/SILPasses/SimplifyCFG.cpp b/lib/SILPasses/SimplifyCFG.cpp index 2b88a4fdc13..aa75d94b9e9 100644 --- a/lib/SILPasses/SimplifyCFG.cpp +++ b/lib/SILPasses/SimplifyCFG.cpp @@ -534,7 +534,7 @@ static bool isThreadableSwitchEnumInst(SwitchEnumInst *SEI, if (containsAllocStack(SEIBB)) return false; - auto Idx = SEIBB->getBBArgIndex(Arg); + auto Idx = Arg->getIndex(); auto IncomingBr0 = dyn_cast(((*PIt))->getTerminator()); ++PIt; auto IncomingBr1 = dyn_cast((*PIt)->getTerminator()); diff --git a/lib/SILPasses/Utils/SILSSAUpdater.cpp b/lib/SILPasses/Utils/SILSSAUpdater.cpp index 7c4636f8747..94e0b2a6273 100644 --- a/lib/SILPasses/Utils/SILSSAUpdater.cpp +++ b/lib/SILPasses/Utils/SILSSAUpdater.cpp @@ -129,7 +129,7 @@ static bool isEquivalentPHI(SILArgument *PHI, llvm::SmallDenseMap &ValueMap) { SILBasicBlock *PhiBB = PHI->getParent(); - size_t Idx = PhiBB->getBBArgIndex(PHI); + size_t Idx = PHI->getIndex(); for (auto *PredBB : PhiBB->getPreds()) { auto DesiredVal = ValueMap[PredBB]; OperandValueArrayRef EdgeValues = @@ -236,11 +236,11 @@ public: explicit PHI_iterator(SILArgument *P) // begin iterator : PredIt(P->getParent()->pred_begin()), BB(P->getParent()), - Idx(P->getParent()->getBBArgIndex(P)) {} + Idx(P->getIndex()) {} PHI_iterator(SILArgument *P, bool) // end iterator : PredIt(P->getParent()->pred_end()), BB(P->getParent()), - Idx(P->getParent()->getBBArgIndex(P)) {} + Idx(P->getIndex()) {} PHI_iterator &operator++() { ++PredIt; return *this; } bool operator==(const PHI_iterator& x) const { return PredIt == x.PredIt; } @@ -298,7 +298,7 @@ public: static void AddPHIOperand(SILArgument *PHI, SILValue Val, SILBasicBlock *Pred) { auto *PHIBB = PHI->getParent(); - size_t PhiIdx = PHIBB->getBBArgIndex(PHI); + size_t PhiIdx = PHI->getIndex(); auto *TI = Pred->getTerminator(); changeEdgeValue(TI, PHIBB, PhiIdx, Val); } @@ -322,7 +322,7 @@ public: SILArgument *PHI = ValueIsPHI(Val, Updater); if (PHI) { auto *PhiBB = PHI->getParent(); - size_t PhiIdx = PhiBB->getBBArgIndex(PHI); + size_t PhiIdx = PHI->getIndex(); // If all predecessor edges are 'not set' this is a new phi. for (auto *PredBB : PhiBB->getPreds()) {