Tanya Lattner | 53a66d1 | 2008-02-19 01:41:04 +0000 | [diff] [blame^] | 1 | ; RUN: llvm-as < %s | llc |
Tanya Lattner | 2393a24 | 2004-11-06 23:08:26 +0000 | [diff] [blame] | 2 | |
Vikram S. Adve | a7a1c7e | 2002-07-10 21:54:05 +0000 | [diff] [blame] | 3 | ;; |
| 4 | ;; Test the sequence: |
| 5 | ;; cast -> setle 0, %cast -> br %cond |
| 6 | ;; This sequence should cause the cast value to be forwarded twice, |
Dan Gohman | ea81d09 | 2007-09-24 15:50:11 +0000 | [diff] [blame] | 7 | ;; i.e., cast is forwarded to the setle and the setle is forwarded |
Vikram S. Adve | a7a1c7e | 2002-07-10 21:54:05 +0000 | [diff] [blame] | 8 | ;; to the branch. |
| 9 | ;; register argument of the "branch-on-register" instruction, i.e., |
| 10 | ;; |
| 11 | ;; This produces the bogus output instruction: |
| 12 | ;; brlez <NULL VALUE>, .L_SumArray_bb3. |
| 13 | ;; This came from %bb1 of sumarrray.ll generated from sumarray.c. |
| 14 | |
Tanya Lattner | 53a66d1 | 2008-02-19 01:41:04 +0000 | [diff] [blame^] | 15 | define i32 @SumArray(i32 %Num) { |
| 16 | %Num.upgrd.1 = alloca i32 ; <i32*> [#uses=2] |
Vikram S. Adve | a7a1c7e | 2002-07-10 21:54:05 +0000 | [diff] [blame] | 17 | br label %Top |
Vikram S. Adve | a7a1c7e | 2002-07-10 21:54:05 +0000 | [diff] [blame] | 18 | |
Tanya Lattner | 53a66d1 | 2008-02-19 01:41:04 +0000 | [diff] [blame^] | 19 | Top: ; preds = %Top, %0 |
| 20 | store i32 %Num, i32* %Num.upgrd.1 |
| 21 | %reg108 = load i32* %Num.upgrd.1 ; <i32> [#uses=1] |
| 22 | %cast1006 = bitcast i32 %reg108 to i32 ; <i32> [#uses=1] |
| 23 | %cond1001 = icmp ule i32 %cast1006, 0 ; <i1> [#uses=1] |
| 24 | br i1 %cond1001, label %bb6, label %Top |
| 25 | |
| 26 | bb6: ; preds = %Top |
| 27 | ret i32 42 |
Chris Lattner | 3b5d631 | 2005-01-07 21:15:58 +0000 | [diff] [blame] | 28 | } |
Tanya Lattner | 53a66d1 | 2008-02-19 01:41:04 +0000 | [diff] [blame^] | 29 | |