Skip to content

Commit 0aeab95

Browse files
author
git apple-llvm automerger
committed
Merge commit 'ec1f6f7e3f92' from llvm.org/main into apple/main
2 parents 4fc5b01 + ec1f6f7 commit 0aeab95

File tree

3 files changed

+8
-48
lines changed

3 files changed

+8
-48
lines changed

llvm/lib/Analysis/LoopAccessAnalysis.cpp

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1938,18 +1938,7 @@ void LoopAccessInfo::analyzeLoop(AAResults *AA, LoopInfo *LI,
19381938
if (blockNeedsPredication(ST->getParent(), TheLoop, DT))
19391939
Loc.AATags.TBAA = nullptr;
19401940

1941-
// SCEV does not look through non-header PHIs inside the loop. Such phis
1942-
// can be analyzed by adding separate accesses for each incoming pointer
1943-
// value.
1944-
auto *PN = dyn_cast<PHINode>(Loc.Ptr);
1945-
if (PN && TheLoop->contains(PN->getParent()) &&
1946-
PN->getParent() != TheLoop->getHeader()) {
1947-
for (const Use &Inc : PN->incoming_values()) {
1948-
MemoryLocation NewLoc = Loc.getWithNewPtr(Inc);
1949-
Accesses.addStore(NewLoc);
1950-
}
1951-
} else
1952-
Accesses.addStore(Loc);
1941+
Accesses.addStore(Loc);
19531942
}
19541943
}
19551944

@@ -1993,17 +1982,7 @@ void LoopAccessInfo::analyzeLoop(AAResults *AA, LoopInfo *LI,
19931982
if (blockNeedsPredication(LD->getParent(), TheLoop, DT))
19941983
Loc.AATags.TBAA = nullptr;
19951984

1996-
// SCEV does not look through non-header PHIs inside the loop. Such phis can
1997-
// be analyzed by adding separate accesses for each incoming pointer value.
1998-
auto *PN = dyn_cast<PHINode>(Loc.Ptr);
1999-
if (PN && TheLoop->contains(PN->getParent()) &&
2000-
PN->getParent() != TheLoop->getHeader()) {
2001-
for (const Use &Inc : PN->incoming_values()) {
2002-
MemoryLocation NewLoc = Loc.getWithNewPtr(Inc);
2003-
Accesses.addLoad(NewLoc, IsReadOnlyPtr);
2004-
}
2005-
} else
2006-
Accesses.addLoad(Loc, IsReadOnlyPtr);
1985+
Accesses.addLoad(Loc, IsReadOnlyPtr);
20071986
}
20081987

20091988
// If we write (or read-write) to a single destination and there are no

llvm/test/Analysis/LoopAccessAnalysis/pointer-phis.ll

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
define i32 @load_with_pointer_phi_no_runtime_checks(%s1* %data) {
77
; CHECK-LABEL: load_with_pointer_phi_no_runtime_checks
88
; CHECK-NEXT: loop.header:
9-
; CHECK-NEXT: Memory dependences are safe
9+
; CHECK-NEXT: Report: cannot identify array bounds
1010
;
1111
entry:
1212
br label %loop.header
@@ -41,7 +41,7 @@ exit: ; preds = %loop.latch
4141
define i32 @store_with_pointer_phi_no_runtime_checks(%s1* %data) {
4242
; CHECK-LABEL: 'store_with_pointer_phi_no_runtime_checks'
4343
; CHECK-NEXT: loop.header:
44-
; CHECK-NEXT: Memory dependences are safe
44+
; CHECK-NEXT: Report: cannot identify array bounds
4545
;
4646
entry:
4747
br label %loop.header
@@ -76,23 +76,7 @@ exit: ; preds = %loop.latch
7676
define i32 @store_with_pointer_phi_runtime_checks(double* %A, double* %B, double* %C) {
7777
; CHECK-LABEL: 'store_with_pointer_phi_runtime_checks'
7878
; CHECK-NEXT: loop.header:
79-
; CHECK-NEXT: Memory dependences are safe with run-time checks
80-
; CHECK: Run-time memory checks:
81-
; CHECK-NEXT: Check 0:
82-
; CHECK-NEXT: Comparing group ([[GROUP_C:.+]]):
83-
; CHECK-NEXT: %gep.2 = getelementptr inbounds double, double* %C, i64 %iv
84-
; CHECK-NEXT: Against group ([[GROUP_B:.+]]):
85-
; CHECK-NEXT: %gep.1 = getelementptr inbounds double, double* %B, i64 %iv
86-
; CHECK-NEXT: Check 1:
87-
; CHECK-NEXT: Comparing group ([[GROUP_C]]):
88-
; CHECK-NEXT: %gep.2 = getelementptr inbounds double, double* %C, i64 %iv
89-
; CHECK-NEXT: Against group ([[GROUP_A:.+]]):
90-
; CHECK-NEXT: %arrayidx = getelementptr inbounds double, double* %A, i64 %iv
91-
; CHECK-NEXT: Check 2:
92-
; CHECK-NEXT: Comparing group ([[GROUP_B]]):
93-
; CHECK-NEXT: %gep.1 = getelementptr inbounds double, double* %B, i64 %iv
94-
; CHECK-NEXT: Against group ([[GROUP_A]]):
95-
; CHECK-NEXT: %arrayidx = getelementptr inbounds double, double* %A, i64 %iv
79+
; CHECK-NEXT: Report: cannot identify array bounds
9680
;
9781
entry:
9882
br label %loop.header

llvm/test/Transforms/LoopVectorize/vectorize-pointer-phis.ll

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@
44

55
define i32 @load_with_pointer_phi_no_runtime_checks(%s1* %data) {
66
; CHECK-LABEL: @load_with_pointer_phi_no_runtime_checks
7-
; CHECK-NOT: memcheck
8-
; CHECK: vector.body:
7+
; CHECK-NOT: vector.body
98
;
109
entry:
1110
br label %loop.header
@@ -39,8 +38,7 @@ exit: ; preds = %loop.latch
3938

4039
define i32 @store_with_pointer_phi_no_runtime_checks(%s1* %data) {
4140
; CHECK-LABEL: @store_with_pointer_phi_no_runtime_checks
42-
; CHECK-NOT: memcheck
43-
; CHECK: vector.body
41+
; CHECK-NOT: vector.body
4442
;
4543
entry:
4644
br label %loop.header
@@ -74,8 +72,7 @@ exit: ; preds = %loop.latch
7472

7573
define i32 @store_with_pointer_phi_runtime_checks(double* %A, double* %B, double* %C) {
7674
; CHECK-LABEL: @store_with_pointer_phi_runtime_checks
77-
; CHECK: memcheck
78-
; CHECK: vector.body
75+
; CHECK-NOT: vector.body
7976
;
8077
entry:
8178
br label %loop.header

0 commit comments

Comments
 (0)