Chris Lattner | 2f7bb1b | 2004-09-19 18:45:45 +0000 | [diff] [blame] | 1 | ; Test promotion of loads that use the result of a select instruction. This |
| 2 | ; should be simplified by the instcombine pass. |
Chris Lattner | 3b61381 | 2004-04-08 19:59:22 +0000 | [diff] [blame] | 3 | |
Dan Gohman | 1880092 | 2009-09-11 18:01:28 +0000 | [diff] [blame] | 4 | ; RUN: opt < %s -instcombine -mem2reg -S | not grep alloca |
Chris Lattner | 3b61381 | 2004-04-08 19:59:22 +0000 | [diff] [blame] | 5 | |
Tanya Lattner | 4e59897 | 2008-03-18 04:14:37 +0000 | [diff] [blame] | 6 | define i32 @main() { |
| 7 | %mem_tmp.0 = alloca i32 ; <i32*> [#uses=3] |
| 8 | %mem_tmp.1 = alloca i32 ; <i32*> [#uses=3] |
| 9 | store i32 0, i32* %mem_tmp.0 |
| 10 | store i32 1, i32* %mem_tmp.1 |
| 11 | %tmp.1.i = load i32* %mem_tmp.1 ; <i32> [#uses=1] |
| 12 | %tmp.3.i = load i32* %mem_tmp.0 ; <i32> [#uses=1] |
| 13 | %tmp.4.i = icmp sle i32 %tmp.1.i, %tmp.3.i ; <i1> [#uses=1] |
| 14 | %mem_tmp.i.0 = select i1 %tmp.4.i, i32* %mem_tmp.1, i32* %mem_tmp.0 ; <i32*> [#uses=1] |
| 15 | %tmp.3 = load i32* %mem_tmp.i.0 ; <i32> [#uses=1] |
| 16 | ret i32 %tmp.3 |
Chris Lattner | 3b61381 | 2004-04-08 19:59:22 +0000 | [diff] [blame] | 17 | } |
| 18 | |