diff --git a/polly/include/polly/ScopInfo.h b/polly/include/polly/ScopInfo.h index 7b6f13627826..b6fcddc6379a 100644 --- a/polly/include/polly/ScopInfo.h +++ b/polly/include/polly/ScopInfo.h @@ -1539,7 +1539,9 @@ public: /// Set the list of instructions for this statement. It replaces the current /// list. - void setInstructions(ArrayRef Range); + void setInstructions(ArrayRef Range) { + Instructions.assign(Range.begin(), Range.end()); + } std::vector::const_iterator insts_begin() const { return Instructions.begin(); @@ -1947,7 +1949,7 @@ private: void addScopStmt(Region *R, StringRef Name, Loop *SurroundingLoop, std::vector EntryBlockInstructions); - /// Removes @p Stmt from the StmtMap and InstStmtMap. + /// Removes @p Stmt from the StmtMap. void removeFromStmtMap(ScopStmt &Stmt); /// Removes all statements where the entry block of the statement does not @@ -2360,12 +2362,6 @@ public: return InstStmtMap.lookup(Inst); } - /// Update the content of InstStmtMap for @p Stmt. @p OldList contains the - /// previous instructions in @p Stmt and is updated to contain the - /// instructions in @p NewList. - void updateInstStmtMap(ArrayRef OldList, - ArrayRef NewList, ScopStmt *Stmt); - /// Return the number of statements in the SCoP. size_t getSize() const { return Stmts.size(); } diff --git a/polly/lib/Analysis/ScopInfo.cpp b/polly/lib/Analysis/ScopInfo.cpp index da3e618a4c4a..fdb06be00546 100644 --- a/polly/lib/Analysis/ScopInfo.cpp +++ b/polly/lib/Analysis/ScopInfo.cpp @@ -1249,11 +1249,6 @@ BasicBlock *ScopStmt::getEntryBlock() const { unsigned ScopStmt::getNumIterators() const { return NestLoops.size(); } -void ScopStmt::setInstructions(ArrayRef Range) { - getParent()->updateInstStmtMap(Instructions, Range, this); - Instructions.assign(Range.begin(), Range.end()); -} - const char *ScopStmt::getBaseName() const { return BaseName.c_str(); } Loop *ScopStmt::getLoopForDimension(unsigned Dimension) const { @@ -1733,10 +1728,8 @@ Scop::Scop(Region &R, ScalarEvolution &ScalarEvolution, LoopInfo &LI, Scop::~Scop() = default; void Scop::removeFromStmtMap(ScopStmt &Stmt) { - for (Instruction *Inst : Stmt.getInstructions()) { - assert(!InstStmtMap.count(Inst) || InstStmtMap.lookup(Inst) == &Stmt); + for (Instruction *Inst : Stmt.getInstructions()) InstStmtMap.erase(Inst); - } if (Stmt.isRegionStmt()) { for (BasicBlock *BB : Stmt.getRegion()->blocks()) { @@ -1745,10 +1738,8 @@ void Scop::removeFromStmtMap(ScopStmt &Stmt) { // part of the statement's instruction list. if (BB == Stmt.getEntryBlock()) continue; - for (Instruction &Inst : *BB) { - assert(!InstStmtMap.count(&Inst) || InstStmtMap.lookup(&Inst) == &Stmt); + for (Instruction &Inst : *BB) InstStmtMap.erase(&Inst); - } } } else { auto StmtMapIt = StmtMap.find(Stmt.getBasicBlock()); @@ -1756,16 +1747,9 @@ void Scop::removeFromStmtMap(ScopStmt &Stmt) { StmtMapIt->second.erase(std::remove(StmtMapIt->second.begin(), StmtMapIt->second.end(), &Stmt), StmtMapIt->second.end()); - for (Instruction *Inst : Stmt.getInstructions()) { - assert(!InstStmtMap.count(Inst) || InstStmtMap.lookup(Inst) == &Stmt); + for (Instruction *Inst : Stmt.getInstructions()) InstStmtMap.erase(Inst); - } } - -#ifndef NDEBUG - for (auto kv : InstStmtMap) - assert(kv.getSecond() != &Stmt); -#endif } void Scop::removeStmts(std::function ShouldDelete, @@ -2487,19 +2471,6 @@ ArrayRef Scop::getStmtListFor(Region *R) const { return getStmtListFor(R->getEntry()); } -void Scop::updateInstStmtMap(ArrayRef OldList, - ArrayRef NewList, ScopStmt *Stmt) { - for (Instruction *OldInst : OldList) { - assert(getStmtFor(OldInst) == Stmt); - InstStmtMap.erase(OldInst); - } - - for (Instruction *NewInst : NewList) { - assert(InstStmtMap.lookup(NewInst) == nullptr); - InstStmtMap[NewInst] = Stmt; - } -} - int Scop::getRelativeLoopDepth(const Loop *L) const { if (!L || !R.contains(L)) return -1;