diff options
author | Alina Sbirlea <asbirlea@google.com> | 2019-09-12 18:09:47 +0000 |
---|---|---|
committer | Alina Sbirlea <asbirlea@google.com> | 2019-09-12 18:09:47 +0000 |
commit | 18f5204db4a9d5df3cb89833de4805a78f5034ee (patch) | |
tree | 38c6ce889dcf286f7a464dd3e78d4721043463e7 /llvm/lib/Analysis/AliasSetTracker.cpp | |
parent | 57a014d31fb2e731867623d355e98801596814f8 (diff) | |
download | bcm5719-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.cpp | 12 |
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"; |