forked from OSchip/llvm-project
[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
This commit is contained in:
parent
57a014d31f
commit
18f5204db4
|
@ -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";
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
; RUN: opt -enable-mssa-loop-dependency=false -disable-basicaa -alias-set-saturation-threshold=2 -licm -S < %s | FileCheck %s
|
||||
; REQUIRES: asserts
|
||||
|
||||
; CHECK-LABEL: @f1()
|
||||
define void @f1() {
|
||||
%lc1.10 = alloca [3 x i16]
|
||||
br label %bb1
|
||||
|
||||
bb1: ; preds = %bb6, %0
|
||||
store i16 undef, i16* undef
|
||||
br label %bb2
|
||||
|
||||
bb2: ; preds = %bb8, %bb1
|
||||
%_tmp18.fca.0.gep = getelementptr inbounds [3 x i16], [3 x i16]* %lc1.10, i32 0, i32 0
|
||||
%_tmp18.fca.0.load = load i16, i16* %_tmp18.fca.0.gep
|
||||
%_tmp18.fca.1.gep = getelementptr inbounds [3 x i16], [3 x i16]* %lc1.10, i32 0, i32 1
|
||||
%_tmp18.fca.1.load = load i16, i16* %_tmp18.fca.1.gep
|
||||
%_tmp18.fca.2.gep = getelementptr inbounds [3 x i16], [3 x i16]* %lc1.10, i32 0, i32 2
|
||||
%_tmp18.fca.2.load = load i16, i16* %_tmp18.fca.2.gep
|
||||
br label %bb8
|
||||
|
||||
bb8: ; preds = %bb2
|
||||
br i1 undef, label %bb2, label %bb6
|
||||
|
||||
bb6: ; preds = %bb8
|
||||
br label %bb1
|
||||
}
|
Loading…
Reference in New Issue