diff options
author | Michael Kruse <llvm@meinersbur.de> | 2018-04-09 23:13:01 +0000 |
---|---|---|
committer | Michael Kruse <llvm@meinersbur.de> | 2018-04-09 23:13:01 +0000 |
commit | 7de61668aedf4ac986a303a34aba98a452c6abef (patch) | |
tree | 3967c1bfe763d6098e343cf3572b5224fb8f4459 | |
parent | 0034e393d9bed8bcfb4070bafc99415209253331 (diff) | |
download | bcm5719-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.cpp | 6 |
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()); } } |