Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(467)

Side by Side Diff: test/Transforms/LoopUnroll/unloop.ll

Issue 183273009: Prep for merging 3.4: Undo changes from 3.3 branch (Closed) Base URL: http://git.chromium.org/native_client/pnacl-llvm.git@master
Patch Set: Retry Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/Transforms/LoopUnroll/scevunroll.ll ('k') | test/Transforms/LoopVectorize/lcssa-crash.ll » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 ; RUN: opt < %s -S -loop-unroll -verify-loop-info | FileCheck %s 1 ; RUN: opt < %s -S -loop-unroll -verify-loop-info | FileCheck %s
2 ; 2 ;
3 ; Unit tests for LoopInfo::updateUnloop. 3 ; Unit tests for LoopInfo::updateUnloop.
4 4
5 declare i1 @check() nounwind 5 declare i1 @check() nounwind
6 6
7 ; Ensure that tail->inner is removed and rely on verify-loopinfo to 7 ; Ensure that tail->inner is removed and rely on verify-loopinfo to
8 ; check soundness. 8 ; check soundness.
9 ; 9 ;
10 ; CHECK: @skiplevelexit 10 ; CHECK: @skiplevelexit
11 ; CHECK: tail: 11 ; CHECK: tail:
12 ; CHECK-NOT: br 12 ; CHECK-NOT: br
13 ; CHECK: ret void 13 ; CHECK: ret void
14 define void @skiplevelexit() nounwind { 14 define void @skiplevelexit() nounwind {
15 entry: 15 entry:
16 br label %outer 16 br label %outer
17 17
18 outer: 18 outer:
19 br label %inner 19 br label %inner
20 20
21 inner: 21 inner:
22 %iv = phi i32 [ 0, %outer ], [ %inc, %tail ] 22 %iv = phi i32 [ 0, %outer ], [ %inc, %tail ]
23 %inc = add i32 %iv, 1 23 %inc = add i32 %iv, 1
24 call zeroext i1 @check() 24 %wbucond = call zeroext i1 @check()
25 br i1 true, label %outer.backedge, label %tail 25 br i1 %wbucond, label %outer.backedge, label %tail
26 26
27 tail: 27 tail:
28 br i1 false, label %inner, label %exit 28 br i1 false, label %inner, label %exit
29 29
30 outer.backedge: 30 outer.backedge:
31 br label %outer 31 br label %outer
32 32
33 exit: 33 exit:
34 ret void 34 ret void
35 } 35 }
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 br label %return 119 br label %return
120 120
121 return: 121 return:
122 ret void 122 ret void
123 } 123 }
124 124
125 ; Remove the middle loop of a deeply nested loop tree. 125 ; Remove the middle loop of a deeply nested loop tree.
126 ; Ensure that only the middle loop is removed and rely on verify-loopinfo to 126 ; Ensure that only the middle loop is removed and rely on verify-loopinfo to
127 ; check soundness. 127 ; check soundness.
128 ; 128 ;
129 ; This test must be disabled until trip count computation can be optimized... 129 ; CHECK: @unloopDeepNested
130 ; rdar:14038809 [SCEV]: Optimize trip count computation for multi-exit loops.
131 ; CHECKFIXME: @unloopDeepNested
132 ; Inner-inner loop control. 130 ; Inner-inner loop control.
133 ; CHECKFIXME: while.cond.us.i: 131 ; CHECK: while.cond.us.i:
134 ; CHECKFIXME: br i1 %cmp.us.i, label %next_data.exit, label %while.body.us.i 132 ; CHECK: br i1 %cmp.us.i, label %next_data.exit, label %while.body.us.i
135 ; CHECKFIXME: if.then.us.i: 133 ; CHECK: if.then.us.i:
136 ; CHECKFIXME: br label %while.cond.us.i 134 ; CHECK: br label %while.cond.us.i
137 ; Inner loop tail. 135 ; Inner loop tail.
138 ; CHECKFIXME: if.else.i: 136 ; CHECK: if.else.i:
139 ; CHECKFIXME: br label %while.cond.outer.i 137 ; CHECK: br label %while.cond.outer.i
140 ; Middle loop control (removed). 138 ; Middle loop control (removed).
141 ; CHECKFIXME: valid_data.exit: 139 ; CHECK: valid_data.exit:
142 ; CHECKFIXME-NOT: br 140 ; CHECK-NOT: br
143 ; CHECKFIXME: %cmp = call zeroext i1 @check() 141 ; CHECK: %cmp = call zeroext i1 @check()
144 ; Outer loop control. 142 ; Outer loop control.
145 ; CHECKFIXME: copy_data.exit: 143 ; CHECK: copy_data.exit:
146 ; CHECKFIXME: br i1 %cmp38, label %if.then39, label %while.cond.outer 144 ; CHECK: br i1 %cmp38, label %if.then39, label %while.cond.outer
147 ; Outer-outer loop tail. 145 ; Outer-outer loop tail.
148 ; CHECKFIXME: while.cond.outer.outer.backedge: 146 ; CHECK: while.cond.outer.outer.backedge:
149 ; CHECKFIXME: br label %while.cond.outer.outer 147 ; CHECK: br label %while.cond.outer.outer
150 define void @unloopDeepNested() nounwind { 148 define void @unloopDeepNested() nounwind {
151 for.cond8.preheader.i: 149 for.cond8.preheader.i:
152 %cmp113.i = call zeroext i1 @check() 150 %cmp113.i = call zeroext i1 @check()
153 br i1 %cmp113.i, label %make_data.exit, label %for.body13.lr.ph.i 151 br i1 %cmp113.i, label %make_data.exit, label %for.body13.lr.ph.i
154 152
155 for.body13.lr.ph.i: 153 for.body13.lr.ph.i:
156 br label %make_data.exit 154 br label %make_data.exit
157 155
158 make_data.exit: 156 make_data.exit:
159 br label %while.cond.outer.outer 157 br label %while.cond.outer.outer
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 461
464 for.cond.i: ; preds = %for.cond.i, %for.bo dy2 462 for.cond.i: ; preds = %for.cond.i, %for.bo dy2
465 br i1 %tobool.i, label %for.cond.i, label %for.cond1.loopexit 463 br i1 %tobool.i, label %for.cond.i, label %for.cond1.loopexit
466 464
467 for.cond3: ; preds = %for.cond1 465 for.cond3: ; preds = %for.cond1
468 br i1 false, label %for.cond, label %if.end 466 br i1 false, label %for.cond, label %if.end
469 467
470 if.end: ; preds = %for.cond3 468 if.end: ; preds = %for.cond3
471 ret void 469 ret void
472 } 470 }
OLDNEW
« no previous file with comments | « test/Transforms/LoopUnroll/scevunroll.ll ('k') | test/Transforms/LoopVectorize/lcssa-crash.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698