; Test that functions with dynamic allocas get inlined in a case where
; naively inlining it would result in a miscompilation.
; Functions with dynamic allocas can only be inlined into functions that
; already have dynamic allocas.

; RUN: opt < %s -inline -S | \
; RUN:   grep llvm.stacksave
; RUN: opt < %s -inline -S | not grep callee


declare void @ext(i32*)

define internal void @callee(i32 %N) {
        %P = alloca i32, i32 %N         ; <i32*> [#uses=1]
        call void @ext( i32* %P )
        ret void
}

define void @foo(i32 %N) {
; <label>:0
        %P = alloca i32, i32 %N         ; <i32*> [#uses=1]
        call void @ext( i32* %P )
        br label %Loop

Loop:           ; preds = %Loop, %0
        %count = phi i32 [ 0, %0 ], [ %next, %Loop ]            ; <i32> [#uses=2]
        %next = add i32 %count, 1               ; <i32> [#uses=1]
        call void @callee( i32 %N )
        %cond = icmp eq i32 %count, 100000              ; <i1> [#uses=1]
        br i1 %cond, label %out, label %Loop

out:            ; preds = %Loop
        ret void
}

