Tanya Lattner | 366c203 | 2008-02-19 01:44:26 +0000 | [diff] [blame] | 1 | ; Inlining used to break PHI nodes. This tests that they are correctly updated |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 2 | ; when a node is split around the call instruction. The verifier caught the error. |
| 3 | ; |
Tanya Lattner | 366c203 | 2008-02-19 01:44:26 +0000 | [diff] [blame] | 4 | ; RUN: llvm-as < %s | opt -inline |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 5 | ; |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 6 | |
Tanya Lattner | 366c203 | 2008-02-19 01:44:26 +0000 | [diff] [blame] | 7 | define i64 @test(i64 %X) { |
| 8 | ret i64 %X |
| 9 | } |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 10 | |
Tanya Lattner | 366c203 | 2008-02-19 01:44:26 +0000 | [diff] [blame] | 11 | define i64 @fib(i64 %n) { |
| 12 | ; <label>:0 |
| 13 | %T = icmp ult i64 %n, 2 ; <i1> [#uses=1] |
| 14 | br i1 %T, label %BaseCase, label %RecurseCase |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 15 | |
Tanya Lattner | 366c203 | 2008-02-19 01:44:26 +0000 | [diff] [blame] | 16 | RecurseCase: ; preds = %0 |
| 17 | %result = call i64 @test( i64 %n ) ; <i64> [#uses=0] |
| 18 | br label %BaseCase |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 19 | |
Tanya Lattner | 366c203 | 2008-02-19 01:44:26 +0000 | [diff] [blame] | 20 | BaseCase: ; preds = %RecurseCase, %0 |
| 21 | %X = phi i64 [ 1, %0 ], [ 2, %RecurseCase ] ; <i64> [#uses=1] |
| 22 | ret i64 %X |
| 23 | } |