120 changes: 60 additions & 60 deletions llvm/test/Analysis/DependenceAnalysis/WeakZeroSrcSIV.ll
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ target triple = "x86_64-apple-macosx10.6.0"
;; A[0] = 1;
;; A[i] = 2;

define void @dstzero(i32* nocapture %A, i32 %N) {
define void @dstzero(ptr nocapture %A, i32 %N) {
entry:
%cmp6 = icmp sgt i32 %N, 0
br i1 %cmp6, label %for.body, label %for.cond.cleanup
Expand All @@ -21,9 +21,9 @@ entry:

for.body: ; preds = %entry, %for.body
%i.07 = phi i32 [ %add, %for.body ], [ 0, %entry ]
store i32 0, i32* %A, align 4
%arrayidx1 = getelementptr inbounds i32, i32* %A, i32 %i.07
store i32 1, i32* %arrayidx1, align 4
store i32 0, ptr %A, align 4
%arrayidx1 = getelementptr inbounds i32, ptr %A, i32 %i.07
store i32 1, ptr %arrayidx1, align 4
%add = add nuw nsw i32 %i.07, 1
%exitcond = icmp eq i32 %add, %N
br i1 %exitcond, label %for.cond.cleanup, label %for.body
Expand All @@ -37,7 +37,7 @@ for.cond.cleanup: ; preds = %for.body, %entry
;; A[10] = i;
;; *B++ = A[2*i + 10];

define void @weakzerosrc0(i32* %A, i32* %B, i64 %n) nounwind uwtable ssp {
define void @weakzerosrc0(ptr %A, ptr %B, i64 %n) nounwind uwtable ssp {
entry:
br label %for.body

Expand All @@ -50,16 +50,16 @@ entry:

for.body: ; preds = %entry, %for.body
%i.02 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
%B.addr.01 = phi i32* [ %B, %entry ], [ %incdec.ptr, %for.body ]
%B.addr.01 = phi ptr [ %B, %entry ], [ %incdec.ptr, %for.body ]
%conv = trunc i64 %i.02 to i32
%arrayidx = getelementptr inbounds i32, i32* %A, i64 10
store i32 %conv, i32* %arrayidx, align 4
%arrayidx = getelementptr inbounds i32, ptr %A, i64 10
store i32 %conv, ptr %arrayidx, align 4
%mul = shl i64 %i.02, 1
%add = add i64 %mul, 10
%arrayidx1 = getelementptr inbounds i32, i32* %A, i64 %add
%0 = load i32, i32* %arrayidx1, align 4
%incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
store i32 %0, i32* %B.addr.01, align 4
%arrayidx1 = getelementptr inbounds i32, ptr %A, i64 %add
%0 = load i32, ptr %arrayidx1, align 4
%incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 1
store i32 %0, ptr %B.addr.01, align 4
%inc = add i64 %i.02, 1
%exitcond = icmp ne i64 %inc, 30
br i1 %exitcond, label %for.body, label %for.end
Expand All @@ -73,7 +73,7 @@ for.end: ; preds = %for.body
;; A[10] = i;
;; *B++ = A[n*i + 10];

define void @weakzerosrc1(i32* %A, i32* %B, i64 %n) nounwind uwtable ssp {
define void @weakzerosrc1(ptr %A, ptr %B, i64 %n) nounwind uwtable ssp {
entry:
%cmp1 = icmp eq i64 %n, 0
br i1 %cmp1, label %for.end, label %for.body.preheader
Expand All @@ -90,16 +90,16 @@ for.body.preheader: ; preds = %entry

for.body: ; preds = %for.body.preheader, %for.body
%i.03 = phi i64 [ %inc, %for.body ], [ 0, %for.body.preheader ]
%B.addr.02 = phi i32* [ %incdec.ptr, %for.body ], [ %B, %for.body.preheader ]
%B.addr.02 = phi ptr [ %incdec.ptr, %for.body ], [ %B, %for.body.preheader ]
%conv = trunc i64 %i.03 to i32
%arrayidx = getelementptr inbounds i32, i32* %A, i64 10
store i32 %conv, i32* %arrayidx, align 4
%arrayidx = getelementptr inbounds i32, ptr %A, i64 10
store i32 %conv, ptr %arrayidx, align 4
%mul = mul i64 %i.03, %n
%add = add i64 %mul, 10
%arrayidx1 = getelementptr inbounds i32, i32* %A, i64 %add
%0 = load i32, i32* %arrayidx1, align 4
%incdec.ptr = getelementptr inbounds i32, i32* %B.addr.02, i64 1
store i32 %0, i32* %B.addr.02, align 4
%arrayidx1 = getelementptr inbounds i32, ptr %A, i64 %add
%0 = load i32, ptr %arrayidx1, align 4
%incdec.ptr = getelementptr inbounds i32, ptr %B.addr.02, i64 1
store i32 %0, ptr %B.addr.02, align 4
%inc = add i64 %i.03, 1
%exitcond = icmp ne i64 %inc, %n
br i1 %exitcond, label %for.body, label %for.end.loopexit
Expand All @@ -116,7 +116,7 @@ for.end: ; preds = %for.end.loopexit, %
;; A[10] = i;
;; *B++ = A[2*i];

define void @weakzerosrc2(i32* %A, i32* %B, i64 %n) nounwind uwtable ssp {
define void @weakzerosrc2(ptr %A, ptr %B, i64 %n) nounwind uwtable ssp {
entry:
br label %for.body

Expand All @@ -129,15 +129,15 @@ entry:

for.body: ; preds = %entry, %for.body
%i.02 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
%B.addr.01 = phi i32* [ %B, %entry ], [ %incdec.ptr, %for.body ]
%B.addr.01 = phi ptr [ %B, %entry ], [ %incdec.ptr, %for.body ]
%conv = trunc i64 %i.02 to i32
%arrayidx = getelementptr inbounds i32, i32* %A, i64 10
store i32 %conv, i32* %arrayidx, align 4
%arrayidx = getelementptr inbounds i32, ptr %A, i64 10
store i32 %conv, ptr %arrayidx, align 4
%mul = shl i64 %i.02, 1
%arrayidx1 = getelementptr inbounds i32, i32* %A, i64 %mul
%0 = load i32, i32* %arrayidx1, align 4
%incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
store i32 %0, i32* %B.addr.01, align 4
%arrayidx1 = getelementptr inbounds i32, ptr %A, i64 %mul
%0 = load i32, ptr %arrayidx1, align 4
%incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 1
store i32 %0, ptr %B.addr.01, align 4
%inc = add i64 %i.02, 1
%exitcond = icmp ne i64 %inc, 5
br i1 %exitcond, label %for.body, label %for.end
Expand All @@ -151,7 +151,7 @@ for.end: ; preds = %for.body
;; A[10] = i;
;; *B++ = A[2*i];

define void @weakzerosrc3(i32* %A, i32* %B, i64 %n) nounwind uwtable ssp {
define void @weakzerosrc3(ptr %A, ptr %B, i64 %n) nounwind uwtable ssp {
entry:
br label %for.body

Expand All @@ -164,15 +164,15 @@ entry:

for.body: ; preds = %entry, %for.body
%i.02 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
%B.addr.01 = phi i32* [ %B, %entry ], [ %incdec.ptr, %for.body ]
%B.addr.01 = phi ptr [ %B, %entry ], [ %incdec.ptr, %for.body ]
%conv = trunc i64 %i.02 to i32
%arrayidx = getelementptr inbounds i32, i32* %A, i64 10
store i32 %conv, i32* %arrayidx, align 4
%arrayidx = getelementptr inbounds i32, ptr %A, i64 10
store i32 %conv, ptr %arrayidx, align 4
%mul = shl i64 %i.02, 1
%arrayidx1 = getelementptr inbounds i32, i32* %A, i64 %mul
%0 = load i32, i32* %arrayidx1, align 4
%incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
store i32 %0, i32* %B.addr.01, align 4
%arrayidx1 = getelementptr inbounds i32, ptr %A, i64 %mul
%0 = load i32, ptr %arrayidx1, align 4
%incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 1
store i32 %0, ptr %B.addr.01, align 4
%inc = add i64 %i.02, 1
%exitcond = icmp ne i64 %inc, 6
br i1 %exitcond, label %for.body, label %for.end
Expand All @@ -186,7 +186,7 @@ for.end: ; preds = %for.body
;; A[10] = i;
;; *B++ = A[2*i];

define void @weakzerosrc4(i32* %A, i32* %B, i64 %n) nounwind uwtable ssp {
define void @weakzerosrc4(ptr %A, ptr %B, i64 %n) nounwind uwtable ssp {
entry:
br label %for.body

Expand All @@ -199,15 +199,15 @@ entry:

for.body: ; preds = %entry, %for.body
%i.02 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
%B.addr.01 = phi i32* [ %B, %entry ], [ %incdec.ptr, %for.body ]
%B.addr.01 = phi ptr [ %B, %entry ], [ %incdec.ptr, %for.body ]
%conv = trunc i64 %i.02 to i32
%arrayidx = getelementptr inbounds i32, i32* %A, i64 10
store i32 %conv, i32* %arrayidx, align 4
%arrayidx = getelementptr inbounds i32, ptr %A, i64 10
store i32 %conv, ptr %arrayidx, align 4
%mul = shl i64 %i.02, 1
%arrayidx1 = getelementptr inbounds i32, i32* %A, i64 %mul
%0 = load i32, i32* %arrayidx1, align 4
%incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
store i32 %0, i32* %B.addr.01, align 4
%arrayidx1 = getelementptr inbounds i32, ptr %A, i64 %mul
%0 = load i32, ptr %arrayidx1, align 4
%incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 1
store i32 %0, ptr %B.addr.01, align 4
%inc = add i64 %i.02, 1
%exitcond = icmp ne i64 %inc, 7
br i1 %exitcond, label %for.body, label %for.end
Expand All @@ -221,7 +221,7 @@ for.end: ; preds = %for.body
;; A[-10] = i;
;; *B++ = A[2*i];

define void @weakzerosrc5(i32* %A, i32* %B, i64 %n) nounwind uwtable ssp {
define void @weakzerosrc5(ptr %A, ptr %B, i64 %n) nounwind uwtable ssp {
entry:
br label %for.body

Expand All @@ -234,15 +234,15 @@ entry:

for.body: ; preds = %entry, %for.body
%i.02 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
%B.addr.01 = phi i32* [ %B, %entry ], [ %incdec.ptr, %for.body ]
%B.addr.01 = phi ptr [ %B, %entry ], [ %incdec.ptr, %for.body ]
%conv = trunc i64 %i.02 to i32
%arrayidx = getelementptr inbounds i32, i32* %A, i64 -10
store i32 %conv, i32* %arrayidx, align 4
%arrayidx = getelementptr inbounds i32, ptr %A, i64 -10
store i32 %conv, ptr %arrayidx, align 4
%mul = shl i64 %i.02, 1
%arrayidx1 = getelementptr inbounds i32, i32* %A, i64 %mul
%0 = load i32, i32* %arrayidx1, align 4
%incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
store i32 %0, i32* %B.addr.01, align 4
%arrayidx1 = getelementptr inbounds i32, ptr %A, i64 %mul
%0 = load i32, ptr %arrayidx1, align 4
%incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 1
store i32 %0, ptr %B.addr.01, align 4
%inc = add i64 %i.02, 1
%exitcond = icmp ne i64 %inc, 7
br i1 %exitcond, label %for.body, label %for.end
Expand All @@ -256,7 +256,7 @@ for.end: ; preds = %for.body
;; A[10] = i;
;; *B++ = A[3*i];

define void @weakzerosrc6(i32* %A, i32* %B, i64 %n) nounwind uwtable ssp {
define void @weakzerosrc6(ptr %A, ptr %B, i64 %n) nounwind uwtable ssp {
entry:
%cmp1 = icmp eq i64 %n, 0
br i1 %cmp1, label %for.end, label %for.body.preheader
Expand All @@ -273,15 +273,15 @@ for.body.preheader: ; preds = %entry

for.body: ; preds = %for.body.preheader, %for.body
%i.03 = phi i64 [ %inc, %for.body ], [ 0, %for.body.preheader ]
%B.addr.02 = phi i32* [ %incdec.ptr, %for.body ], [ %B, %for.body.preheader ]
%B.addr.02 = phi ptr [ %incdec.ptr, %for.body ], [ %B, %for.body.preheader ]
%conv = trunc i64 %i.03 to i32
%arrayidx = getelementptr inbounds i32, i32* %A, i64 10
store i32 %conv, i32* %arrayidx, align 4
%arrayidx = getelementptr inbounds i32, ptr %A, i64 10
store i32 %conv, ptr %arrayidx, align 4
%mul = mul i64 %i.03, 3
%arrayidx1 = getelementptr inbounds i32, i32* %A, i64 %mul
%0 = load i32, i32* %arrayidx1, align 4
%incdec.ptr = getelementptr inbounds i32, i32* %B.addr.02, i64 1
store i32 %0, i32* %B.addr.02, align 4
%arrayidx1 = getelementptr inbounds i32, ptr %A, i64 %mul
%0 = load i32, ptr %arrayidx1, align 4
%incdec.ptr = getelementptr inbounds i32, ptr %B.addr.02, i64 1
store i32 %0, ptr %B.addr.02, align 4
%inc = add i64 %i.03, 1
%exitcond = icmp ne i64 %inc, %n
br i1 %exitcond, label %for.body, label %for.end.loopexit
Expand Down
36 changes: 18 additions & 18 deletions llvm/test/Analysis/DependenceAnalysis/ZIV.ll
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ target triple = "x86_64-apple-macosx10.6.0"
;; A[n + 1] = 0;
;; *B = A[1 + n];

define void @z0(i32* %A, i32* %B, i64 %n) nounwind uwtable ssp {
define void @z0(ptr %A, ptr %B, i64 %n) nounwind uwtable ssp {
entry:
%add = add i64 %n, 1
%arrayidx = getelementptr inbounds i32, i32* %A, i64 %add
store i32 0, i32* %arrayidx, align 4
%arrayidx = getelementptr inbounds i32, ptr %A, i64 %add
store i32 0, ptr %arrayidx, align 4

; CHECK: da analyze - none!
; CHECK: da analyze - consistent flow [|<]!
Expand All @@ -23,20 +23,20 @@ entry:
; CHECK: da analyze - none!

%add1 = add i64 %n, 1
%arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %add1
%0 = load i32, i32* %arrayidx2, align 4
store i32 %0, i32* %B, align 4
%arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %add1
%0 = load i32, ptr %arrayidx2, align 4
store i32 %0, ptr %B, align 4
ret void
}


;; A[n] = 0;
;; *B = A[n + 1];

define void @z1(i32* %A, i32* %B, i64 %n) nounwind uwtable ssp {
define void @z1(ptr %A, ptr %B, i64 %n) nounwind uwtable ssp {
entry:
%arrayidx = getelementptr inbounds i32, i32* %A, i64 %n
store i32 0, i32* %arrayidx, align 4
%arrayidx = getelementptr inbounds i32, ptr %A, i64 %n
store i32 0, ptr %arrayidx, align 4

; CHECK: da analyze - none!
; CHECK: da analyze - none!
Expand All @@ -46,20 +46,20 @@ entry:
; CHECK: da analyze - none!

%add = add i64 %n, 1
%arrayidx1 = getelementptr inbounds i32, i32* %A, i64 %add
%0 = load i32, i32* %arrayidx1, align 4
store i32 %0, i32* %B, align 4
%arrayidx1 = getelementptr inbounds i32, ptr %A, i64 %add
%0 = load i32, ptr %arrayidx1, align 4
store i32 %0, ptr %B, align 4
ret void
}


;; A[n] = 0;
;; *B = A[m];

define void @z2(i32* %A, i32* %B, i64 %n, i64 %m) nounwind uwtable ssp {
define void @z2(ptr %A, ptr %B, i64 %n, i64 %m) nounwind uwtable ssp {
entry:
%arrayidx = getelementptr inbounds i32, i32* %A, i64 %n
store i32 0, i32* %arrayidx, align 4
%arrayidx = getelementptr inbounds i32, ptr %A, i64 %n
store i32 0, ptr %arrayidx, align 4

; CHECK: da analyze - none!
; CHECK: da analyze - flow [|<]!
Expand All @@ -68,8 +68,8 @@ entry:
; CHECK: da analyze - confused!
; CHECK: da analyze - none!

%arrayidx1 = getelementptr inbounds i32, i32* %A, i64 %m
%0 = load i32, i32* %arrayidx1, align 4
store i32 %0, i32* %B, align 4
%arrayidx1 = getelementptr inbounds i32, ptr %A, i64 %m
%0 = load i32, ptr %arrayidx1, align 4
store i32 %0, ptr %B, align 4
ret void
}
14 changes: 7 additions & 7 deletions llvm/test/Analysis/DependenceAnalysis/lcssa.ll
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
; RUN: opt < %s -disable-output "-passes=print<da>" \
; RUN: "-aa-pipeline=basic-aa,tbaa" 2>&1 | FileCheck %s

; CHECK: Src: %v = load i32, i32* %arrayidx1, align 4 --> Dst: store i32 %add, i32* %a.lcssa, align 4
; CHECK: Src: %v = load i32, ptr %arrayidx1, align 4 --> Dst: store i32 %add, ptr %a.lcssa, align 4
; CHECK-NEXT: da analyze - anti [*|<]!

define void @f(i32 *%a, i32 %n, i64 %n2) {
define void @f(ptr %a, i32 %n, i64 %n2) {
entry:
br label %while.body

Expand All @@ -14,20 +14,20 @@ while.body:
%mul = mul i32 %n.addr, 3
%div = udiv i32 %mul, 2
%inc = add i32 %inc.phi, 1
%incdec.ptr = getelementptr inbounds i32, i32* %a, i32 %inc
%incdec.ptr = getelementptr inbounds i32, ptr %a, i32 %inc
%cmp.not = icmp eq i32 %div, 1
br i1 %cmp.not, label %while.end, label %while.body

while.end:
%a.lcssa = phi i32* [ %incdec.ptr, %while.body ]
%a.lcssa = phi ptr [ %incdec.ptr, %while.body ]
br label %for.body

for.body:
%indvars.iv = phi i64 [ 1, %while.end ], [ %indvars.iv.next, %for.body ]
%arrayidx1 = getelementptr inbounds i32, i32* %a, i64 %indvars.iv
%v = load i32, i32* %arrayidx1, align 4
%arrayidx1 = getelementptr inbounds i32, ptr %a, i64 %indvars.iv
%v = load i32, ptr %arrayidx1, align 4
%add = add nsw i32 %v, 1
store i32 %add, i32* %a.lcssa, align 4
store i32 %add, ptr %a.lcssa, align 4
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
%exitcond.not = icmp eq i64 %indvars.iv.next, %n2
br i1 %exitcond.not, label %ret, label %for.body
Expand Down
6 changes: 3 additions & 3 deletions llvm/test/Analysis/DependenceAnalysis/new-pm-invalidation.ll
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
; CHECK: da analyze - none!
; CHECK: da analyze - confused!
; CHECK: da analyze - none!
define void @test_no_noalias(i32* %A, i32* %B) {
store i32 1, i32* %A
store i32 2, i32* %B
define void @test_no_noalias(ptr %A, ptr %B) {
store i32 1, ptr %A
store i32 2, ptr %B
ret void
}