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 | |
| 7 | ;; for (long int i = 0; i < 50; i++) |
| 8 | ;; for (long int j = 0; j < 50; j++) |
| 9 | ;; for (long int k = 0; k < 50; k++) |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 10 | ;; for (long int l = 0; l < 50; l++) { |
| 11 | ;; A[n][i][j + k] = i; |
| 12 | ;; *B++ = A[10][i + 10][2*j - l]; |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 13 | |
| 14 | define void @sep0([100 x [100 x i32]]* %A, i32* %B, i32 %n) nounwind uwtable ssp { |
| 15 | entry: |
| 16 | br label %for.cond1.preheader |
| 17 | |
Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 18 | ; CHECK: da analyze - output [= * * S]! |
| 19 | ; CHECK: da analyze - flow [* * * *|<]! |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 20 | ; CHECK: da analyze - confused! |
Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 21 | ; CHECK: da analyze - input [* * S *]! |
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.cond1.preheader: ; preds = %entry, %for.inc22 |
| 26 | %B.addr.08 = phi i32* [ %B, %entry ], [ %scevgep11, %for.inc22 ] |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 27 | %i.07 = phi i64 [ 0, %entry ], [ %inc23, %for.inc22 ] |
| 28 | br label %for.cond4.preheader |
| 29 | |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 30 | for.cond4.preheader: ; preds = %for.cond1.preheader, %for.inc19 |
| 31 | %B.addr.16 = phi i32* [ %B.addr.08, %for.cond1.preheader ], [ %scevgep9, %for.inc19 ] |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 32 | %j.05 = phi i64 [ 0, %for.cond1.preheader ], [ %inc20, %for.inc19 ] |
| 33 | br label %for.cond7.preheader |
| 34 | |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 35 | for.cond7.preheader: ; preds = %for.cond4.preheader, %for.inc16 |
| 36 | %B.addr.24 = phi i32* [ %B.addr.16, %for.cond4.preheader ], [ %scevgep, %for.inc16 ] |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 37 | %k.03 = phi i64 [ 0, %for.cond4.preheader ], [ %inc17, %for.inc16 ] |
| 38 | br label %for.body9 |
| 39 | |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 40 | for.body9: ; preds = %for.cond7.preheader, %for.body9 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 41 | %l.02 = phi i64 [ 0, %for.cond7.preheader ], [ %inc, %for.body9 ] |
| 42 | %B.addr.31 = phi i32* [ %B.addr.24, %for.cond7.preheader ], [ %incdec.ptr, %for.body9 ] |
| 43 | %conv = trunc i64 %i.07 to i32 |
| 44 | %add = add nsw i64 %j.05, %k.03 |
| 45 | %idxprom = sext i32 %n to i64 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 46 | %arrayidx11 = getelementptr inbounds [100 x [100 x i32]], [100 x [100 x i32]]* %A, i64 %idxprom, i64 %i.07, i64 %add |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 47 | store i32 %conv, i32* %arrayidx11, align 4 |
| 48 | %mul = shl nsw i64 %j.05, 1 |
| 49 | %sub = sub nsw i64 %mul, %l.02 |
| 50 | %add12 = add nsw i64 %i.07, 10 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 51 | %arrayidx15 = getelementptr inbounds [100 x [100 x i32]], [100 x [100 x i32]]* %A, i64 10, i64 %add12, i64 %sub |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 52 | %0 = load i32, i32* %arrayidx15, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 53 | %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.31, i64 1 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 54 | store i32 %0, i32* %B.addr.31, align 4 |
| 55 | %inc = add nsw i64 %l.02, 1 |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 56 | %exitcond = icmp ne i64 %inc, 50 |
| 57 | br i1 %exitcond, label %for.body9, label %for.inc16 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 58 | |
| 59 | for.inc16: ; preds = %for.body9 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 60 | %scevgep = getelementptr i32, i32* %B.addr.24, i64 50 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 61 | %inc17 = add nsw i64 %k.03, 1 |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 62 | %exitcond10 = icmp ne i64 %inc17, 50 |
| 63 | br i1 %exitcond10, label %for.cond7.preheader, label %for.inc19 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 64 | |
| 65 | for.inc19: ; preds = %for.inc16 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 66 | %scevgep9 = getelementptr i32, i32* %B.addr.16, i64 2500 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 67 | %inc20 = add nsw i64 %j.05, 1 |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 68 | %exitcond12 = icmp ne i64 %inc20, 50 |
| 69 | br i1 %exitcond12, label %for.cond4.preheader, label %for.inc22 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 70 | |
| 71 | for.inc22: ; preds = %for.inc19 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 72 | %scevgep11 = getelementptr i32, i32* %B.addr.08, i64 125000 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 73 | %inc23 = add nsw i64 %i.07, 1 |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 74 | %exitcond13 = icmp ne i64 %inc23, 50 |
| 75 | br i1 %exitcond13, label %for.cond1.preheader, label %for.end24 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 76 | |
| 77 | for.end24: ; preds = %for.inc22 |
| 78 | ret void |
| 79 | } |
| 80 | |
| 81 | |
| 82 | ;; for (long int i = 0; i < 50; i++) |
| 83 | ;; for (long int j = 0; j < 50; j++) |
| 84 | ;; for (long int k = 0; k < 50; k++) |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 85 | ;; for (long int l = 0; l < 50; l++) { |
| 86 | ;; A[i][i][j + k] = i; |
| 87 | ;; *B++ = A[10][i + 10][2*j - l]; |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 88 | |
| 89 | define void @sep1([100 x [100 x i32]]* %A, i32* %B, i32 %n) nounwind uwtable ssp { |
| 90 | entry: |
| 91 | br label %for.cond1.preheader |
| 92 | |
Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 93 | ; CHECK: da analyze - output [= * * S]! |
| 94 | ; CHECK: da analyze - flow [* * * *|<]! |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 95 | ; CHECK: da analyze - confused! |
Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 96 | ; CHECK: da analyze - input [* * S *]! |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 97 | ; CHECK: da analyze - confused! |
Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 98 | ; CHECK: da analyze - none! |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 99 | |
| 100 | for.cond1.preheader: ; preds = %entry, %for.inc22 |
| 101 | %B.addr.08 = phi i32* [ %B, %entry ], [ %scevgep11, %for.inc22 ] |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 102 | %i.07 = phi i64 [ 0, %entry ], [ %inc23, %for.inc22 ] |
| 103 | br label %for.cond4.preheader |
| 104 | |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 105 | for.cond4.preheader: ; preds = %for.cond1.preheader, %for.inc19 |
| 106 | %B.addr.16 = phi i32* [ %B.addr.08, %for.cond1.preheader ], [ %scevgep9, %for.inc19 ] |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 107 | %j.05 = phi i64 [ 0, %for.cond1.preheader ], [ %inc20, %for.inc19 ] |
| 108 | br label %for.cond7.preheader |
| 109 | |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 110 | for.cond7.preheader: ; preds = %for.cond4.preheader, %for.inc16 |
| 111 | %B.addr.24 = phi i32* [ %B.addr.16, %for.cond4.preheader ], [ %scevgep, %for.inc16 ] |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 112 | %k.03 = phi i64 [ 0, %for.cond4.preheader ], [ %inc17, %for.inc16 ] |
| 113 | br label %for.body9 |
| 114 | |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 115 | for.body9: ; preds = %for.cond7.preheader, %for.body9 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 116 | %l.02 = phi i64 [ 0, %for.cond7.preheader ], [ %inc, %for.body9 ] |
| 117 | %B.addr.31 = phi i32* [ %B.addr.24, %for.cond7.preheader ], [ %incdec.ptr, %for.body9 ] |
| 118 | %conv = trunc i64 %i.07 to i32 |
| 119 | %add = add nsw i64 %j.05, %k.03 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 120 | %arrayidx11 = getelementptr inbounds [100 x [100 x i32]], [100 x [100 x i32]]* %A, i64 %i.07, i64 %i.07, i64 %add |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 121 | store i32 %conv, i32* %arrayidx11, align 4 |
| 122 | %mul = shl nsw i64 %j.05, 1 |
| 123 | %sub = sub nsw i64 %mul, %l.02 |
| 124 | %add12 = add nsw i64 %i.07, 10 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 125 | %arrayidx15 = getelementptr inbounds [100 x [100 x i32]], [100 x [100 x i32]]* %A, i64 10, i64 %add12, i64 %sub |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 126 | %0 = load i32, i32* %arrayidx15, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 127 | %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.31, i64 1 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 128 | store i32 %0, i32* %B.addr.31, align 4 |
| 129 | %inc = add nsw i64 %l.02, 1 |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 130 | %exitcond = icmp ne i64 %inc, 50 |
| 131 | br i1 %exitcond, label %for.body9, label %for.inc16 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 132 | |
| 133 | for.inc16: ; preds = %for.body9 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 134 | %scevgep = getelementptr i32, i32* %B.addr.24, i64 50 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 135 | %inc17 = add nsw i64 %k.03, 1 |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 136 | %exitcond10 = icmp ne i64 %inc17, 50 |
| 137 | br i1 %exitcond10, label %for.cond7.preheader, label %for.inc19 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 138 | |
| 139 | for.inc19: ; preds = %for.inc16 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 140 | %scevgep9 = getelementptr i32, i32* %B.addr.16, i64 2500 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 141 | %inc20 = add nsw i64 %j.05, 1 |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 142 | %exitcond12 = icmp ne i64 %inc20, 50 |
| 143 | br i1 %exitcond12, label %for.cond4.preheader, label %for.inc22 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 144 | |
| 145 | for.inc22: ; preds = %for.inc19 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 146 | %scevgep11 = getelementptr i32, i32* %B.addr.08, i64 125000 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 147 | %inc23 = add nsw i64 %i.07, 1 |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 148 | %exitcond13 = icmp ne i64 %inc23, 50 |
| 149 | br i1 %exitcond13, label %for.cond1.preheader, label %for.end24 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 150 | |
| 151 | for.end24: ; preds = %for.inc22 |
| 152 | ret void |
| 153 | } |
| 154 | |
| 155 | |
| 156 | ;; for (long int i = 0; i < 50; i++) |
| 157 | ;; for (long int j = 0; j < 50; j++) |
| 158 | ;; for (long int k = 0; k < 50; k++) |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 159 | ;; for (long int l = 0; l < 50; l++) { |
| 160 | ;; A[i][i][i + k][l] = i; |
| 161 | ;; *B++ = A[10][i + 10][j + k][l + 10]; |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 162 | |
| 163 | define void @sep2([100 x [100 x [100 x i32]]]* %A, i32* %B, i32 %n) nounwind uwtable ssp { |
| 164 | entry: |
| 165 | br label %for.cond1.preheader |
| 166 | |
Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 167 | ; CHECK: da analyze - output [= S = =]! |
| 168 | ; CHECK: da analyze - flow [* * * <>]! |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 169 | ; CHECK: da analyze - confused! |
Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 170 | ; CHECK: da analyze - input [= * * *]! |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 171 | ; CHECK: da analyze - confused! |
Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 172 | ; CHECK: da analyze - none! |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 173 | |
| 174 | for.cond1.preheader: ; preds = %entry, %for.inc26 |
| 175 | %B.addr.08 = phi i32* [ %B, %entry ], [ %scevgep11, %for.inc26 ] |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 176 | %i.07 = phi i64 [ 0, %entry ], [ %inc27, %for.inc26 ] |
| 177 | br label %for.cond4.preheader |
| 178 | |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 179 | for.cond4.preheader: ; preds = %for.cond1.preheader, %for.inc23 |
| 180 | %B.addr.16 = phi i32* [ %B.addr.08, %for.cond1.preheader ], [ %scevgep9, %for.inc23 ] |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 181 | %j.05 = phi i64 [ 0, %for.cond1.preheader ], [ %inc24, %for.inc23 ] |
| 182 | br label %for.cond7.preheader |
| 183 | |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 184 | for.cond7.preheader: ; preds = %for.cond4.preheader, %for.inc20 |
| 185 | %B.addr.24 = phi i32* [ %B.addr.16, %for.cond4.preheader ], [ %scevgep, %for.inc20 ] |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 186 | %k.03 = phi i64 [ 0, %for.cond4.preheader ], [ %inc21, %for.inc20 ] |
| 187 | br label %for.body9 |
| 188 | |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 189 | for.body9: ; preds = %for.cond7.preheader, %for.body9 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 190 | %l.02 = phi i64 [ 0, %for.cond7.preheader ], [ %inc, %for.body9 ] |
| 191 | %B.addr.31 = phi i32* [ %B.addr.24, %for.cond7.preheader ], [ %incdec.ptr, %for.body9 ] |
| 192 | %conv = trunc i64 %i.07 to i32 |
| 193 | %add = add nsw i64 %i.07, %k.03 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 194 | %arrayidx12 = getelementptr inbounds [100 x [100 x [100 x i32]]], [100 x [100 x [100 x i32]]]* %A, i64 %i.07, i64 %i.07, i64 %add, i64 %l.02 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 195 | store i32 %conv, i32* %arrayidx12, align 4 |
| 196 | %add13 = add nsw i64 %l.02, 10 |
| 197 | %add14 = add nsw i64 %j.05, %k.03 |
| 198 | %add15 = add nsw i64 %i.07, 10 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 199 | %arrayidx19 = getelementptr inbounds [100 x [100 x [100 x i32]]], [100 x [100 x [100 x i32]]]* %A, i64 10, i64 %add15, i64 %add14, i64 %add13 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 200 | %0 = load i32, i32* %arrayidx19, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 201 | %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.31, i64 1 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 202 | store i32 %0, i32* %B.addr.31, align 4 |
| 203 | %inc = add nsw i64 %l.02, 1 |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 204 | %exitcond = icmp ne i64 %inc, 50 |
| 205 | br i1 %exitcond, label %for.body9, label %for.inc20 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 206 | |
| 207 | for.inc20: ; preds = %for.body9 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 208 | %scevgep = getelementptr i32, i32* %B.addr.24, i64 50 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 209 | %inc21 = add nsw i64 %k.03, 1 |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 210 | %exitcond10 = icmp ne i64 %inc21, 50 |
| 211 | br i1 %exitcond10, label %for.cond7.preheader, label %for.inc23 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 212 | |
| 213 | for.inc23: ; preds = %for.inc20 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 214 | %scevgep9 = getelementptr i32, i32* %B.addr.16, i64 2500 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 215 | %inc24 = add nsw i64 %j.05, 1 |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 216 | %exitcond12 = icmp ne i64 %inc24, 50 |
| 217 | br i1 %exitcond12, label %for.cond4.preheader, label %for.inc26 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 218 | |
| 219 | for.inc26: ; preds = %for.inc23 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 220 | %scevgep11 = getelementptr i32, i32* %B.addr.08, i64 125000 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 221 | %inc27 = add nsw i64 %i.07, 1 |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 222 | %exitcond13 = icmp ne i64 %inc27, 50 |
| 223 | br i1 %exitcond13, label %for.cond1.preheader, label %for.end28 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 224 | |
| 225 | for.end28: ; preds = %for.inc26 |
| 226 | ret void |
| 227 | } |
| 228 | |
| 229 | |
| 230 | ;; for (long int i = 0; i < 50; i++) |
| 231 | ;; for (long int j = 0; j < 50; j++) |
| 232 | ;; for (long int k = 0; k < 50; k++) |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 233 | ;; for (long int l = 0; l < 50; l++) { |
| 234 | ;; A[i][i][i + k][l + k] = i; |
| 235 | ;; *B++ = A[10][i + 10][j + k][l + 10]; |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 236 | |
| 237 | define void @sep3([100 x [100 x [100 x i32]]]* %A, i32* %B, i32 %n) nounwind uwtable ssp { |
| 238 | entry: |
| 239 | br label %for.cond1.preheader |
| 240 | |
Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 241 | ; CHECK: da analyze - output [= S = =]! |
| 242 | ; CHECK: da analyze - flow [* * * *|<]! |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 243 | ; CHECK: da analyze - confused! |
Sebastian Pop | bf6e1c2 | 2018-03-06 21:55:59 +0000 | [diff] [blame] | 244 | ; CHECK: da analyze - input [= * * *]! |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 245 | ; CHECK: da analyze - confused! |
Preston Briggs | 5cb8cfa | 2012-11-27 19:12:26 +0000 | [diff] [blame] | 246 | ; CHECK: da analyze - none! |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 247 | |
| 248 | for.cond1.preheader: ; preds = %entry, %for.inc27 |
| 249 | %B.addr.08 = phi i32* [ %B, %entry ], [ %scevgep11, %for.inc27 ] |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 250 | %i.07 = phi i64 [ 0, %entry ], [ %inc28, %for.inc27 ] |
| 251 | br label %for.cond4.preheader |
| 252 | |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 253 | for.cond4.preheader: ; preds = %for.cond1.preheader, %for.inc24 |
| 254 | %B.addr.16 = phi i32* [ %B.addr.08, %for.cond1.preheader ], [ %scevgep9, %for.inc24 ] |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 255 | %j.05 = phi i64 [ 0, %for.cond1.preheader ], [ %inc25, %for.inc24 ] |
| 256 | br label %for.cond7.preheader |
| 257 | |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 258 | for.cond7.preheader: ; preds = %for.cond4.preheader, %for.inc21 |
| 259 | %B.addr.24 = phi i32* [ %B.addr.16, %for.cond4.preheader ], [ %scevgep, %for.inc21 ] |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 260 | %k.03 = phi i64 [ 0, %for.cond4.preheader ], [ %inc22, %for.inc21 ] |
| 261 | br label %for.body9 |
| 262 | |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 263 | for.body9: ; preds = %for.cond7.preheader, %for.body9 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 264 | %l.02 = phi i64 [ 0, %for.cond7.preheader ], [ %inc, %for.body9 ] |
| 265 | %B.addr.31 = phi i32* [ %B.addr.24, %for.cond7.preheader ], [ %incdec.ptr, %for.body9 ] |
| 266 | %conv = trunc i64 %i.07 to i32 |
| 267 | %add = add nsw i64 %l.02, %k.03 |
| 268 | %add10 = add nsw i64 %i.07, %k.03 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 269 | %arrayidx13 = getelementptr inbounds [100 x [100 x [100 x i32]]], [100 x [100 x [100 x i32]]]* %A, i64 %i.07, i64 %i.07, i64 %add10, i64 %add |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 270 | store i32 %conv, i32* %arrayidx13, align 4 |
| 271 | %add14 = add nsw i64 %l.02, 10 |
| 272 | %add15 = add nsw i64 %j.05, %k.03 |
| 273 | %add16 = add nsw i64 %i.07, 10 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 274 | %arrayidx20 = getelementptr inbounds [100 x [100 x [100 x i32]]], [100 x [100 x [100 x i32]]]* %A, i64 10, i64 %add16, i64 %add15, i64 %add14 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 275 | %0 = load i32, i32* %arrayidx20, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 276 | %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.31, i64 1 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 277 | store i32 %0, i32* %B.addr.31, align 4 |
| 278 | %inc = add nsw i64 %l.02, 1 |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 279 | %exitcond = icmp ne i64 %inc, 50 |
| 280 | br i1 %exitcond, label %for.body9, label %for.inc21 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 281 | |
| 282 | for.inc21: ; preds = %for.body9 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 283 | %scevgep = getelementptr i32, i32* %B.addr.24, i64 50 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 284 | %inc22 = add nsw i64 %k.03, 1 |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 285 | %exitcond10 = icmp ne i64 %inc22, 50 |
| 286 | br i1 %exitcond10, label %for.cond7.preheader, label %for.inc24 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 287 | |
| 288 | for.inc24: ; preds = %for.inc21 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 289 | %scevgep9 = getelementptr i32, i32* %B.addr.16, i64 2500 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 290 | %inc25 = add nsw i64 %j.05, 1 |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 291 | %exitcond12 = icmp ne i64 %inc25, 50 |
| 292 | br i1 %exitcond12, label %for.cond4.preheader, label %for.inc27 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 293 | |
| 294 | for.inc27: ; preds = %for.inc24 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 295 | %scevgep11 = getelementptr i32, i32* %B.addr.08, i64 125000 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 296 | %inc28 = add nsw i64 %i.07, 1 |
Benjamin Kramer | 3eb1563 | 2012-11-13 12:12:02 +0000 | [diff] [blame] | 297 | %exitcond13 = icmp ne i64 %inc28, 50 |
| 298 | br i1 %exitcond13, label %for.cond1.preheader, label %for.end29 |
Sebastian Pop | 59b61b9 | 2012-10-11 07:32:34 +0000 | [diff] [blame] | 299 | |
| 300 | for.end29: ; preds = %for.inc27 |
| 301 | ret void |
| 302 | } |