[InstCombine] Signed saturation patterns
[llvm-core.git] / test / Analysis / DependenceAnalysis / ZIV.ll
blobc2049a629776092a2ad6d460993ad0675f3d2851
1 ; RUN: opt < %s -disable-output "-passes=print<da>" -aa-pipeline=basic-aa 2>&1 \
2 ; RUN: | FileCheck %s
3 ; RUN: opt < %s -analyze -basicaa -da | FileCheck %s
5 ; ModuleID = 'ZIV.bc'
6 target 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"
7 target triple = "x86_64-apple-macosx10.6.0"
10 ;;  A[n + 1] = 0;
11 ;;  *B = A[1 + n];
13 define void @z0(i32* %A, i32* %B, i64 %n) nounwind uwtable ssp {
14 entry:
15   %add = add i64 %n, 1
16   %arrayidx = getelementptr inbounds i32, i32* %A, i64 %add
17   store i32 0, i32* %arrayidx, align 4
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!
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
34 ;;  A[n] = 0;
35 ;;  *B = A[n + 1];
37 define void @z1(i32* %A, i32* %B, i64 %n) nounwind uwtable ssp {
38 entry:
39   %arrayidx = getelementptr inbounds i32, i32* %A, i64 %n
40   store i32 0, i32* %arrayidx, align 4
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!
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
57 ;;  A[n] = 0;
58 ;;  *B = A[m];
60 define void @z2(i32* %A, i32* %B, i64 %n, i64 %m) nounwind uwtable ssp {
61 entry:
62   %arrayidx = getelementptr inbounds i32, i32* %A, i64 %n
63   store i32 0, i32* %arrayidx, align 4
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!
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