Chris Lattner | 03ef2fc | 2003-05-29 15:16:10 +0000 | [diff] [blame] | 1 | ; This test ensures that alloca instructions in the entry block for an inlined |
| 2 | ; function are moved to the top of the function they are inlined into. |
| 3 | ; |
Dmitri Gribenko | b137c9e | 2012-12-30 01:28:40 +0000 | [diff] [blame] | 4 | ; RUN: opt -S -inline < %s | FileCheck %s |
Chris Lattner | 03ef2fc | 2003-05-29 15:16:10 +0000 | [diff] [blame] | 5 | |
Tanya Lattner | 5640bd1 | 2008-03-01 09:15:35 +0000 | [diff] [blame] | 6 | define i32 @func(i32 %i) { |
Sanjay Patel | da7fe0c | 2016-05-09 18:54:14 +0000 | [diff] [blame^] | 7 | %X = alloca i32 |
| 8 | store i32 %i, i32* %X |
| 9 | ret i32 %i |
Chris Lattner | 03ef2fc | 2003-05-29 15:16:10 +0000 | [diff] [blame] | 10 | } |
| 11 | |
Tanya Lattner | 5640bd1 | 2008-03-01 09:15:35 +0000 | [diff] [blame] | 12 | declare void @bar() |
Chris Lattner | 03ef2fc | 2003-05-29 15:16:10 +0000 | [diff] [blame] | 13 | |
Tanya Lattner | 5640bd1 | 2008-03-01 09:15:35 +0000 | [diff] [blame] | 14 | define i32 @main(i32 %argc) { |
Sanjay Patel | da7fe0c | 2016-05-09 18:54:14 +0000 | [diff] [blame^] | 15 | ; CHECK-LABEL: @main( |
| 16 | ; CHECK-NEXT: Entry: |
| 17 | ; CHECK-NEXT: [[X_I:%.*]] = alloca i32 |
| 18 | ; |
Chris Lattner | 03ef2fc | 2003-05-29 15:16:10 +0000 | [diff] [blame] | 19 | Entry: |
Sanjay Patel | da7fe0c | 2016-05-09 18:54:14 +0000 | [diff] [blame^] | 20 | call void @bar( ) |
| 21 | %X = call i32 @func( i32 7 ) |
| 22 | %Y = add i32 %X, %argc |
| 23 | ret i32 %Y |
Chris Lattner | 03ef2fc | 2003-05-29 15:16:10 +0000 | [diff] [blame] | 24 | } |
Tanya Lattner | 5640bd1 | 2008-03-01 09:15:35 +0000 | [diff] [blame] | 25 | |