mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Remove SILBasicBlock::getBBArgIndex(SILArgument *) in favor of SILArgument::getIndex().
The index is a property of the argument. There is no reason from a modeling perspective to go through the BB to get it. Swift SVN r21338
This commit is contained in:
@@ -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(); }
|
||||
|
||||
@@ -134,7 +134,7 @@ private:
|
||||
|
||||
if (auto *A = dyn_cast<SILArgument>(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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -860,7 +860,7 @@ private:
|
||||
auto *PreheaderTerm = dyn_cast<BranchInst>(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<CondBranchInst>(ExitingBlk->getTerminator());
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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<BranchInst>(((*PIt))->getTerminator());
|
||||
++PIt;
|
||||
auto IncomingBr1 = dyn_cast<BranchInst>((*PIt)->getTerminator());
|
||||
|
||||
@@ -129,7 +129,7 @@ static bool
|
||||
isEquivalentPHI(SILArgument *PHI,
|
||||
llvm::SmallDenseMap<SILBasicBlock *, SILValue, 8> &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()) {
|
||||
|
||||
Reference in New Issue
Block a user