| David Green | d143c65 | 2018-06-21 11:53:16 +0000 | [diff] [blame] | 1 | ; RUN: opt < %s -analyze -basicaa -da | FileCheck %s |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 2 | |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 3 | 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" |
| 4 | target triple = "x86_64-apple-macosx10.6.0" |
| 5 | |
| 6 | |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 7 | ;; for (long int i = 0; i < 50; i++) { |
| 8 | ;; A[i][i] = i; |
| 9 | ;; *B++ = A[i + 10][i + 9]; |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 10 | |
| 11 | define void @couple0([100 x i32]* %A, i32* %B, i32 %n) nounwind uwtable ssp { |
| 12 | entry: |
| 13 | br label %for.body |
| 14 | |
| Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 15 | ; CHECK-LABEL: couple0 |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 16 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 17 | ; CHECK: da analyze - none! |
| 18 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 19 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 20 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 21 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 22 | |
| 23 | for.body: ; preds = %entry, %for.body |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 24 | %i.02 = phi i64 [ 0, %entry ], [ %inc, %for.body ] |
| 25 | %B.addr.01 = phi i32* [ %B, %entry ], [ %incdec.ptr, %for.body ] |
| 26 | %conv = trunc i64 %i.02 to i32 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 27 | %arrayidx1 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %i.02, i64 %i.02 |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 28 | store i32 %conv, i32* %arrayidx1, align 4 |
| 29 | %add = add nsw i64 %i.02, 9 |
| 30 | %add2 = add nsw i64 %i.02, 10 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 31 | %arrayidx4 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %add2, i64 %add |
| David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 32 | %0 = load i32, i32* %arrayidx4, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 33 | %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1 |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 34 | store i32 %0, i32* %B.addr.01, align 4 |
| 35 | %inc = add nsw i64 %i.02, 1 |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 36 | %exitcond = icmp ne i64 %inc, 50 |
| 37 | br i1 %exitcond, label %for.body, label %for.end |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 38 | |
| 39 | for.end: ; preds = %for.body |
| 40 | ret void |
| 41 | } |
| 42 | |
| 43 | |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 44 | ;; for (long int i = 0; i < 50; i++) { |
| 45 | ;; A[i][i] = i; |
| 46 | ;; *B++ = A[i + 9][i + 9]; |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 47 | |
| 48 | define void @couple1([100 x i32]* %A, i32* %B, i32 %n) nounwind uwtable ssp { |
| 49 | entry: |
| 50 | br label %for.body |
| 51 | |
| Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 52 | ; CHECK-LABEL: couple1 |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 53 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 54 | ; CHECK: da analyze - consistent flow [-9]! |
| 55 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 56 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 57 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 58 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 59 | |
| 60 | for.body: ; preds = %entry, %for.body |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 61 | %i.02 = phi i64 [ 0, %entry ], [ %inc, %for.body ] |
| 62 | %B.addr.01 = phi i32* [ %B, %entry ], [ %incdec.ptr, %for.body ] |
| 63 | %conv = trunc i64 %i.02 to i32 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 64 | %arrayidx1 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %i.02, i64 %i.02 |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 65 | store i32 %conv, i32* %arrayidx1, align 4 |
| 66 | %add = add nsw i64 %i.02, 9 |
| 67 | %add2 = add nsw i64 %i.02, 9 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 68 | %arrayidx4 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %add2, i64 %add |
| David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 69 | %0 = load i32, i32* %arrayidx4, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 70 | %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1 |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 71 | store i32 %0, i32* %B.addr.01, align 4 |
| 72 | %inc = add nsw i64 %i.02, 1 |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 73 | %exitcond = icmp ne i64 %inc, 50 |
| 74 | br i1 %exitcond, label %for.body, label %for.end |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 75 | |
| 76 | for.end: ; preds = %for.body |
| 77 | ret void |
| 78 | } |
| 79 | |
| 80 | |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 81 | ;; for (long int i = 0; i < 50; i++) { |
| 82 | ;; A[3*i - 6][3*i - 6] = i; |
| 83 | ;; *B++ = A[i][i]; |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 84 | |
| 85 | define void @couple2([100 x i32]* %A, i32* %B, i32 %n) nounwind uwtable ssp { |
| 86 | entry: |
| 87 | br label %for.body |
| 88 | |
| Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 89 | ; CHECK-LABEL: couple2 |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 90 | ; CHECK: da analyze - none! |
| Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 91 | ; CHECK: da analyze - flow [<]! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 92 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 93 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 94 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 95 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 96 | |
| 97 | for.body: ; preds = %entry, %for.body |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 98 | %i.02 = phi i64 [ 0, %entry ], [ %inc, %for.body ] |
| 99 | %B.addr.01 = phi i32* [ %B, %entry ], [ %incdec.ptr, %for.body ] |
| 100 | %conv = trunc i64 %i.02 to i32 |
| 101 | %mul = mul nsw i64 %i.02, 3 |
| 102 | %sub = add nsw i64 %mul, -6 |
| 103 | %mul1 = mul nsw i64 %i.02, 3 |
| 104 | %sub2 = add nsw i64 %mul1, -6 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 105 | %arrayidx3 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %sub2, i64 %sub |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 106 | store i32 %conv, i32* %arrayidx3, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 107 | %arrayidx5 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %i.02, i64 %i.02 |
| David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 108 | %0 = load i32, i32* %arrayidx5, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 109 | %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1 |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 110 | store i32 %0, i32* %B.addr.01, align 4 |
| 111 | %inc = add nsw i64 %i.02, 1 |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 112 | %exitcond = icmp ne i64 %inc, 50 |
| 113 | br i1 %exitcond, label %for.body, label %for.end |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 114 | |
| 115 | for.end: ; preds = %for.body |
| 116 | ret void |
| 117 | } |
| 118 | |
| 119 | |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 120 | ;; for (long int i = 0; i < 50; i++) { |
| 121 | ;; A[3*i - 6][3*i - 5] = i; |
| 122 | ;; *B++ = A[i][i]; |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 123 | |
| 124 | define void @couple3([100 x i32]* %A, i32* %B, i32 %n) nounwind uwtable ssp { |
| 125 | entry: |
| 126 | br label %for.body |
| 127 | |
| Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 128 | ; CHECK-LABEL: couple3 |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 129 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 130 | ; CHECK: da analyze - none! |
| 131 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 132 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 133 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 134 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 135 | |
| 136 | for.body: ; preds = %entry, %for.body |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 137 | %i.02 = phi i64 [ 0, %entry ], [ %inc, %for.body ] |
| 138 | %B.addr.01 = phi i32* [ %B, %entry ], [ %incdec.ptr, %for.body ] |
| 139 | %conv = trunc i64 %i.02 to i32 |
| 140 | %mul = mul nsw i64 %i.02, 3 |
| 141 | %sub = add nsw i64 %mul, -5 |
| 142 | %mul1 = mul nsw i64 %i.02, 3 |
| 143 | %sub2 = add nsw i64 %mul1, -6 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 144 | %arrayidx3 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %sub2, i64 %sub |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 145 | store i32 %conv, i32* %arrayidx3, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 146 | %arrayidx5 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %i.02, i64 %i.02 |
| David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 147 | %0 = load i32, i32* %arrayidx5, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 148 | %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1 |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 149 | store i32 %0, i32* %B.addr.01, align 4 |
| 150 | %inc = add nsw i64 %i.02, 1 |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 151 | %exitcond = icmp ne i64 %inc, 50 |
| 152 | br i1 %exitcond, label %for.body, label %for.end |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 153 | |
| 154 | for.end: ; preds = %for.body |
| 155 | ret void |
| 156 | } |
| 157 | |
| 158 | |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 159 | ;; for (long int i = 0; i < 50; i++) { |
| 160 | ;; A[3*i - 6][3*i - n] = i; |
| 161 | ;; *B++ = A[i][i]; |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 162 | |
| 163 | define void @couple4([100 x i32]* %A, i32* %B, i32 %n) nounwind uwtable ssp { |
| 164 | entry: |
| 165 | br label %for.body |
| 166 | |
| Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 167 | ; CHECK-LABEL: couple4 |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 168 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 169 | ; CHECK: da analyze - flow [*|<]! |
| 170 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 171 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 172 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 173 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 174 | |
| 175 | for.body: ; preds = %entry, %for.body |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 176 | %i.02 = phi i64 [ 0, %entry ], [ %inc, %for.body ] |
| 177 | %B.addr.01 = phi i32* [ %B, %entry ], [ %incdec.ptr, %for.body ] |
| 178 | %conv = trunc i64 %i.02 to i32 |
| 179 | %mul = mul nsw i64 %i.02, 3 |
| 180 | %conv1 = sext i32 %n to i64 |
| 181 | %sub = sub nsw i64 %mul, %conv1 |
| 182 | %mul2 = mul nsw i64 %i.02, 3 |
| 183 | %sub3 = add nsw i64 %mul2, -6 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 184 | %arrayidx4 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %sub3, i64 %sub |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 185 | store i32 %conv, i32* %arrayidx4, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 186 | %arrayidx6 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %i.02, i64 %i.02 |
| David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 187 | %0 = load i32, i32* %arrayidx6, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 188 | %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1 |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 189 | store i32 %0, i32* %B.addr.01, align 4 |
| 190 | %inc = add nsw i64 %i.02, 1 |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 191 | %exitcond = icmp ne i64 %inc, 50 |
| 192 | br i1 %exitcond, label %for.body, label %for.end |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 193 | |
| 194 | for.end: ; preds = %for.body |
| 195 | ret void |
| 196 | } |
| 197 | |
| 198 | |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 199 | ;; for (long int i = 0; i < 50; i++) { |
| 200 | ;; A[3*i - n + 1][3*i - n] = i; |
| 201 | ;; *B++ = A[i][i]; |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 202 | |
| 203 | define void @couple5([100 x i32]* %A, i32* %B, i32 %n) nounwind uwtable ssp { |
| 204 | entry: |
| 205 | br label %for.body |
| 206 | |
| Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 207 | ; CHECK-LABEL: couple5 |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 208 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 209 | ; CHECK: da analyze - none! |
| 210 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 211 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 212 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 213 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 214 | |
| 215 | for.body: ; preds = %entry, %for.body |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 216 | %i.02 = phi i64 [ 0, %entry ], [ %inc, %for.body ] |
| 217 | %B.addr.01 = phi i32* [ %B, %entry ], [ %incdec.ptr, %for.body ] |
| 218 | %conv = trunc i64 %i.02 to i32 |
| 219 | %mul = mul nsw i64 %i.02, 3 |
| 220 | %conv1 = sext i32 %n to i64 |
| 221 | %sub = sub nsw i64 %mul, %conv1 |
| 222 | %mul2 = mul nsw i64 %i.02, 3 |
| 223 | %conv3 = sext i32 %n to i64 |
| 224 | %sub4 = sub nsw i64 %mul2, %conv3 |
| 225 | %add = add nsw i64 %sub4, 1 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 226 | %arrayidx5 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %add, i64 %sub |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 227 | store i32 %conv, i32* %arrayidx5, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 228 | %arrayidx7 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %i.02, i64 %i.02 |
| David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 229 | %0 = load i32, i32* %arrayidx7, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 230 | %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1 |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 231 | store i32 %0, i32* %B.addr.01, align 4 |
| 232 | %inc = add nsw i64 %i.02, 1 |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 233 | %exitcond = icmp ne i64 %inc, 50 |
| 234 | br i1 %exitcond, label %for.body, label %for.end |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 235 | |
| 236 | for.end: ; preds = %for.body |
| 237 | ret void |
| 238 | } |
| 239 | |
| 240 | |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 241 | ;; for (long int i = 0; i < 50; i++) { |
| 242 | ;; A[i][3*i - 6] = i; |
| 243 | ;; *B++ = A[i][i]; |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 244 | |
| 245 | define void @couple6([100 x i32]* %A, i32* %B, i32 %n) nounwind uwtable ssp { |
| 246 | entry: |
| 247 | br label %for.body |
| 248 | |
| Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 249 | ; CHECK-LABEL: couple6 |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 250 | ; CHECK: da analyze - none! |
| Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 251 | ; CHECK: da analyze - flow [<]! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 252 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 253 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 254 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 255 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 256 | |
| 257 | for.body: ; preds = %entry, %for.body |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 258 | %i.02 = phi i64 [ 0, %entry ], [ %inc, %for.body ] |
| 259 | %B.addr.01 = phi i32* [ %B, %entry ], [ %incdec.ptr, %for.body ] |
| 260 | %conv = trunc i64 %i.02 to i32 |
| 261 | %mul = mul nsw i64 %i.02, 3 |
| 262 | %sub = add nsw i64 %mul, -6 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 263 | %arrayidx1 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %i.02, i64 %sub |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 264 | store i32 %conv, i32* %arrayidx1, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 265 | %arrayidx3 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %i.02, i64 %i.02 |
| David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 266 | %0 = load i32, i32* %arrayidx3, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 267 | %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1 |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 268 | store i32 %0, i32* %B.addr.01, align 4 |
| 269 | %inc = add nsw i64 %i.02, 1 |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 270 | %exitcond = icmp ne i64 %inc, 50 |
| 271 | br i1 %exitcond, label %for.body, label %for.end |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 272 | |
| 273 | for.end: ; preds = %for.body |
| 274 | ret void |
| 275 | } |
| 276 | |
| 277 | |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 278 | ;; for (long int i = 0; i < 50; i++) { |
| 279 | ;; A[i][3*i - 5] = i; |
| 280 | ;; *B++ = A[i][i]; |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 281 | |
| 282 | define void @couple7([100 x i32]* %A, i32* %B, i32 %n) nounwind uwtable ssp { |
| 283 | entry: |
| 284 | br label %for.body |
| 285 | |
| Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 286 | ; CHECK-LABEL: couple7 |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 287 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 288 | ; CHECK: da analyze - none! |
| 289 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 290 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 291 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 292 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 293 | |
| 294 | for.body: ; preds = %entry, %for.body |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 295 | %i.02 = phi i64 [ 0, %entry ], [ %inc, %for.body ] |
| 296 | %B.addr.01 = phi i32* [ %B, %entry ], [ %incdec.ptr, %for.body ] |
| 297 | %conv = trunc i64 %i.02 to i32 |
| 298 | %mul = mul nsw i64 %i.02, 3 |
| 299 | %sub = add nsw i64 %mul, -5 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 300 | %arrayidx1 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %i.02, i64 %sub |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 301 | store i32 %conv, i32* %arrayidx1, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 302 | %arrayidx3 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %i.02, i64 %i.02 |
| David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 303 | %0 = load i32, i32* %arrayidx3, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 304 | %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1 |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 305 | store i32 %0, i32* %B.addr.01, align 4 |
| 306 | %inc = add nsw i64 %i.02, 1 |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 307 | %exitcond = icmp ne i64 %inc, 50 |
| 308 | br i1 %exitcond, label %for.body, label %for.end |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 309 | |
| 310 | for.end: ; preds = %for.body |
| 311 | ret void |
| 312 | } |
| 313 | |
| 314 | |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 315 | ;; for (long int i = 0; i <= 15; i++) { |
| 316 | ;; A[3*i - 18][3 - i] = i; |
| 317 | ;; *B++ = A[i][i]; |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 318 | |
| 319 | define void @couple8([100 x i32]* %A, i32* %B, i32 %n) nounwind uwtable ssp { |
| 320 | entry: |
| 321 | br label %for.body |
| 322 | |
| Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 323 | ; CHECK-LABEL: couple8 |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 324 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 325 | ; CHECK: da analyze - none! |
| 326 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 327 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 328 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 329 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 330 | |
| 331 | for.body: ; preds = %entry, %for.body |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 332 | %i.02 = phi i64 [ 0, %entry ], [ %inc, %for.body ] |
| 333 | %B.addr.01 = phi i32* [ %B, %entry ], [ %incdec.ptr, %for.body ] |
| 334 | %conv = trunc i64 %i.02 to i32 |
| 335 | %sub = sub nsw i64 3, %i.02 |
| 336 | %mul = mul nsw i64 %i.02, 3 |
| 337 | %sub1 = add nsw i64 %mul, -18 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 338 | %arrayidx2 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %sub1, i64 %sub |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 339 | store i32 %conv, i32* %arrayidx2, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 340 | %arrayidx4 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %i.02, i64 %i.02 |
| David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 341 | %0 = load i32, i32* %arrayidx4, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 342 | %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1 |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 343 | store i32 %0, i32* %B.addr.01, align 4 |
| 344 | %inc = add nsw i64 %i.02, 1 |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 345 | %exitcond = icmp ne i64 %inc, 16 |
| 346 | br i1 %exitcond, label %for.body, label %for.end |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 347 | |
| 348 | for.end: ; preds = %for.body |
| 349 | ret void |
| 350 | } |
| 351 | |
| 352 | |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 353 | ;; for (long int i = 0; i <= 15; i++) { |
| 354 | ;; A[3*i - 18][2 - i] = i; |
| 355 | ;; *B++ = A[i][i]; |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 356 | |
| 357 | define void @couple9([100 x i32]* %A, i32* %B, i32 %n) nounwind uwtable ssp { |
| 358 | entry: |
| 359 | br label %for.body |
| 360 | |
| Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 361 | ; CHECK-LABEL: couple9 |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 362 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 363 | ; CHECK: da analyze - none! |
| 364 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 365 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 366 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 367 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 368 | |
| 369 | for.body: ; preds = %entry, %for.body |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 370 | %i.02 = phi i64 [ 0, %entry ], [ %inc, %for.body ] |
| 371 | %B.addr.01 = phi i32* [ %B, %entry ], [ %incdec.ptr, %for.body ] |
| 372 | %conv = trunc i64 %i.02 to i32 |
| 373 | %sub = sub nsw i64 2, %i.02 |
| 374 | %mul = mul nsw i64 %i.02, 3 |
| 375 | %sub1 = add nsw i64 %mul, -18 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 376 | %arrayidx2 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %sub1, i64 %sub |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 377 | store i32 %conv, i32* %arrayidx2, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 378 | %arrayidx4 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %i.02, i64 %i.02 |
| David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 379 | %0 = load i32, i32* %arrayidx4, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 380 | %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1 |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 381 | store i32 %0, i32* %B.addr.01, align 4 |
| 382 | %inc = add nsw i64 %i.02, 1 |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 383 | %exitcond = icmp ne i64 %inc, 16 |
| 384 | br i1 %exitcond, label %for.body, label %for.end |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 385 | |
| 386 | for.end: ; preds = %for.body |
| 387 | ret void |
| 388 | } |
| 389 | |
| 390 | |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 391 | ;; for (long int i = 0; i <= 15; i++) { |
| 392 | ;; A[3*i - 18][6 - i] = i; |
| 393 | ;; *B++ = A[i][i]; |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 394 | |
| 395 | define void @couple10([100 x i32]* %A, i32* %B, i32 %n) nounwind uwtable ssp { |
| 396 | entry: |
| 397 | br label %for.body |
| 398 | |
| Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 399 | ; CHECK-LABEL: couple10 |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 400 | ; CHECK: da analyze - none! |
| Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 401 | ; CHECK: da analyze - flow [>]! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 402 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 403 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 404 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 405 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 406 | |
| 407 | for.body: ; preds = %entry, %for.body |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 408 | %i.02 = phi i64 [ 0, %entry ], [ %inc, %for.body ] |
| 409 | %B.addr.01 = phi i32* [ %B, %entry ], [ %incdec.ptr, %for.body ] |
| 410 | %conv = trunc i64 %i.02 to i32 |
| 411 | %sub = sub nsw i64 6, %i.02 |
| 412 | %mul = mul nsw i64 %i.02, 3 |
| 413 | %sub1 = add nsw i64 %mul, -18 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 414 | %arrayidx2 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %sub1, i64 %sub |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 415 | store i32 %conv, i32* %arrayidx2, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 416 | %arrayidx4 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %i.02, i64 %i.02 |
| David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 417 | %0 = load i32, i32* %arrayidx4, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 418 | %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1 |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 419 | store i32 %0, i32* %B.addr.01, align 4 |
| 420 | %inc = add nsw i64 %i.02, 1 |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 421 | %exitcond = icmp ne i64 %inc, 16 |
| 422 | br i1 %exitcond, label %for.body, label %for.end |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 423 | |
| 424 | for.end: ; preds = %for.body |
| 425 | ret void |
| 426 | } |
| 427 | |
| 428 | |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 429 | ;; for (long int i = 0; i <= 15; i++) { |
| 430 | ;; A[3*i - 18][18 - i] = i; |
| 431 | ;; *B++ = A[i][i]; |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 432 | |
| 433 | define void @couple11([100 x i32]* %A, i32* %B, i32 %n) nounwind uwtable ssp { |
| 434 | entry: |
| 435 | br label %for.body |
| 436 | |
| Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 437 | ; CHECK-LABEL: couple11 |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 438 | ; CHECK: da analyze - none! |
| Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 439 | ; CHECK: da analyze - flow [>]! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 440 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 441 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 442 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 443 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 444 | |
| 445 | for.body: ; preds = %entry, %for.body |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 446 | %i.02 = phi i64 [ 0, %entry ], [ %inc, %for.body ] |
| 447 | %B.addr.01 = phi i32* [ %B, %entry ], [ %incdec.ptr, %for.body ] |
| 448 | %conv = trunc i64 %i.02 to i32 |
| 449 | %sub = sub nsw i64 18, %i.02 |
| 450 | %mul = mul nsw i64 %i.02, 3 |
| 451 | %sub1 = add nsw i64 %mul, -18 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 452 | %arrayidx2 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %sub1, i64 %sub |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 453 | store i32 %conv, i32* %arrayidx2, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 454 | %arrayidx4 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %i.02, i64 %i.02 |
| David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 455 | %0 = load i32, i32* %arrayidx4, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 456 | %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1 |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 457 | store i32 %0, i32* %B.addr.01, align 4 |
| 458 | %inc = add nsw i64 %i.02, 1 |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 459 | %exitcond = icmp ne i64 %inc, 16 |
| 460 | br i1 %exitcond, label %for.body, label %for.end |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 461 | |
| 462 | for.end: ; preds = %for.body |
| 463 | ret void |
| 464 | } |
| 465 | |
| 466 | |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 467 | ;; for (long int i = 0; i <= 12; i++) { |
| 468 | ;; A[3*i - 18][22 - i] = i; |
| 469 | ;; *B++ = A[i][i]; |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 470 | |
| 471 | define void @couple12([100 x i32]* %A, i32* %B, i32 %n) nounwind uwtable ssp { |
| 472 | entry: |
| 473 | br label %for.body |
| 474 | |
| Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 475 | ; CHECK-LABEL: couple12 |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 476 | ; CHECK: da analyze - none! |
| Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 477 | ; CHECK: da analyze - flow [>]! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 478 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 479 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 480 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 481 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 482 | |
| 483 | for.body: ; preds = %entry, %for.body |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 484 | %i.02 = phi i64 [ 0, %entry ], [ %inc, %for.body ] |
| 485 | %B.addr.01 = phi i32* [ %B, %entry ], [ %incdec.ptr, %for.body ] |
| 486 | %conv = trunc i64 %i.02 to i32 |
| 487 | %sub = sub nsw i64 22, %i.02 |
| 488 | %mul = mul nsw i64 %i.02, 3 |
| 489 | %sub1 = add nsw i64 %mul, -18 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 490 | %arrayidx2 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %sub1, i64 %sub |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 491 | store i32 %conv, i32* %arrayidx2, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 492 | %arrayidx4 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %i.02, i64 %i.02 |
| David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 493 | %0 = load i32, i32* %arrayidx4, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 494 | %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1 |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 495 | store i32 %0, i32* %B.addr.01, align 4 |
| 496 | %inc = add nsw i64 %i.02, 1 |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 497 | %exitcond = icmp ne i64 %inc, 13 |
| 498 | br i1 %exitcond, label %for.body, label %for.end |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 499 | |
| 500 | for.end: ; preds = %for.body |
| 501 | ret void |
| 502 | } |
| 503 | |
| 504 | |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 505 | ;; for (long int i = 0; i < 12; i++) { |
| 506 | ;; A[3*i - 18][22 - i] = i; |
| 507 | ;; *B++ = A[i][i]; |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 508 | |
| 509 | define void @couple13([100 x i32]* %A, i32* %B, i32 %n) nounwind uwtable ssp { |
| 510 | entry: |
| 511 | br label %for.body |
| 512 | |
| Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 513 | ; CHECK-LABEL: couple13 |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 514 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 515 | ; CHECK: da analyze - none! |
| 516 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 517 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 518 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 519 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 520 | |
| 521 | for.body: ; preds = %entry, %for.body |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 522 | %i.02 = phi i64 [ 0, %entry ], [ %inc, %for.body ] |
| 523 | %B.addr.01 = phi i32* [ %B, %entry ], [ %incdec.ptr, %for.body ] |
| 524 | %conv = trunc i64 %i.02 to i32 |
| 525 | %sub = sub nsw i64 22, %i.02 |
| 526 | %mul = mul nsw i64 %i.02, 3 |
| 527 | %sub1 = add nsw i64 %mul, -18 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 528 | %arrayidx2 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %sub1, i64 %sub |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 529 | store i32 %conv, i32* %arrayidx2, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 530 | %arrayidx4 = getelementptr inbounds [100 x i32], [100 x i32]* %A, i64 %i.02, i64 %i.02 |
| David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 531 | %0 = load i32, i32* %arrayidx4, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 532 | %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1 |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 533 | store i32 %0, i32* %B.addr.01, align 4 |
| 534 | %inc = add nsw i64 %i.02, 1 |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 535 | %exitcond = icmp ne i64 %inc, 12 |
| 536 | br i1 %exitcond, label %for.body, label %for.end |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 537 | |
| 538 | for.end: ; preds = %for.body |
| 539 | ret void |
| 540 | } |
| 541 | |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 542 | ;; for (long int i = 0; i < 100; i++) { |
| 543 | ;; A[3*i - 18][18 - i][i] = i; |
| 544 | ;; *B++ = A[i][i][i]; |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 545 | |
| 546 | define void @couple14([100 x [100 x i32]]* %A, i32* %B, i32 %n) nounwind uwtable ssp { |
| 547 | entry: |
| 548 | br label %for.body |
| 549 | |
| Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 550 | ; CHECK-LABEL: couple14 |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 551 | ; CHECK: da analyze - none! |
| Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 552 | ; CHECK: da analyze - flow [<]! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 553 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 554 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 555 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 556 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 557 | |
| 558 | for.body: ; preds = %entry, %for.body |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 559 | %i.02 = phi i64 [ 0, %entry ], [ %inc, %for.body ] |
| 560 | %B.addr.01 = phi i32* [ %B, %entry ], [ %incdec.ptr, %for.body ] |
| 561 | %conv = trunc i64 %i.02 to i32 |
| 562 | %sub = sub nsw i64 18, %i.02 |
| 563 | %mul = mul nsw i64 %i.02, 3 |
| 564 | %sub1 = add nsw i64 %mul, -18 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 565 | %arrayidx3 = getelementptr inbounds [100 x [100 x i32]], [100 x [100 x i32]]* %A, i64 %sub1, i64 %sub, i64 %i.02 |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 566 | store i32 %conv, i32* %arrayidx3, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 567 | %arrayidx6 = getelementptr inbounds [100 x [100 x i32]], [100 x [100 x i32]]* %A, i64 %i.02, i64 %i.02, i64 %i.02 |
| David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 568 | %0 = load i32, i32* %arrayidx6, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 569 | %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1 |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 570 | store i32 %0, i32* %B.addr.01, align 4 |
| 571 | %inc = add nsw i64 %i.02, 1 |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 572 | %exitcond = icmp ne i64 %inc, 100 |
| 573 | br i1 %exitcond, label %for.body, label %for.end |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 574 | |
| 575 | for.end: ; preds = %for.body |
| 576 | ret void |
| 577 | } |
| 578 | |
| 579 | |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 580 | ;; for (long int i = 0; i < 100; i++) { |
| 581 | ;; A[3*i - 18][22 - i][i] = i; |
| 582 | ;; *B++ = A[i][i][i]; |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 583 | |
| 584 | define void @couple15([100 x [100 x i32]]* %A, i32* %B, i32 %n) nounwind uwtable ssp { |
| 585 | entry: |
| 586 | br label %for.body |
| 587 | |
| Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 588 | ; CHECK-LABEL: couple15 |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 589 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 590 | ; CHECK: da analyze - none! |
| 591 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 592 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 593 | ; CHECK: da analyze - confused! |
| Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 594 | ; CHECK: da analyze - none! |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 595 | |
| 596 | for.body: ; preds = %entry, %for.body |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 597 | %i.02 = phi i64 [ 0, %entry ], [ %inc, %for.body ] |
| 598 | %B.addr.01 = phi i32* [ %B, %entry ], [ %incdec.ptr, %for.body ] |
| 599 | %conv = trunc i64 %i.02 to i32 |
| 600 | %sub = sub nsw i64 22, %i.02 |
| 601 | %mul = mul nsw i64 %i.02, 3 |
| 602 | %sub1 = add nsw i64 %mul, -18 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 603 | %arrayidx3 = getelementptr inbounds [100 x [100 x i32]], [100 x [100 x i32]]* %A, i64 %sub1, i64 %sub, i64 %i.02 |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 604 | store i32 %conv, i32* %arrayidx3, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 605 | %arrayidx6 = getelementptr inbounds [100 x [100 x i32]], [100 x [100 x i32]]* %A, i64 %i.02, i64 %i.02, i64 %i.02 |
| David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 606 | %0 = load i32, i32* %arrayidx6, align 4 |
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 607 | %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1 |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 608 | store i32 %0, i32* %B.addr.01, align 4 |
| 609 | %inc = add nsw i64 %i.02, 1 |
| Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 610 | %exitcond = icmp ne i64 %inc, 100 |
| 611 | br i1 %exitcond, label %for.body, label %for.end |
| Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 612 | |
| 613 | for.end: ; preds = %for.body |
| 614 | ret void |
| 615 | } |
| David Green | 2911b3a | 2018-05-31 14:55:29 +0000 | [diff] [blame] | 616 | |
| 617 | ;; for(int i = 0; i < N; i+=1) { |
| 618 | ;; A[M*N*i] = 1; |
| 619 | ;; for(int j = 0; j < M; j+=1) |
| 620 | ;; A[M*N + M*i + j] = 2; |
| 621 | |
| 622 | define void @couple_weakzerosiv(i32* noalias nocapture %A, i64 %N, i64 %M) { |
| 623 | entry: |
| 624 | %cmp29 = icmp sgt i64 %N, 0 |
| 625 | br i1 %cmp29, label %for.body.lr.ph, label %for.cond.cleanup |
| 626 | |
| 627 | ; CHECK-LABEL: couple_weakzerosiv |
| 628 | ; CHECK: da analyze - none! |
| 629 | ; CHECK: da analyze - output [p>]! |
| 630 | ; CHECK: da analyze - none! |
| 631 | |
| 632 | for.body.lr.ph: ; preds = %entry |
| 633 | %mul = mul nsw i64 %M, %N |
| 634 | br label %for.body.us |
| 635 | |
| 636 | for.body.us: ; preds = %for.body.lr.ph, %for.cond.cleanup4.loopexit.us |
| 637 | %i.030.us = phi i64 [ %add12.us, %for.cond.cleanup4.loopexit.us ], [ 0, %for.body.lr.ph ] |
| 638 | %mul1.us = mul nsw i64 %i.030.us, %mul |
| 639 | %arrayidx.us = getelementptr inbounds i32, i32* %A, i64 %mul1.us |
| 640 | store i32 1, i32* %arrayidx.us, align 4 |
| 641 | %mul6.us = mul nsw i64 %i.030.us, %M |
| 642 | %add.us = add i64 %mul6.us, %mul |
| 643 | br label %for.body5.us |
| 644 | |
| 645 | for.body5.us: ; preds = %for.body5.us, %for.body.us |
| 646 | %j.028.us = phi i64 [ 0, %for.body.us ], [ %add10.us, %for.body5.us ] |
| 647 | %add8.us = add i64 %add.us, %j.028.us |
| 648 | %arrayidx9.us = getelementptr inbounds i32, i32* %A, i64 %add8.us |
| 649 | store i32 2, i32* %arrayidx9.us, align 4 |
| 650 | %add10.us = add nuw nsw i64 %j.028.us, 1 |
| 651 | %exitcond.us = icmp eq i64 %add10.us, %M |
| 652 | br i1 %exitcond.us, label %for.cond.cleanup4.loopexit.us, label %for.body5.us |
| 653 | |
| 654 | for.cond.cleanup4.loopexit.us: ; preds = %for.body5.us |
| 655 | %add12.us = add nuw nsw i64 %i.030.us, 1 |
| 656 | %exitcond31.us = icmp eq i64 %add12.us, %N |
| 657 | br i1 %exitcond31.us, label %for.cond.cleanup, label %for.body.us |
| 658 | |
| 659 | for.cond.cleanup: ; preds = %for.cond.cleanup4.loopexit.us, %entry |
| 660 | ret void |
| 661 | } |