; 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 | FileCheck %s
;
; FIXME: This test is xfailed because the inline cost rewrite disabled *all*
; inlining of functions which contain a dynamic alloca. It should be re-enabled
; once that functionality is restored.
; XFAIL: *

declare void @ext(i32*)

define internal void @callee(i32 %N) {
  %P = alloca i32, i32 %N
  call void @ext(i32* %P)
  ret void
}

define void @foo(i32 %N) {
; CHECK: @foo
; CHECK: alloca i32, i32 %{{.*}}
; CHECK: call i8* @llvm.stacksave()
; CHECK: alloca i32, i32 %{{.*}}
; CHECK: call void @ext
; CHECK: call void @llvm.stackrestore
; CHECK: ret

entry:
  %P = alloca i32, i32 %N
  call void @ext(i32* %P)
  br label %loop

loop:
  %count = phi i32 [ 0, %entry ], [ %next, %loop ]
  %next = add i32 %count, 1
  call void @callee(i32 %N)
  %cond = icmp eq i32 %count, 100000
  br i1 %cond, label %out, label %loop

out:
  ret void
}

