1; RUN: opt < %s -disable-output "-passes=print<da>" -aa-pipeline=basic-aa 2>&1 \
2; RUN: | FileCheck %s
3; RUN: opt < %s -analyze -enable-new-pm=0 -basic-aa -da | FileCheck %s
4
5; ModuleID = 'ZIV.bc'
6target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
7target triple = "x86_64-apple-macosx10.6.0"
8
9
10;;  A[n + 1] = 0;
11;;  *B = A[1 + n];
12
13define void @z0(i32* %A, i32* %B, i64 %n) nounwind uwtable ssp {
14entry:
15  %add = add i64 %n, 1
16  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %add
17  store i32 0, i32* %arrayidx, align 4
18
19; CHECK: da analyze - none!
20; CHECK: da analyze - consistent flow [|<]!
21; CHECK: da analyze - confused!
22; CHECK: da analyze - none!
23; CHECK: da analyze - confused!
24; CHECK: da analyze - none!
25
26  %add1 = add i64 %n, 1
27  %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %add1
28  %0 = load i32, i32* %arrayidx2, align 4
29  store i32 %0, i32* %B, align 4
30  ret void
31}
32
33
34;;  A[n] = 0;
35;;  *B = A[n + 1];
36
37define void @z1(i32* %A, i32* %B, i64 %n) nounwind uwtable ssp {
38entry:
39  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %n
40  store i32 0, i32* %arrayidx, align 4
41
42; CHECK: da analyze - none!
43; CHECK: da analyze - none!
44; CHECK: da analyze - confused!
45; CHECK: da analyze - none!
46; CHECK: da analyze - confused!
47; CHECK: da analyze - none!
48
49  %add = add i64 %n, 1
50  %arrayidx1 = getelementptr inbounds i32, i32* %A, i64 %add
51  %0 = load i32, i32* %arrayidx1, align 4
52  store i32 %0, i32* %B, align 4
53  ret void
54}
55
56
57;;  A[n] = 0;
58;;  *B = A[m];
59
60define void @z2(i32* %A, i32* %B, i64 %n, i64 %m) nounwind uwtable ssp {
61entry:
62  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %n
63  store i32 0, i32* %arrayidx, align 4
64
65; CHECK: da analyze - none!
66; CHECK: da analyze - flow [|<]!
67; CHECK: da analyze - confused!
68; CHECK: da analyze - none!
69; CHECK: da analyze - confused!
70; CHECK: da analyze - none!
71
72  %arrayidx1 = getelementptr inbounds i32, i32* %A, i64 %m
73  %0 = load i32, i32* %arrayidx1, align 4
74  store i32 %0, i32* %B, align 4
75  ret void
76}
77