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