; This test ensures that alloca instructions in the entry block for an inlined
; function are moved to the top of the function they are inlined into.
;
; RUN: opt -S -inline < %s | FileCheck %s

define i32 @func(i32 %i) {
        %X = alloca i32         ; <i32*> [#uses=1]
        store i32 %i, i32* %X
        ret i32 %i
}

declare void @bar()

define i32 @main(i32 %argc) {
Entry:
; CHECK: Entry
; CHECK-NEXT: alloca
        call void @bar( )
        %X = call i32 @func( i32 7 )            ; <i32> [#uses=1]
        %Y = add i32 %X, %argc          ; <i32> [#uses=1]
        ret i32 %Y
}

