summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Kruse <llvm@meinersbur.de>2018-04-09 23:13:01 +0000
committerMichael Kruse <llvm@meinersbur.de>2018-04-09 23:13:01 +0000
commit7de61668aedf4ac986a303a34aba98a452c6abef (patch)
tree3967c1bfe763d6098e343cf3572b5224fb8f4459
parent0034e393d9bed8bcfb4070bafc99415209253331 (diff)
downloadbcm5719-llvm-7de61668aedf4ac986a303a34aba98a452c6abef.tar.gz
bcm5719-llvm-7de61668aedf4ac986a303a34aba98a452c6abef.zip
[ScopInfo] Actually remove from list.
std::remove, despite its name, does not remove elements from a list, but only moves them to the end of a list. Call erase() to shorten the vector to the remaining elements. Test case included in next commit. llvm-svn: 329639
-rw-r--r--polly/lib/Analysis/ScopInfo.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/polly/lib/Analysis/ScopInfo.cpp b/polly/lib/Analysis/ScopInfo.cpp
index 8ffd6a3c415..81edb824c05 100644
--- a/polly/lib/Analysis/ScopInfo.cpp
+++ b/polly/lib/Analysis/ScopInfo.cpp
@@ -4856,13 +4856,15 @@ void Scop::removeAccessData(MemoryAccess *Access) {
ValueDefAccs.erase(Access->getAccessValue());
} else if (Access->isOriginalValueKind() && Access->isRead()) {
auto &Uses = ValueUseAccs[Access->getScopArrayInfo()];
- std::remove(Uses.begin(), Uses.end(), Access);
+ auto NewEnd = std::remove(Uses.begin(), Uses.end(), Access);
+ Uses.erase(NewEnd, Uses.end());
} else if (Access->isOriginalPHIKind() && Access->isRead()) {
PHINode *PHI = cast<PHINode>(Access->getAccessInstruction());
PHIReadAccs.erase(PHI);
} else if (Access->isOriginalAnyPHIKind() && Access->isWrite()) {
auto &Incomings = PHIIncomingAccs[Access->getScopArrayInfo()];
- std::remove(Incomings.begin(), Incomings.end(), Access);
+ auto NewEnd = std::remove(Incomings.begin(), Incomings.end(), Access);
+ Incomings.erase(NewEnd, Incomings.end());
}
}
OpenPOWER on IntegriCloud