summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/AliasSetTracker.cpp
diff options
context:
space:
mode:
authorAlina Sbirlea <asbirlea@google.com>2019-09-12 18:09:47 +0000
committerAlina Sbirlea <asbirlea@google.com>2019-09-12 18:09:47 +0000
commit18f5204db4a9d5df3cb89833de4805a78f5034ee (patch)
tree38c6ce889dcf286f7a464dd3e78d4721043463e7 /llvm/lib/Analysis/AliasSetTracker.cpp
parent57a014d31fb2e731867623d355e98801596814f8 (diff)
downloadbcm5719-llvm-18f5204db4a9d5df3cb89833de4805a78f5034ee.tar.gz
bcm5719-llvm-18f5204db4a9d5df3cb89833de4805a78f5034ee.zip
[LICM/AST] Check if the AliasAny set is removed from the tracker.
Summary: Resolves PR38513. Credit to @bjope for debugging this. Reviewers: hfinkel, uabelho, bjope Subscribers: sanjoy.google, bjope, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D67417 llvm-svn: 371752
Diffstat (limited to 'llvm/lib/Analysis/AliasSetTracker.cpp')
-rw-r--r--llvm/lib/Analysis/AliasSetTracker.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/llvm/lib/Analysis/AliasSetTracker.cpp b/llvm/lib/Analysis/AliasSetTracker.cpp
index a6e5b9fab55..79fbcd464c1 100644
--- a/llvm/lib/Analysis/AliasSetTracker.cpp
+++ b/llvm/lib/Analysis/AliasSetTracker.cpp
@@ -119,6 +119,12 @@ void AliasSetTracker::removeAliasSet(AliasSet *AS) {
TotalMayAliasSetSize -= AS->size();
AliasSets.erase(AS);
+ // If we've removed the saturated alias set, set saturated marker back to
+ // nullptr and ensure this tracker is empty.
+ if (AS == AliasAnyAS) {
+ AliasAnyAS = nullptr;
+ assert(AliasSets.empty() && "Tracker not empty");
+ }
}
void AliasSet::removeFromTracker(AliasSetTracker &AST) {
@@ -690,8 +696,10 @@ void AliasSet::print(raw_ostream &OS) const {
}
void AliasSetTracker::print(raw_ostream &OS) const {
- OS << "Alias Set Tracker: " << AliasSets.size() << " alias sets for "
- << PointerMap.size() << " pointer values.\n";
+ OS << "Alias Set Tracker: " << AliasSets.size();
+ if (AliasAnyAS)
+ OS << " (Saturated)";
+ OS << " alias sets for " << PointerMap.size() << " pointer values.\n";
for (const AliasSet &AS : *this)
AS.print(OS);
OS << "\n";
OpenPOWER on IntegriCloud