blob: b3216415c8e85f7777332f0c32603b811129910c [file] [log] [blame]
Sebastian Pop59b61b92012-10-11 07:32:34 +00001; RUN: opt < %s -analyze -basicaa -da | FileCheck %s
2
3; ModuleID = 'ZIV.bc'
4target 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"
5target triple = "x86_64-apple-macosx10.6.0"
6
7
Benjamin Kramer3eb15632012-11-13 12:12:02 +00008;; A[n + 1] = 0;
9;; *B = A[1 + n];
Sebastian Pop59b61b92012-10-11 07:32:34 +000010
11define void @z0(i32* %A, i32* %B, i64 %n) nounwind uwtable ssp {
12entry:
13 %add = add i64 %n, 1
David Blaikie79e6c742015-02-27 19:29:02 +000014 %arrayidx = getelementptr inbounds i32, i32* %A, i64 %add
Sebastian Pop59b61b92012-10-11 07:32:34 +000015 store i32 0, i32* %arrayidx, align 4
Benjamin Kramer3eb15632012-11-13 12:12:02 +000016
Preston Briggs5cb8cfa2012-11-27 19:12:26 +000017; CHECK: da analyze - none!
Preston Briggsfd0b5c82012-11-30 00:44:47 +000018; CHECK: da analyze - consistent flow [|<]!
Benjamin Kramer3eb15632012-11-13 12:12:02 +000019; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +000020; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +000021; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +000022; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +000023
Sebastian Pop59b61b92012-10-11 07:32:34 +000024 %add1 = add i64 %n, 1
David Blaikie79e6c742015-02-27 19:29:02 +000025 %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %add1
David Blaikiea79ac142015-02-27 21:17:42 +000026 %0 = load i32, i32* %arrayidx2, align 4
Sebastian Pop59b61b92012-10-11 07:32:34 +000027 store i32 %0, i32* %B, align 4
28 ret void
29}
30
31
Benjamin Kramer3eb15632012-11-13 12:12:02 +000032;; A[n] = 0;
33;; *B = A[n + 1];
Sebastian Pop59b61b92012-10-11 07:32:34 +000034
35define void @z1(i32* %A, i32* %B, i64 %n) nounwind uwtable ssp {
36entry:
David Blaikie79e6c742015-02-27 19:29:02 +000037 %arrayidx = getelementptr inbounds i32, i32* %A, i64 %n
Sebastian Pop59b61b92012-10-11 07:32:34 +000038 store i32 0, i32* %arrayidx, align 4
Benjamin Kramer3eb15632012-11-13 12:12:02 +000039
Preston Briggs5cb8cfa2012-11-27 19:12:26 +000040; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +000041; CHECK: da analyze - none!
42; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +000043; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +000044; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +000045; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +000046
Sebastian Pop59b61b92012-10-11 07:32:34 +000047 %add = add i64 %n, 1
David Blaikie79e6c742015-02-27 19:29:02 +000048 %arrayidx1 = getelementptr inbounds i32, i32* %A, i64 %add
David Blaikiea79ac142015-02-27 21:17:42 +000049 %0 = load i32, i32* %arrayidx1, align 4
Sebastian Pop59b61b92012-10-11 07:32:34 +000050 store i32 %0, i32* %B, align 4
51 ret void
52}
53
54
Benjamin Kramer3eb15632012-11-13 12:12:02 +000055;; A[n] = 0;
56;; *B = A[m];
Sebastian Pop59b61b92012-10-11 07:32:34 +000057
58define void @z2(i32* %A, i32* %B, i64 %n, i64 %m) nounwind uwtable ssp {
59entry:
David Blaikie79e6c742015-02-27 19:29:02 +000060 %arrayidx = getelementptr inbounds i32, i32* %A, i64 %n
Sebastian Pop59b61b92012-10-11 07:32:34 +000061 store i32 0, i32* %arrayidx, align 4
Benjamin Kramer3eb15632012-11-13 12:12:02 +000062
Preston Briggs5cb8cfa2012-11-27 19:12:26 +000063; CHECK: da analyze - none!
Preston Briggsfd0b5c82012-11-30 00:44:47 +000064; CHECK: da analyze - flow [|<]!
Benjamin Kramer3eb15632012-11-13 12:12:02 +000065; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +000066; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +000067; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +000068; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +000069
David Blaikie79e6c742015-02-27 19:29:02 +000070 %arrayidx1 = getelementptr inbounds i32, i32* %A, i64 %m
David Blaikiea79ac142015-02-27 21:17:42 +000071 %0 = load i32, i32* %arrayidx1, align 4
Sebastian Pop59b61b92012-10-11 07:32:34 +000072 store i32 %0, i32* %B, align 4
73 ret void
74}