Chandler Carruth | 4177e6f | 2012-07-02 12:47:22 +0000 | [diff] [blame] | 1 | ; RUN: opt < %s -scalar-evolution -analyze | grep "Loop %bb3: backedge-taken count is (-1 + %n)" |
Dan Gohman | 3837218 | 2008-08-12 20:17:31 +0000 | [diff] [blame] | 2 | |
| 3 | ; We don't want to use a max in the trip count expression in |
| 4 | ; this testcase. |
| 5 | |
| 6 | define void @foo(i32 %n, i32* %p, i32* %q) nounwind { |
| 7 | entry: |
| 8 | icmp sgt i32 %n, 0 |
| 9 | br i1 %0, label %bb, label %return |
| 10 | |
| 11 | bb: |
| 12 | load i32* %q, align 4 |
| 13 | icmp eq i32 %1, 0 |
| 14 | br i1 %2, label %return, label %bb3.preheader |
| 15 | |
| 16 | bb3.preheader: |
| 17 | br label %bb3 |
| 18 | |
| 19 | bb3: |
| 20 | %i.0 = phi i32 [ %7, %bb3 ], [ 0, %bb3.preheader ] |
| 21 | getelementptr i32* %p, i32 %i.0 |
| 22 | load i32* %3, align 4 |
| 23 | add i32 %4, 1 |
| 24 | getelementptr i32* %p, i32 %i.0 |
| 25 | store i32 %5, i32* %6, align 4 |
| 26 | add i32 %i.0, 1 |
| 27 | icmp slt i32 %7, %n |
| 28 | br i1 %8, label %bb3, label %return.loopexit |
| 29 | |
| 30 | return.loopexit: |
| 31 | br label %return |
| 32 | |
| 33 | return: |
| 34 | ret void |
| 35 | } |